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

标签 python pdf

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

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

  • 由于每个 PDF 都包含文本,因此很容易识别我的域中的纯图像 PDF。如果我不能提取任何文本,它只是图像。但是我怎么知道它是“只是”一个可搜索的 PDF 还是一个数字创建的 PDF?
    顺便说一句,这并不像我看到生产者字段显示“Microsoft Word”的扫描文档那样只看生产者那么简单。
    注意:作为一个人,这很容易。我只是放大文本。如果我看到像素,它“只是”可搜索的。
    以下是用于测试解决方案的 3 个示例 PDF 文件:
  • Digitally Created PDF
  • Scanned PDF : 嗯.. 不是真的;我使用脚本创建图像,然后将它们组合成 PDF。但这仅意味着质量非常好。它应该与扫描非常相似。
  • Searchable PDF

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

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

    关于python - 如何区分数字创建的 PDF 和可搜索的 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63494812/

    相关文章:

    python - matplotlib 中 3D 线框可视化的问题

    python成像库保存函数

    android - 在 cordova 应用程序 (android) 中打开 pdf

    pdf - 如何在 PDF 表单上保存填写的字段?

    python - R 脚本错误 {: missing value where TRUE/FALSE needed on Dataframe

    Python - 减少功能和|运算符(operator)

    python - Heroku 上 Django 中的编码错误

    Android - 从 WebView 绘制到 PDF Canvas

    html - 您可以将本地主机托管的网站下载为PDF吗?

    html - 使用 HTML/CSS 创建可打印文档