2016-09-23 78 views
1

我最近設置了一個Linux服務器,可以使用作爲Xpdf一部分的pdftotext命令將基於文本的PDF轉換爲文本,並通過使用gs( Ghostscript)和tesseract命令。如何區分PHP中的「文本」PDF和「圖像」PDF?

當我已經知道PDF是基於文本還是基於圖像的時候,兩種解決方案都能很好地工作。但是,爲了自動化將許多PDF轉換爲文本的過程,我需要能夠判斷PDF是基於文本還是基於圖像,以便我知道在PDF上運行哪一組進程。

有沒有什麼辦法可以在PHP中分析一個PDF,並告訴它是基於文本還是基於圖像,以便我知道是否使用Xpdf或Ghostscript/Tesseract?

+3

如果兩者兼而有之,該怎麼辦? – cmorrissey

+0

這是否會發生,如果是這樣,將在文件上運行Xpdf的'pdftotext'就足夠了?無論哪種方式,無論是有兩種或三種不同類型的PDF,我需要能夠區分它們,以便我知道如何處理它們以獲取文本。謝謝。 – HartleySan

+0

我會針對PDF運行這兩個腳本,然後您需要對輸出進行比較。 – cmorrissey

回答

0

比較輸出結果並確定OCR運行的結果文本與Xpdf運行的輸出結果是否相同是一個不重要的任務。對於不可讀取的PDF文本(例如,非常小的字母)的情況,可以通過xpdf提取文本,甚至可以結束大量不必要的亂碼。

我會建議從PDF和OCR提取圖像只有那些,而不是完整的PDF。這樣

  • 您不必比較文本[1]。
  • 根據圖像如何包含到PDF中,您可能會得到更好的OCR結果。
  • 此外,您還可以避免不必要地OCRing文本作爲明文。

由於您已經在使用xpdf,因此您可以使用pdfimages -all來提取圖像。

[1]這不是100%正確的,因爲PDF可能是一個三明治的PDF,其中已經有一個OCR文本圖層位於圖像「後面」。

+0

對不起,但我很困惑你推薦我做什麼。我是否應該將所有PDF轉換爲圖像,然後不加區別地對它們進行OCR處理,或者您是否推薦其他內容?使用Tesseract的OCR過程非常緩慢,所以我想盡可能避免OCR儘可能多的PDF。 – HartleySan

+0

@HartleySan我的意思是使用一種工具來提取嵌入的圖像,並僅在這些工具上運行OCR工具。我在原始答案中增加了更多細節。 – tobltobs

相關問題