unredact — PDFの可視的伏せ字からテキストを復元するツール
概要
PDF内で「黒く塗りつぶされて見えないが、実際にはテキストとして残っている」文字列を抽出して、ページ構成(改ページや列・行の位置など)を可能な限り再現しながら人が読める形で出力するための軽量ツールです。暗号化やパスワード保護の突破は行わず、PDFのコンテンツストリームに選択可能なテキストが存在する場合に限り復元を試みます。用途は主に文書分析、アーカイブレビュー、研究や伏せ字処理の検証で、出力は可読性と元のページ区切りの保持を重視しています。付属のexamplesディレクトリで利用例が提供され、シンプルなPythonスクリプト構成で手早く試せます。
リポジトリの統計情報
- スター数: 54
- フォーク数: 9
- ウォッチャー数: 54
- コミット数: 5
- ファイル数: 6
- メインの言語: Python
主な特徴
- 選択可能な(だが視覚的に隠された)テキストを抽出して再表示する機能
- ページ区切りや原文のレイアウトをできる限り保持して出力
- 暗号化やアクセス制御を回避しない安全な設計方針
- 軽量で実験的なユーティリティ、examplesを同梱してすぐ試せる
技術的なポイント
このプロジェクトは「PDFのコンテンツストリームに残ったテキスト情報」を前提に動作します。多くのPDFでは、可視的に黒く塗りつぶされたり矩形で覆われたりしていても、背後にテキストオブジェクトが残っている場合があります。本ツールはそうしたテキストオブジェクトを抽出し、人間が読める形で再構成することを目的としています。
処理の大筋は次の通りです。まずPDFページからテキストの抽出を行い、各テキスト片の座標(位置情報)とフォント情報を取得します。座標に基づいて行や列のクラスタリングを行い、元のページの視覚的な配置を再現するために整形(空白挿入、改行、ページ区切り)を施します。さらに、PDF上で視覚的に重なっている矩形(赤actionや黒塗りの矩形)が存在する場合は、その上に隠れているテキストを抽出可能かどうかを判定し、抽出可能であれば可読化して出力します。
注意点として、本ツールはピクセルベースで完全に上書きされた(=元テキストがPDFから削除された、あるいはラスタライズされてテキスト情報が無い)ケースを復元することはできません。また、パスワード保護や暗号化がかけられたPDFの突破や、セキュリティ機構の回避を目的としていない点も明記しています。実装面ではPythonで記述され、一般的なPDF解析ライブラリ群のAPI(テキストと位置情報の抽出)を利用する設計になっているため、ライブラリの挙動やPDFの作り方によって結果の精度が左右されます。
出力は人が読みやすいプレーンテキストや整形された表示を想定しており、ページごとの区切り、行の順序、列の再現に配慮しています。研究や監査用途では、復元結果を元に伏せ字処理の適切さを検証したり、アーカイブの検索性を改善したりするのに有用です。拡張としては、より精度の高いレイアウト解析、OCRとの組み合わせ、出力フォーマット(HTMLやJSONによる座標付き出力)への対応などが考えられます。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitattributes: file
- .gitignore: file
- LICENSE: file
- README.md: file
- examples: dir
…他 1 ファイル
examplesディレクトリには実際のPDFを使った動作例や、コマンドの実行例が含まれている想定です。コード本体はシンプルなスクリプト群で構成されており、依存関係はREADMEに記載のとおり最小限で済むように設計されています。
まとめ
シンプルで実用的なPDF伏せ字テキスト復元ツール。解析や監査に便利。
リポジトリ情報:
- 名前: unredact
- 説明: A simple tool for reading in poorly redacted documents and reproducing their origional form
- スター数: 54
- 言語: Python
- URL: https://github.com/leedrake5/unredact
- オーナー: leedrake5
- アバター: https://avatars.githubusercontent.com/u/1229542?v=4
READMEの抜粋:
PDF Redaction Text Recovery & Display Tool
This repository contains a Python utility for extracting selectable (but visually redacted) text from PDF files and presenting it in a clear, human-readable format while preserving pagination and layout as closely as possible.
The tool is intended for document analysis, archival review, research, and verification of redaction practices It does not bypass encryption or security controls; it only extracts text that remains present in the PDF content s…