2016-11-14 167 views
0

我想从使用apache tika的大型pdf(不扫描/栅格化pdf)文件中提取文本。Apache Tika无法从大型PDF中提取全文内容

但是,当我比较原始(从pdf)和提取的文本中提取文本后,我发现很多文本内容都丢失了。我曾尝试使用setMaxStringLength(-1)BodyContentHandler(-1)来最大化输出。但仍然无法从pdf文件中提取全文内容。

下面是我试过的两个样本。

样品:1

public class Extract 
{ 
    public static void main(String[] args) throws IOException, SAXException, TikaException 
    { 
     File file = new File("1.pdf"); 

     //Instantiating Tika facade class 
     Tika tika = new Tika(); 
     tika.setMaxStringLength(-1); 
     String filecontent = tika.parseToString(file); 
     System.out.println("Extracted Content: " + filecontent); 
    } 
} 

样品:2

public class Extract 
{ 
    public static void main(String[] args) throws IOException, SAXException, TikaException 
    { 
     BodyContentHandler handler = new BodyContentHandler(-1); //-1 to allow parsing for unlimited character 
     Metadata metadata = new Metadata(); 
     FileInputStream inputstream = new FileInputStream(new File("1.pdf")); 
     ParseContext pcontext = new ParseContext(); 

     //parsing the document using PDF parser 
     PDFParser pdfparser = new PDFParser(); 
     pdfparser.parse(inputstream, handler, metadata,pcontext); 

     //getting the content of the document 
     System.out.println("Contents of the PDF :" + handler.toString()); 

     //getting metadata of the document 
     System.out.println("Metadata of the PDF:"); 
     String[] metadataNames = metadata.names(); 

     for(String name : metadataNames) { 
      System.out.println(name+ " : " + metadata.get(name)); 
     } 
    } 
} 

我能看到从PDF格式的最后一页内容。但随机很多文本从pdf中丢失。

+2

如果这种情况只发生在单个或很少的pdf上,请分享有问题的pdf进行分析。 – mkl

+1

您是否试过遵循[Apache Tika疑难解答 - PDF文本问题](https://wiki.apache.org/tika/Troubleshooting%20Tika#PDF_Text_Problems)说明? – Gagravarr

回答

0

这是我身边最愚蠢的错误。我从eclipse控制台获取具有有限缓冲区空间的输出文件。当我将输出写入文件时,它似乎是完美的。