如何在PHP中区分“文本”PDF和“图像”PDF?

时间:2016-09-23 18:52:46

标签: php pdf tesseract ghostscript xpdf

我最近设置了一个Linux服务器,可以使用pdftotext命令将基于文本的PDF转换为文本,该命令是Xpdf的一部分,也可以使用以下方法将基于图像的PDF转换为文本gs(Ghostscript)和tesseract命令的组合。

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

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

2 个答案:

答案 0 :(得分:1)

我认为Kurt Pfeifle here的答案很棒:使用pdffonts-也是Xpdf / Poppler的一部分-列出PDF使用的字体。

如果使用任何字体,则包含文本。如果没有,则仅包含图像。

答案 1 :(得分:0)

比较输出并判断OCR运行的结果文本是否与Xpdf运行的输出相同是一项非常重要的任务。对于不可OCRable的PDF文本(例如非常小的字母),文本可以通过xpdf提取,你甚至会以很多不必要的胡言乱语结束。

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

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

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

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