【问题标题】:Parsing PDF get same text twice in different page解析PDF在不同页面中两次获得相同的文本
【发布时间】:2013-06-03 12:00:55
【问题描述】:

我有一个包含 2 页的 PDF 文件。当我用我的解析器解析它时,在 Ojective-C 中,我有以下情况。

第一页一切正常,我有我应该有的文本(我可以在预览、Adobe 阅读器等 pdf 阅读器中直观地看到这些文本)。对于第二页,我有我在第二页中看到的文本加上第一页中的部分文本,这不在第二页中。

我尝试使用其他解析器:pdftotext (xpdf) 他们设法得到了正确的结果。 Pdfminer(在 python 中)https://pypi.python.org/pypi/pdfminer/,我得到了和我一样的结果。第一页的部分文本被提取两次。

我的问题是:这怎么会发生?你见过这种情况吗?如果文本确实出现在第二页中,为什么 pdf 阅读器不显示呢?你对此有什么想法吗?

【问题讨论】:

  • 可能文本在页面上,但由于以下原因不可见:称为“裁剪框”的东西,称为“OCG”的东西,...可能文本是白底白字。没有看到实际的PDF,只能猜测,但可能的原因有很多。
  • 我尝试在 Illustrator 和 Acrobat Pro 中打开文件,但什么也没看到。我还尝试在第二页中选择文本,仅是我们可以看到的文本。感谢您分享您的想法。欢迎提供更多想法。
  • 我查看了 PDF 参考资料,我的 pdf 中没有 OCG,因为它是 1.4 pdf,可选内容仅从 v.1.5 开始。我验证了我的文档目录字典,但没有 OCProperties 条目。
  • 可以分享PDF吗?
  • 两个文档页面的内容非常相似。唯一的例外是 a) 第一页有“30 BEAUTÉ ANIMALE”,而第二页有“31 PRÉJUGÉS”和 b) 剩余的文本被移到媒体框之外。如果您只想提取可见的内容,则需要按区域过滤。

标签: parsing pdf text-extraction cgpdfscanner


【解决方案1】:

我已经通过 Acrobat 运行了您的文件(使用“检查文档”),它告诉我其中有一些隐藏的文本。请看以下屏幕截图:

屏幕截图中的红色文本标记了隐藏的内容。正如 mkl 所指出的,它存在于 MediaBox 之外,这使得它在 PDF 查看器中查看文档时不可见。这并不意味着文本在那里。如果您查看内容流内部(这是解析器所做的),您仍然会找到它。

您的解析器应丢弃 MediaBox 之外的所有内容。通常有一个选项可以做到这一点。我知道 iText 中有一个;我不知道其他解析器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-18
    • 2012-06-12
    • 1970-01-01
    • 2016-07-13
    • 2022-01-20
    • 2021-12-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多