【发布时间】:2015-10-06 04:30:38
【问题描述】:
我正在尝试从 docx 中提取文本:tika-app 做得很好,但是当我尝试在我的代码中做同样的事情时,结果什么都没有,并且 tika 解析器说我的 docx 的内容类型文件是“应用程序/zip”。
我该怎么办?我应该使用递归方法(如this)还是有其他方法?
更新:如果我将文件名添加到元数据,现在可以正确检测到文件内容类型:
InputStream is = new FileInputStream(myFile);
AutoDetectParser parser = new AutoDetectParser();
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, myFileFilename);
ParseContext context = new ParseContext();
context.set(Parser.class, parser);
parser.parse(is, handler, metadata, context);
无论如何在 parse() 我得到错误
java.lang.NoClassDefFoundError: org/apache/poi/openxml4j/exceptions/InvalidFormatException 在 org.apache.tika.parser.microsoft.ooxml.OOXMLParser.parse(OOXMLParser.java:82)
【问题讨论】:
-
听起来您可能缺少一些 Tika jar 和/或它们的依赖项。你是如何在你的应用中安装/打包 Tika 的?
-
嗨@Gagravarr。按照网站 (tika.apache.org/1.9/gettingstarted.html) 上的说明,我使用 maven 构建工件(tika-core、tika-parsers),然后将它们导入我的项目中。然后我使用 AutoDetectParser 检查文件的内容类型并解析它。它适用于其他类型,如 ods、odt、txt……但不适用于 docx
-
你为什么要建造 Tika 罐子?您可能应该只遵循“使用 Tika 作为 Maven 依赖项”部分。其次,你是如何将依赖项复制到你的项目中的?
-
好的,谢谢。我可以从 mvn 存储库 (mvnrepository.com/artifact/org.apache.tika/tika-parsers/1.9) 下载 jars 并将它们移动到我的 lib 文件夹中吗?它似乎不起作用。
-
不,您还需要拥有所有依赖项,如 pom 文件中定义的那样。可能最好使用 Maven 并让它为您完成这一切
标签: java parsing docx apache-tika