デジタルで作成された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されたページです」という結論が得られます。