PDF stream search
PDFストリーム検索とは、PDF文書の構造内にある圧縮されたデータストリームからテキストコンテンツを特定し抽出するプロセスを指します。
PDFストリーム検索とは、PDF文書の構造内にある圧縮されたデータストリームからテキストコンテンツを特定し抽出するプロセスを指します。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ストリーム検索は、PDF文書内の特定のテキストやパターンを見つけるために、コンテンツストリーム(ページ記述演算子とオペランドを含むバイナリデータのシーケンス)をトラバースし分析する技術です。単純なテキストファイル検索とは異なり、PDFストリーム検索では、圧縮されたストリーム(通常はFlateDecodeなどのフィルタを使用)をデコードし、PDFコンテンツ演算子を解釈し、位置指定されたテキスト要素から論理的な読み順を再構築する必要があります。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 ) のコンテンツストリームは、テキストを読み順で保存するのではなく、明示的な位置指定を伴う描画コマンドとして保存するため、従来の文書フォーマットよりも検索が複雑になります。
これは、文書プロパティと情報辞書を照会するメタデータ検索や、論理構造ツリーを使用するTagged PDFナビゲーションとは異なります。ストリーム検索は、生の描画命令が存在するコンテンツレイヤーで動作します。
PDF機能を実装する開発者にとって、ストリーム検索機能はいくつかの重要なユースケースで不可欠です。
検索とインデックス作成: アプリケーションは文書内のキーワードやフレーズを見つける必要があり、複数のページにわたる何千ものコンテンツストリームを効率的に解析することが求められます。
コンテンツ抽出: データ処理、移行、または分析のためにテキストを抽出する際、開発者はストリームを正確にデコードし、意味を保持するためにテキストフラグメント間の関係を維持する必要があります。
アクセシビリティの実装: ( 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に期待されるコンテンツが含まれていることを検証し、テキストが検索不可能な画像としてではなく適切に抽出可能であることを確認するためにストリーム検索を使用します。
PDFストリーム検索にはいくつかの技術的ステップが含まれます。
ストリームの識別: 検索プロセスは、PDFのページツリーをトラバースしてページオブジェクトを特定し、各ページの/Contentsエントリによって参照されるコンテンツストリームを識別することから始まります。ページは単一のストリームまたはストリームの配列を参照する場合があります。
解凍: コンテンツストリームは通常、ストリーム辞書で指定されたフィルタを使用して圧縮されています。検索実装では、生のコンテンツ演算子にアクセスするために、適切な解凍アルゴリズム(一般的にはDeflate/FlateDecode)を適用する必要があります。
演算子の解析: 解凍されたストリームには、PDF演算子とそのオペランドのシーケンスが含まれています。Tj(テキスト文字列を表示)、TJ(個別のグリフ位置指定でテキストを表示)、'(次の行に移動してテキストを表示)などのテキスト関連演算子を識別し、そのオペランドを抽出する必要があります。
エンコーディングの解決: テキストオペランドは、文書のフォントリソースで指定されたさまざまな文字エンコーディングを使用する場合があります。検索実装では、適切なエンコーディングテーブルまたはCMapリソースを使用してこれらのバイトシーケンスをデコードし、Unicode文字列を取得する必要があります。
座標の追跡: PDFは絶対座標と変換行列を使用してテキストを配置するため、包括的な検索実装では、現在のテキスト行列とグラフィックス状態を追跡してテキストの位置を理解し、論理的な読み順を維持するのに役立ちます。
パターンマッチング: テキストが抽出およびデコードされると、標準的な文字列検索アルゴリズムを適用できますが、実装では複数の演算子に分割されたテキストや、合字や異常なグリフマッピングの可能性を考慮する必要があります。
- Content stream(コンテンツストリーム) – PDF文書内のテキスト、グラフィックス、画像を含むページマーキング操作の基本的なコンテナ
- Text extraction(テキスト抽出) – インデックス作成、分析、または変換のためにPDFコンテンツストリームから人間が読めるテキストを取得するプロセス
- PDF operators(PDF演算子) – ページの外観とレイアウトを記述するためにコンテンツストリーム内で使用されるコマンドセット
- Text showing operators(テキスト表示演算子) – 指定された位置でテキスト文字列をレンダリングする特定のPDF演算子(Tj、TJ、’、")
- Stream filter(ストリームフィルタ) – PDFストリームに適用される圧縮またはエンコーディング方法、コンテンツ圧縮には最も一般的にFlateDecodeが使用される
- (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
- (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
