Tika不输出文件内容

时间:2016-04-26 17:27:11

标签: java apache-tika

我试图通过在他们的网站上按照教程使用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());

2 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分:0)

刚刚意识到我使用的是TXTParser而不是AutoDetectParser。有人可以关闭或删除这个问题吗?