我正在尝试使用Tika的AutoDetectParser来提取文件的内容。 我原本以为这是一个依赖性问题但是无法理解为什么现在我仍然可以将所有tika-app包含在我的罐子里。
AutoDetect Parser在此返回emptry string:
BodyContentHandler handler = new BodyContentHandler();
AutoDetectParser parser = new AutoDetectParser();
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();
FileInputStream mypdfstream = new FileInputStream(new File("mypdf.pdf"));
parser.parse(mypdfstream,handler,metadata,context);
System.out.println(handler.toString());
让我感到困惑的是,使用标准PDFParser可以正常工作......:
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();
FileInputStream mypdfstream = new FileInputStream(new File("mypdf.pdf"));
PDFParser pdfparser = new PDFParser();
pdfparser.parse(mypdfstream,handler,metadata,context);
System.out.println(handler.toString());
我在我的类路径中包含了tika-app和tika-parsers jar,并将它们包含在ant创建的jar中。
build.xml
<javac srcdir="${src}" destdir="${build}">
<classpath>
<pathelement path = "lib/tika-app-1.11.jar"/>
<pathelement path = "lib/tika-parsers-1.11.jar"/>
</classpath>
</javac>
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}">
<zipgroupfileset dir="lib" includes="tika-app-1.11.jar"/>
<zipgroupfileset dir="lib" includes="tika-parsers-1.11.jar"/>
</jar>
编辑:我查看了supportedTypes
的{{1}}列表,但它是空的。与从parser.getSupportTypes(context))
返回的解析器列表一样。
那么也许这是另一个依赖问题?鉴于包括tika-app,这真的让我感到惊讶。
答案 0 :(得分:0)
我有同样的问题,我已经更正了像这样在我的Pom.xml上添加Tika Core和Parser依赖项,然后在Eclipse上更新Maven的问题。
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.18</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.18</version>
</dependency>