2016-11-14 43 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控制檯獲取具有有限緩衝區空間的輸出文件。當我將輸出寫入文件時,它似乎是完美的。