我试图通过在他们的网站上按照教程使用Tika从pdf文件中提取文本,但我只是得到了25k行的文本,看起来像这样。
%PDF-1.5 %μμμμ 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <> / ProcSet [/ PDF / Text / ImageB / ImageC / ImageI]>> / MediaBox [0 0 612 792] / Contents 4 0 R / Group<> / Tabs / S / StructParents 0>> endobj 4 0 obj <> 流 XOE•Wßoâ8?〜Gâ~Çät?Û±óCª“QÚ®î'+?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 €Ó§ ¥þ±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 :(得分:3)
问题似乎是您尝试使用TXTParser
来解析PDF文档。 PDF
代表Portable Document Format
,其中包含文件中的二进制数据。
幸运的是Apache Tika
附带了一个包装器,它会自动检测您要解析的文件的格式。
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();
}
}
答案 1 :(得分:0)
刚刚意识到我使用的是TXTParser而不是AutoDetectParser。有人可以关闭或删除这个问题吗?