2010-03-08 272 views
8

以編程方式檢查PDF文件是否爲完全掃描的文件的最佳方法是什麼? 我有我的iText和PDFBox。我可以檢查一個pdf文件是否包含文本,並根據結果來決定這個文件是否被OCR,但這個解決方案不是100%準確的。我想知道是否有另一種方法來解決這個問題。檢查PDF文件是否爲掃描文件

正如你所理解的,解決方案必須是基於Java的。

+0

OOF。這聽起來像是一個研究生或博士學位的研究項目,尤其是因爲掃描的文檔也可能包含文本。祝你好運! – 2010-03-08 18:46:47

+1

OCR pdf將包含文本,這是光學字符識別的要點。 – 2010-03-08 18:48:45

+1

當你說完全掃描,你是什麼意思?文檔中的所有內容都是圖片?一切都被掃描,然後轉換成文本與OCR?如果我用數碼相機拍攝照片,然後將該照片粘貼到Word中,然後打印到PDF,那麼這算作「掃描」圖像嗎? – 2010-03-08 18:53:57

回答

3

您最好的選擇可能是檢查它是否包含文本,並查看它是否包含大頁面圖像或大量平鋪圖像以覆蓋頁面。如果你還檢查元數據,這應該涵蓋大多數選項。

+1

馬克, 你的答案是最接近我的想法。將它與Rowan建議的檢查文本/字體資源以及Gariel的淡出或紙張/書籍頁邊距結合起來看起來對我來說是一個很好的起點。 謝謝, 亞歷克斯 – Alex 2010-03-09 13:32:14

+0

我認爲你應該檢查與OCR頁面化的圖像。某些PDF閱讀器成功使用此方法。我正在考慮如何在這裏最優化地完成這項工作http://stackoverflow.com/q/34092991/54964 – 2015-12-05 10:40:37

1

恕我直言,你不能確定。但你可以嘗試一些東西,如尋找文本,嘗試OCR PDF,並根據已識別文本的數量決定,可以查找一些基本掃描錯誤,如淡出或紙張/書本邊距。

+0

「...基本掃描錯誤,如淡出或紙張/書本邊距。」似乎是一個好主意。 – Alex 2010-03-09 13:29:30

0

您是否知道文檔如何被掃描?雖然「創作者」元數據項目不是強制性的,但如果您的掃描儀設置它,它可能是一個有用的線索。

0

我只是通過尺寸來判斷。掃描的文件不合理的大。對於直到1000頁,我的經驗法則是,真正的文本pdf:1-20 M,掃描的可以增加30到100 M.

1

您可以檢查一下PDF是否有任何字體資源使用Quick PDF Library Lite中的HasFontResources函數 - 一個免費的ActiveX組件,在理論上您可以在第三方附件的幫助下從Java使用該組件,從而很好地指示文檔是否包含任何字體)。

檢查文本/字體資源是確定是否可能從掃描過程中生成PDF的最準確方法。這與馬克斯蒂芬斯建議尋找一個大頁面大小的圖像,等

但不幸的是,沒有任何100%保證精確的方法來檢查是否PDF掃描。

+0

如果PDF包含文本頁面和圖像頁面 – user2988832 2017-09-28 12:43:45

0
find ./ -name "*.pdf" -print0 | xargs -0 -I {} bash -c 'export file="{}"; if [ $(pdffonts "$file" 2> /dev/null | wc -l) -lt 3 ]; then echo "$file"; fi' 

說明:如果pdf包含文本,pdffonts file.pdf將顯示多於2行。輸出不包含文本的所有pdf文件的文件名,掃描的PDF文件也是如此。