1

我最近设置了一个 Linux 服务器,以便能够使用pdftotextXpdf 中的命令将基于文本的 PDF 转换为文本,以及使用gs(Ghostscript) 和tesseract命令的组合将基于图像的 PDF 转换为文本.

当我已经知道 PDF 是基于文本还是基于图像时,这两种解决方案都能很好地工作。但是,为了自动化将许多 PDF 转换为文本的过程,我需要能够判断 PDF 是基于文本的还是基于图像的,以便我知道要在 PDF 上运行哪一组过程。

PHP中有什么方法可以分析PDF并判断它是基于文本还是基于图像,以便我知道是使用Xpdf还是Ghostscript/Tesseract?

4

2 回答 2

1

我认为 Kurt Pfeifle的回答非常棒:使用pdffonts- 它也是 Xpdf / Poppler 的一部分 - 列出 PDF 使用的字体。

如果它使用任何字体,则它包含文本。如果不是,它只包含图像。

于 2020-04-08T19:28:08.550 回答
0

比较输出并确定 OCR 运行的结果文本是否与 Xpdf 运行的输出相同是一项不平凡的任务。在不可 OCR 的 PDF 文本(例如非常小的字母)的情况下,可以通过 xpdf 提取文本,您甚至会以大量不必要的乱码结束。

我建议仅从 PDF 和 OCR 中提取图像,而不是完整的 PDF。这边走

  • 您不必比较文本 [1]。
  • 根据图像包含在 PDF 中的方式,您还可以获得更好的 OCR 结果。
  • 此外,您还可以避免不必要的 OCRing 包含为明文的文本。

由于您已经在使用 xpdf,您可以使用它pdfimages -all来提取图像。

[1] 这不是 100% 正确的,因为 PDF 可能是夹在中间的 PDF,其中图像“后面”已经有一个 OCRed 文本层。

于 2016-09-26T12:13:06.383 回答