Text extraction
テキスト抽出とは、で定義されているコンテンツストリーム、フォント定義、文字エンコーディング情報を解釈することで、PDFファイルから読み取り可能なテキストコンテンツを読み取り、再構築するプロセスです。
テキスト抽出とは、 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で定義されているコンテンツストリーム、フォント定義、文字エンコーディング情報を解釈することで、PDFファイルから読み取り可能なテキストコンテンツを読み取り、再構築するプロセスです。単に表示されているテキストをコピーするのとは異なり、抽出にはページ上にグリフを配置する複雑な命令をデコードし、それらをUnicode文字にマッピングする作業が必要です。このプロセスは、PDFコンテンツをアクセシブルで検索可能、かつ様々なアプリケーション間で再利用可能にするための基礎となります。
テキスト抽出は、PDFコンテンツストリームを解析してテキスト表示演算子(Tj、TJ、'、"など)とそれに関連する文字コードを識別し、次にドキュメントのフォントディクショナリを使用してそれらのコードを実際のテキスト文字にマッピングする作業を含みます。PDF形式では、テキストはプレーンテキスト文字列としてではなく、一連の低レベル描画コマンドとして保存されるため、抽出ツールは論理的な読み取り順序を再構築し、様々なエンコーディングスキーム(事前定義エンコーディング、CMAPリソース、ToUnicodeマッピングなど)を処理し、Type 1、TrueType、OpenTypeフォントを含む様々なフォントタイプを考慮する必要があります。
テキスト抽出は、テキストの視覚的表現を分析する光学文字認識(OCR)や、タグ付きコンテンツ構造への単純なアクセスとは大きく異なります。 ( Citation: N.A., 2014 (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html ) では、アクセシブルなPDFには適切な構造と代替テキスト説明を含めるべきであると強調されていますが、テキスト抽出は、ドキュメントがアクセシビリティのためにタグ付けされているかどうかに関係なく、コンテンツストリーム自体から基礎となる文字データを回復することに特化しています。
PDF処理アプリケーションを構築する開発者にとって、信頼性の高いテキスト抽出は、検索機能、コンテンツインデックス作成、データマイニング、ドキュメント変換機能を実装するために不可欠です。テキスト抽出が不十分な場合、文字化けした出力、不正な文字シーケンス、単語間のスペースの欠落、または完全に読み取り不可能なコンテンツといった問題が発生し、ユーザーエクスペリエンスとデータ品質に直接影響を与えます。
テキスト抽出は、フォーム処理、自動ドキュメント分析、アクセシビリティコンプライアンスツールを扱う際に特に重要になります。と ( Citation: PDF Association, 2023 PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/ ) では、適切にタグ付けされたPDFが構造化されたコンテンツを提供し、抽出を簡素化する方法が説明されていますが、実際のPDFの多くはそのようなタグ付けがないため、開発者は様々なエッジケースや非標準のエンコーディングプラクティスに対応できる堅牢な抽出アルゴリズムを実装する必要があります。
テキスト抽出プロセスは通常、以下のステップで進行します。
コンテンツストリーム解析:抽出ツールはPDFのコンテンツストリームを読み取り、テキスト表示演算子とそのオペランド(文字コードと配置命令)を識別します。
フォント解決:各テキスト操作について、抽出ツールはPDFのリソースディクショナリから関連するフォントディクショナリを取得し、フォントタイプ、エンコーディング、文字マッピング情報を決定します。
文字マッピング:文字コードは、利用可能な場合はToUnicode CMapsを使用してUnicode値に変換されます。それ以外の場合は、フォントの組み込みエンコーディングテーブル、事前定義エンコーディング(WinAnsiEncodingやMacRomanEncodingなど)を参照するか、フォントの実際のグリフ定義を調べることで変換されます。
テキスト配置:抽出ツールは、テキスト配置演算子(
Tm、Td、T*など)を文字間隔、単語間隔、水平スケーリングなどのテキスト状態パラメータとともに解釈し、文字がページ上のどこに表示されるかを決定し、適切な単語境界と読み取り順序を再構築します。テキスト再構築:個々の文字は、空間的関係を分析することで単語、行、段落に組み立てられます。標準的な西洋のテキストでは通常、左から右、上から下へと処理されますが、適切な抽出ツールは右から左へのスクリプトや複数カラムレイアウトにも対応する必要があります。
抽出ツールは、CJKテキストに使用される複合フォント(Type 0フォント)、利用可能な文字マッピングを制限するフォントサブセット化、テキストが実際に表示されるかクリッピングパスとしてのみ機能するかに影響するテキストレンダリングモードなどの複雑な問題に対処する必要があります。
- Content stream(コンテンツストリーム) – テキストを含むページコンテンツを記述するPDF演算子とオペランドのシーケンス
- Font dictionary(フォントディクショナリ) – フォントプロパティ、エンコーディング、文字マッピング情報を定義するPDFオブジェクト
- ToUnicode CMap – テキスト抽出のために文字コードをUnicode値に変換する特別なマッピングテーブル
- Text state(テキスト状態) – フォント、サイズ、間隔、配置など、テキストレンダリングを制御するパラメータの集合
- Tagged PDF – 明示的なコンテンツ構成を含む構造化PDF形式で、テキスト抽出をより信頼性が高くアクセシブルにする
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
- PDF Association (2023)
- PDF Association(2023). Retrieved from https://pdfa.org/resource/tagged-pdf-best-practice-guide-syntax/
- (N.A.) (2014)
- (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html
