2013-05-15 32 views
0

我想問一個關於iText的問題。 我正在尋找PDF文件中的文本時遇到問題。iText是否支持OCR?

我可以用getTextfromPage()方法創建一個純文本文件,如下面的代碼示例中描述:

/** The original PDF that will be parsed. */ 
    public static final String PREFACE = "D:/B.pdf"; 
    /** The resulting text file. */ 
    public static final String RESULT = "D:/Result.txt"; 
public void ParsePDF(String From, String Destination) throws IOException{ 

     PdfReader reader = new PdfReader(PREFACE); 
     PrintWriter out = new PrintWriter(new FileOutputStream(RESULT));    
     for (int i = 1; i <= reader.getNumberOfPages(); i++) {       
     out.println(PdfTextExtractor.getTextFromPage(reader, i)); 
     } 
     out.flush(); 
     out.close(); 
     reader.close(); 

    } 

我試圖找到在結果文本像這樣的特定String

public void FindWords(String From) { 
     try{ 
      String ligneLue;    
      LineNumberReader lnr=new LineNumberReader(new FileReader(RESULT)); 
      try{     
       while((ligneLue=lnr.readLine())!=null){ 
        SearchForSVHC(ligneLue,SvhcList); 
       } 
      } 
      finally{     
       lnr.close(); 
      } 
     } 
     catch(IOException e){ 
      System.out.println(e);} 
     } 
    public void SearchForSVHC(String Ligne,List<String> List){ 
     for(String CAS :List){ 
      if(Ligne.contains(CAS)){ 
       System.out.print("Yes "+CAS); 
       break; 
     }} 
    } 

我的問題是,我解析的一些PDF包含掃描圖像,這意味着沒有真正的文本,只是像素。

iText是否支持光學字符識別(OCR)並作爲後續問題:是否有方法可以確定PDF是否由掃描圖像組成?

+0

謝謝@Bruno Lowagie –

+0

不,它沒有看到這個文檔的最後一行http://www.itextpdf.com/itext.php – 2013-05-15 13:17:41

回答

1

否iText與OCR無關。源自掃描書籍的PDF可以包含頁面作爲圖像,作爲文本或(通常爲了保持視覺原始文本搜索能力);當然,如果它包含文本,那是因爲一些OCR已經完成了。

要檢測PDF只包含圖像,沒有文本可能是一件棘手的事情,但一個簡單的啓發式就是嘗試提取文本(請參閱example)並確定PDF是否爲純圖像(如果它返回)幾乎)爲所有(大多數)頁面的空文本。

+0

謝謝,我的問題是,我的系統搜索工作。用戶對研究和PDF格式一竅不通。在這種情況下可以警告用戶該文件包含圖像,他必須在視覺上進行他的研究! –

1

This支持案例說iText不支持OCR。識別圖像是否包含文字與將圖像傳遞給OCR處理器一樣簡單,並檢查結果是否有意義。

+0

謝謝,我的問題是我使用系統搜索。用戶對研究和PDF格式一竅不通。在這種情況下可以警告用戶該文件包含圖像,他必須在視覺上進行他的研究! –

3

在回答之前,我已經對您的問題進行了非常全面的編輯。

當PDF包含掃描圖像時,沒有真正的文本需要解析,只有圖像像素看起來像文本一樣。您需要做OCR才能知道在這樣的掃描頁面上實際寫了什麼,而iText不支持OCR。

關於後續問題:很難確定PDF是否包含掃描圖像。第一次贈送將是:頁面中只有一張圖片,並且沒有文字。

但是:由於您對圖像的性質一無所知(可能您的PDF只包含假日照片),因此很難確定PDF是否爲充滿掃描文本頁面的文檔(即:光柵化文本)。

+0

非常感謝@Bruno Lowagie先生,因此在這種情況下不能警告用戶該文件包含圖像,並且他必須以可視方式進行他的研究! :( –

+0

那麼,你可以解析文本的頁面,如果你沒有找到任何文本,通知用戶你找不到任何文本,並且PDF文件應該先被OCR處理。 –

+0

是的,我有一個例子,其中包含5頁,第3個是圖像,另一個是文本,在這種情況下,我可以做PdfTextExtractor.getTextFromPage(reader,i),並找出這個頁面的類型爲例證圖像或文本(我認爲Pdfbox !!!並且謝謝 –