如何区分数字创建的 PDF 和可搜索的 PDF?

Mar*_*oma 8 python pdf

我目前正在分析一组 PDF 文件。我想知道有多少 PDF 文件属于这 3 个类别:

  • 数字创建的 PDF:文本在那里(可复制)并且保证是正确的,因为它是直接从 Word 创建的
  • 纯图像 PDF:扫描文档
  • 可搜索 PDF:扫描文档,但使用了 OCR 引擎。OCR 引擎将文本放在图像“下方”,以便您可以搜索/复制内容。由于 OCR 非常好,大多数情况下这是正确的。但不能保证它是正确的。

由于每个 PDF 都包含文本,因此很容易识别我的域中的纯图像 PDF。如果我不能提取任何文本,它只是图像。但是我怎么知道它是“只是”一个可搜索的 PDF 还是一个数字创建的 PDF?

顺便说一句,这并不像我看到生产者字段显示“Microsoft Word”的扫描文档那样只看生产者那么简单。

注意:作为一个人,这很容易。我只是放大文本。如果我看到像素,它“只是”可搜索的。

以下是用于测试解决方案的 3 个示例 PDF 文件:

我尝试/想到的

  • 使用创建者/制作者:我在扫描的文档中看到“Microsoft Word”。这也会很乏味。
  • 嵌入字体:您可以提取嵌入字体。这个想法是扫描的文档不会嵌入字体而只使用默认字体。这个想法是错误的,从这个例子可以看出。

Jor*_*Kie 4

使用 PyMuPDF,您可以轻松删除 @ypnos 建议所需的所有文本。

作为替代方案,您还可以使用 PyMuPDF 检查文本是否隐藏在 PDF 中。在PDF的相关“迷你语言”中,这是由命令触发的3 Tr(“文本渲染模式”,例如参见https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/的第402页) pdf_reference_1-7.pdf)。因此,如果所有文本都受到此命令的影响,则不会呈现任何文本 - 从而得出“这是 OCR 页面”的结论。