PDF からテキストを抽出する方法
PDF からテキストをコピーすることは驚くほどイライラすることがあります。書式が崩れ、列がマージされ、改行が間違った場所に現れます。専用のテキスト抽出ツールは PDF 構造から生のテキストコンテンツを引き出し、実際に作業できるクリーンなプレーンテキストを提供します。ブラウザベースの抽出ツールは、文書をサーバーにアップロードせず、すべての作業をローカルで処理します。
テキストベース PDF vs スキャン PDF
テキストを抽出する前に、どんな種類の PDF を持っているか理解することが役立ちます:
テキストベース PDF: Word 文書、ウェブページ、または他のデジタルソースから作成されたもの。テキストは PDF 内のデータとして保存されています。これらのファイルを表示するときにテキストを選択してハイライトできます。テキスト抽出はこれらで完璧に機能します。
スキャン PDF: 物理的な文書をスキャンして作成されたもの。PDF にはページの画像が含まれており、実際のテキストデータではありません。これらのファイルでテキストを選択できません。標準的なテキスト抽出は空の結果を返します。代わりに OCR ソフトウェアが必要です。
ハイブリッド PDF: 一部の PDF にはデジタルテキストとスキャンされた画像の混合が含まれています。抽出ツールはテキスト部分を捕捉しますが、画像ベースのコンテンツは捕捉しません。
検索可能なスキャン PDF: ページ画像の背後にテキストレイヤーが埋め込まれた、誰かが OCR を通したスキャン PDF。OCR テキストが PDF に保存されているため、テキスト抽出はこれらで機能します。精度は OCR の品質に依存します。スキャン-OCR テキストには、誤認識された文字によるタイポがしばしばあります。
PDF からテキストを抽出する方法
- PDF をアップロード: ファイルを選択するか、ドラッグ&ドロップします。ツールは任意の標準 PDF を受け入れます。
- テキストを抽出: 抽出ボタンをクリックします。ツールはすべてのページを処理し、生のテキストを表示します。
- コピーまたはダウンロード: テキストをクリップボードにコピーするか、TXT ファイルとしてダウンロードします。
PDF テキスト抽出の簡単な歴史
PDF は 1993 年に Adobe によって意図的に複雑な内部構造で作成されました。PDF はテキストをページ上の x/y 座標を持つ位置決めされたグリフ(文字 + 座標)として保存し、流れる散文としてではありません。読みやすいテキストを抽出するには、ツールはこれらのグリフ位置を読み、単語境界、改行、読み取り順序を推測することで段落を再構築する必要があります。
最初に広く使われた PDF テキスト抽出ツールは pdftotext(1996 年)で、Derek Noonburg によるオープンソース xpdf プロジェクトの一部でした。シンプルなアルゴリズムを使いました: グリフを Y、次に X でソート、行でグループ化、行をブロックにグループ化。ほとんどの現代の抽出ツールは、依然としてこのアプローチの洗練されたバージョンを使用しています。
PDF.js(Mozilla、2011 年)はプラグインなしでブラウザに PDF レンダリングをもたらしました。また、今日のほとんどのブラウザベースの抽出ツール(これを含む)を支えるテキスト抽出 API も公開しました。PDF.js は、ブラウザが必要とするすべての PDF 機能を読み取れます: テキスト、画像、フォーム、注釈、署名、埋め込みフォント。
長年の主な改善点:
- より優れた列検出: 2 列レイアウトを広いマージンの単一列から区別する
- Unicode 正規化: 合字(fi、fl)、アクセント付き文字、RTL スクリプトの処理
- 表認識: 表形式のレイアウトを検出し、列構造を保持する
- フォント対応のスペーシング: フォントメトリクスを使って単語の始まりと終わりを推測する
現代の抽出は散文文書(本、記事、契約書)には良好です。マルチ列の科学論文、複雑な表、書式が多いパンフレットでは依然として苦戦します。
テキスト抽出が役立つとき
- データ移行: PDF からスプレッドシート、データベース、または他のシステムへのコンテンツの取り出し
- コンテンツ編集: 新しい文書を作成する前にワードプロセッサで編集するためにテキストを抽出する
- 検索と分析: 検索、カウント、処理のために PDF コンテンツをプレーンテキストに変換する
- アクセシビリティ: スクリーンリーダーでより良く動作するフォーマットで PDF コンテンツを利用可能にする
- アーカイブ: 重要な文書のテキストバックアップを作成する
- LLM 入力: 要約や分析のために PDF テキストを ChatGPT、Claude、またはローカル LLM にフィードする
- 翻訳: 翻訳者が CAT ツールで作業できるようにテキストを取り出す
- 引用の抽出: 引用のために法的契約書や研究論文から特定の節を取り出す
- 引用管理: Zotero や Mendeley のために PDF 論文から参考文献リストを抽出する
- コンプライアンスとディスカバリ: 法的 eDiscovery ワークフローでキーワード検索のためにテキストを抽出する
- 字幕生成: PDF 教育資料からトランスクリプトを抽出する
- インデックス作成: 抽出したテキストをローカル検索システム(Elasticsearch、Meilisearch)にフィードする
出力フォーマットオプション
異なる用途には異なる出力フォーマットが必要です:
| フォーマット | 最適 | 制限 |
|---|---|---|
| プレーンテキスト(.txt) | 普遍的、書式なし | 見出し、リスト、表を失う |
| Markdown(.md) | 構造化文書、見出し保持 | 表は手動修正が必要かも |
| HTML | ウェブ表示、太字/斜体を保持 | .txt より複雑 |
| Word(.docx) | Microsoft Word での編集 | 一部の PDF 固有書式を失う |
| JSON | ページごとまたはブロックごとの抽出 | 開発者向け、直接読み取りではない |
| XML/EPUB | 電子書籍変換 | 複雑なセットアップ |
ほとんどの日常的な抽出(段落のコピー、LLM へのテキスト供給)には、プレーンテキストが正しい選択です。再編集する予定の長い文書には、通常は PDF から Word の方が良いです。
よくある落とし穴
- マルチ列レイアウトでの読み取り順序の間違い: 2 列の学術論文は、左列、次に右列(正しい)で抽出されるか、行ごとに交互に入れ替わる(文字化け)可能性があります。特に学術 PDF では読み取り順序を確認してください。
- 本文テキスト内のヘッダーとフッター: ページ番号、ランニングヘッダー、フッターは各ページのテキストとして抽出され、流れを壊します。繰り返されるテキストを検索して取り除きます。
- 合字と特殊文字: 単一のグリフとして保存された「fi」は、単一の文字として、または PDF によって「fi」として抽出されます。古い PDF はこれが悪いです。
- 行末でのハイフネーション: ハイフン付きで行末に分割された単語(
compre-/hensive)はハイフンと改行付きで抽出されます。手動で修正するか、スクリプトを使う必要があるかもしれません。 - 表の断片化: PDF は表を構造的に保存しないため、抽出は通常、行/列構造のないセルテキストのフラットなリストを生成します。
- OCR テキスト品質: スキャンされた PDF の背後にあるテキストレイヤーは、OCR エラー(
rnがmと読まれる、clがdと読まれる)が含まれることがよくあります。出力に頼る前にスポットチェックしてください。 - エンコーディング文字化け: 非標準フォントエンコーディングを使用する PDF は、判読不能なものとして抽出される可能性があります。同じ問題があるかどうかを確認するために、Adobe Reader で PDF を開いてコピー&貼り付けしてみてください。
- コンテキスト外で抽出されたフォームフィールド: 入力可能な PDF フォームには、抽出時にスクランブルされる可能性のあるフィールドラベルと値があります。
- 注釈とコメント: PDF 注釈のテキストはページコンテンツとは別です。一部の抽出ツールはそれらを含め、一部は含めません。
- 右から左へのテキスト: アラビア語、ヘブライ語、ペルシア語のテキストは左から右に抽出されるか、論理順序ではなく視覚順序で文字が抽出される可能性があります。
- 縦書きテキスト: 日本語/中国語の縦書き(tategaki)PDF は、文字が間違った順序で抽出される可能性があります。
- 透かし: 透かし(CONFIDENTIAL、DRAFT)は抽出テキストの一部になり、各ページで繰り返されます。
代替アプローチ
ブラウザベースの抽出が PDF で機能しない場合:
- スキャン PDF 用の OCR: Tesseract(オープンソース)、Adobe Acrobat Pro、Google Drive(アップロードして OCR を実行)、または ABBYY FineReader のような商用サービス。
- コマンドラインツール:
pdftotext(xpdf/poppler)、pdfminer.six(Python)、pdfplumber(Python、表対応)、pdf-parse(Node.js)。 - Adobe Acrobat Pro: 「書き出し > テキスト」または「Word」、一般的に正確だが、一部のワークフローではクラウドサービスを使用します。
- PDF から Word への変換後にテキストとして保存: Word の書式とテキストの両方を取得できます。
- テキストファイルに印刷: 一部のビューアはテキストのみの出力に「印刷」でき、扱いにくいレイアウトに便利です。
- LLM ベースの抽出: ChatGPT/Claude はアップロードされた PDF からテキストを抽出し、表を再フォーマットすることさえできます。一度限りには便利ですが、より遅く、アップロードサイズに制限されます。
マシンを離れるべきでない機密 PDF には、ブラウザベースの抽出(このツール)またはローカルコマンドラインツール(pdftotext)が唯一の安全な選択肢です。
ヒント
- PDF に選択可能なテキストがあるか確認: 任意のビューアで PDF を開き、カーソルでテキストをハイライトしてみてください。選択できれば、テキスト抽出は機能します。できなければ、それはスキャンされた文書です。
- 段落構造は保持される: 抽出ツールは段落の区切りを維持するので、出力は文書のレイアウトに従います。ただし、複数列の複雑なレイアウトは手動でのクリーンアップが必要かもしれません。
- 大きなファイルでも問題なし: 処理はブラウザで行われるので、アップロードサイズ制限はありません。パフォーマンスはデバイスに依存しますが、数百ページの文書も問題なく処理されます。
- 書式には PDF から Word を使用: プレーンテキストではなく書式(太字、見出し、表)を保持する必要がある場合は、代わりに PDF から Word への変換ツールを使用してください。
- 出力をクリーンアップするために検索と置換を使用: 一般的なクリーンアップタスク(ページ番号の削除、ハイフン付き改行の結合、繰り返されるヘッダーの削除)は、正規表現の検索と置換で簡単です。
- ページ番号とヘッダーを事前に除去: ソース PDF に明らかなページ番号がある場合は、処理前に削除すると下流の分析が速くなります。
- 要約用に LLM と組み合わせる: テキストを抽出してから、「主要なポイントを 5 つの箇条書きで要約してください」のようなプロンプトで ChatGPT や Claude に貼り付けます。研究論文やレポートでうまく機能します。
- 表には専用ツールを使用: PDF から表だけが必要な場合は、一般的なテキスト抽出ではなく、Tabula や PDF から Excel のようなツールを使用してください。
プライバシーと機密 PDF
PDF テキスト抽出ツールは完全にブラウザ内で動作します。アップロードする PDF、中間処理、抽出されたテキストのすべてがデバイス上に残ります。サーバーへのアップロードも、ログ記録も、誰かとの共有もありません。
これが重要なのは、テキストを抽出する PDF が非常に機密性の高いものであることが多いからです: 引用する必要のある条項が埋め込まれた契約書、診療記録と検査レポート、口座番号付きの財務諸表、弁護士-依頼人特権下の法的訴状、雇用オファーレターと給与詳細、内部企業文書、公開前のエンバーゴ下の研究論文、スキャンされた ID とパスポート、移民書類。クラウド PDF 抽出ツールは設計上、ファイルをサーバーにアップロードし、しばしば「サービス改善」のために保持し、機密契約書や診療記録が検索エンジンによってインデックスされた実際のデータ漏洩に関与してきました。ブラウザベースの抽出ツールはエクスポージャーがゼロです: PDF は決してマシンを離れません。
ブラウザベースの抽出は、ページが読み込まれた後はオフラインでも機能します。飛行機内、インターネットアクセスのないセキュアな施設、またはサードパーティに機密文書をアップロードできない、すべきでない場所での文書処理に便利です。
よくある質問
なぜ PDF の抽出結果が空になるのですか?
その PDF はおそらくスキャン文書です, テキストデータではなくテキストの画像が含まれています。抽出は埋め込みの選択可能なテキストを含む PDF でのみ機能します。スキャン文書には OCR(光学文字認識)ソフトウェアが必要です。
このツールは OCR を使いますか?
いいえ。PDF の構造に埋め込まれたテキストを直接抽出します。テキスト PDF に対しては OCR より高速で正確ですが、スキャン画像上のテキストは読み取れません。
PDF はサーバーに送信されますか?
いいえ。すべての処理はブラウザ内で行われます。PDF がデバイスから出ることはなく、機密文書でも安全に扱えます。
特定のページからテキストを抽出できますか?
ツールはすべてのページを処理して全文を返します。その結果から必要な部分をコピーまたは編集できます。