2016-04-26 59 views
0

我想只提取使用提卡按照其網站上的教程一個PDF文件中的文本,但我剛開始25K行文字後面,看起來像這樣的。提卡犯規輸出文檔內容

%PDF-1.5% μμμμ 1 0 OBJ < >>> endobj 2 0 OBJ <> endobj 3 0 OBJ <>/ProcSet [/ PDF /文本/ ImageB/ImageC/ImageI] >> /多媒體[0 0 612 792] /目錄4 0 R /組<> /拉環/ S/StructParents 0 >> endobj 4 0 OBJ <> 流 XOE•Wßoâ8?〜Gâ ~Çät?Û±óCª「曲®î'+?t¼öÁ,@£禰?ÙëíóÙ??mºœ=žùfæóÌ「OO /º¹™〜™ÿqGrúÙm7?UÛɧ۸,éönN· õµ°¹?Ù{ ½AL®EL?‘˜k?ͯ?3-¤6」Z+ŠãýL’HÄiXÐßq?½Ä&ªø¹Œ'6ª!^ÇJ‡•—¡hÚXÉ zæÝvà–•É„ê;ü0?;\àú??ïò1š+#àßH©?¤ÊÒÒòR&R?³r’ÜHeg¥Ü±H†#©ýÚ ·?V0†ffË」?ê??àÀ¨ÌY4Ï?dvWN PKA€O 3§ ¥?þ?±R ?b /ùîYi±Z/.Urß™耶> ED IX÷」Bboùã½K™O = Y#CH 3 ?? U8>¡#DI¢即:???????û8øšA- C™DC‰?? ±d%鄰d =e¿|§É;?%H「白??çcW®º@小號ÝGn4÷UTHR#M +¨Åö5ιμ¸Ûè¥q±2ÑOH«Ýž0®???? :rO¯Ü¸UÓšÑíƒ+Š³`ý»¶Ž• U型oiýÌ^väh_o7ŒÐT8÷〜「我

與嘗試它時,我也得到了同樣的事情?!?的.docx格式太多,但它正常工作與.TXT。沒有人知道我在做什麼錯?

BodyContentHandler handler = new BodyContentHandler(-1); 

     Metadata metadata = new Metadata(); 
     FileInputStream inputstream = new FileInputStream(new File("fake.pdf")); 
     ParseContext pcontext=new ParseContext(); 

     //Text document parser 
     TXTParser TexTParser = new TXTParser(); 

     TexTParser.parse(inputstream, handler, metadata,pcontext); 
     System.out.println("Contents of the document:" + handler.toString()); 

回答

0

剛剛意識到我是使用TXTParser代替AutoDetectParser。有人可以關閉或刪除這個問題嗎?

3

的問題似乎是,你要使用一個TXTParser來解析PDF文檔。 PDF代表Portable Document Format,其中包含文件中的二進制數據。

幸運Apache Tika配備了一個包裝,會自動檢測你試圖解析該文件的格式。

嘗試從Tika Documentation這個例子:

public String parseExample() throws IOException, SAXException, TikaException { 
    AutoDetectParser parser = new AutoDetectParser(); 
    BodyContentHandler handler = new BodyContentHandler(); 
    Metadata metadata = new Metadata(); 
    try (InputStream stream = ParsingExample.class.getResourceAsStream("test.pdf")) { 
     parser.parse(stream, handler, metadata); 
     return handler.toString(); 
    } 
}