2013-05-15 30 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 !!!并且谢谢 –