2013-03-27 83 views
1

從多頁掃描pdf閱讀文本時,你們有沒有人對iTextSharp的準確性有過體會?iTextSharp PDF閱讀器準確性

事情是我已經嘗試閱讀pdf,同時在adobe reader中使用基本的搜索功能,也使用iTextSharp。

iTextSharp的設法找到一個給定詞的出現大約50%相比(我稱之爲)由Adobe

[iTextSharp 1000 occ // Adobe Reader >2000] 

100%,這是一個已知的「問題」?

編輯:我應該補充一點:在我搜索的時候,它已經被發現了。

+0

@Gergo不正確修正:* ocr'ed *並不簡稱* *發生。 – mkl 2014-05-18 16:08:52

+0

@mkl對不起,改回它。謝謝! – 2014-05-18 16:10:20

回答

0

不知道您的具體情況(有問題的PDF,使用的代碼等),我們無法幫助您太多。

但是我可以告訴你,iTextSharp有更多的文字提取器。由於PDF中的文本可以是並且通常是非連續的和非線性的,因此iTextSharp會採用任何連續的字符並構建我們認爲的單詞和句子。然後,它還嘗試將看起來「幾乎放在同一行上」的字符組合起來,並進行相同的操作(例如文字經常與OCR文本的角度略有不同)。還有「空格」應該是簡單的ASCII 32個字符,但通常不是。 iTextSharp會加倍努力,並嘗試計算兩個文本運行是否應該用空格分隔。

Adob​​e可能有進一步的啓發式方法,能夠更多地猜測文本。我的猜測是,他們有一個更大的門檻來猜測組合非線性文本。

1

正如@ChrisHaas已經解釋過的,沒有代碼和PDF樣本很難具體。

首先,說iTextSharp的設法找到一個給定的字的出現次數的50%左右是iText的(夏普)有點誤導不直接暴露的方法來找到一個PDF和一個特定的文本,因此,實際上找到0%。它僅僅提供了一個框架和一些簡單的文本提取示例。

使用該框架嚴重搜索給定字需要比在結合一些Contains(word)呼叫應用這些簡單的示例用法(由SimpleTextExtractionStrategy提供和LocationTextExtractionStrategy,也使用PdfTextExtractor.GetTextFromPage(myReader, pageNum)當罩下工作)更多。你必須:

  • 創造出

    • 有更好的算法來識別哪些字形屬於一個更好的文本提取策略,其行;例如樣本策略可能會完全失敗,對於帶有OCR的文本的掃描頁面,文本行不是100%筆直,而是最小上升;

    • 識別窮人的大膽和類似的結構,並相應地將它們轉換(一個非常小的偏差,達到了一個大膽的字符樣式版印刷在同一封信兩次);

  • 創建一個文本規範化其

    • 解析連字;

    • 統一了語義上相同或類似的字符的字形替代;

  • 正常化提取的文本和您的搜索字詞,然後才搜索。

此外,正如@ChrisHaas提到的那樣,要特別注意正文中的空格。

如果創建考慮到這些標準基於iText的文本搜索,你一定會得到一個可以接受的命中率。獲得和Adobe Reader一樣好的工作是一項相當艱鉅的任務,因爲他們已經在這個功能上投入了相當多的資源。

爲了完整起見,您不僅應該搜索頁面內容和從那裏引用的所有內容,而且還應該包含可能包含相當一些文本內容的註釋,這些註釋甚至可能顯示爲頁面的一部分,例如,在自由文本註釋的情況下。

+0

感謝這個非常詳細的解釋! – 2013-05-15 08:40:51