デジタルで作成されたPDFと検索可能なPDFを区別するにはどうすればよいですか?

Aug 19 2020

現在、一連のPDFファイルを分析しています。これらの3つのカテゴリに分類されるPDFファイルの数を知りたいです。

  • デジタルで作成されたPDF:テキストはそこにあり(コピー可能)、Wordなどから直接作成されたため正しいことが保証されています
  • 画像のみのPDF:スキャンされたドキュメント
  • 検索可能なPDF:スキャンされたドキュメントですが、OCRエンジンが使用されました。OCRエンジンは、コンテンツを検索/コピーできるように、画像の「下」にテキストを配置します。OCRはかなり良いので、これはほとんどの場合正しいです。ただし、正しいとは限りません。

すべてのPDFにテキストが含まれているため、ドメイン内の画像のみのPDFを簡単に識別できます。テキストを抽出できない場合は画像のみです。しかし、それが「単なる」検索可能なPDFなのか、それともデジタルで作成されたPDFなのかをどうやって知ることができますか?

ちなみに、プロデューサーフィールドに「MicrosoftWord」と書かれているスキャンされたドキュメントを見たときほど、プロデューサーを見るほど簡単ではありません。

注:人間として、それは簡単です。テキストを拡大するだけです。ピクセルが表示された場合、それは「ただ」検索可能です。

ソリューションをテストするための3つのPDFファイルの例を次に示します。

  • デジタルで作成されたPDF
  • スキャンされたPDF:まあ..実際にはそうではありません。スクリプトを使用して画像を作成し、PDFとしてまとめました。しかし、それは品質が非常に良いことを意味するだけです。スキャンと非常によく似ているはずです。
  • 検索可能なPDF

私が試した/考えたこと

  • 作成者/プロデューサーの使用:スキャンしたドキュメントに「MicrosoftWord」が表示されます。また、これは面倒です。
  • 埋め込みフォント埋め込みフォントを抽出できます。スキャンされたドキュメントにはフォントが埋め込まれず、デフォルトを使用するという考え方でした。例でわかるように、アイデアは間違っていました。

回答

2 JorjMcKie Aug 20 2020 at 14:47

PyMuPDFを使用すると、@ ypnosの提案に必要なすべてのテキストを簡単に削除できます。

別の方法として、PyMuPDFを使用して、テキストがPDFで非表示になっているかどうかを確認することもできます。PDFの関連する「ミニ言語」では、これはコマンド3 Tr(「テキストレンダリングモード」、たとえばの402ページを参照)によってトリガーされます。https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf)。したがって、すべてのテキストがこのコマンドの影響下にある場合、どのテキストもレンダリングされません。「これはOCRされたページです」という結論が得られます。