Tika AutoDetectParser 返回空字符串?

Pat*_*Pat 7 java ant apache-tika

我正在尝试使用 Tika 的 AutoDetectParser 来提取文件的内容。我最初认为这是一个依赖性问题,但无法理解现在我将所有 tika-app 都包含在我的 jar 中后,这仍然是正确的。

AutoDetect Parser 在此处返回空字符串:

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());
Run Code Online (Sandbox Code Playgroud)

更让我困惑的是,使用标准 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());
Run Code Online (Sandbox Code Playgroud)

我在我的类路径中包含了 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>
Run Code Online (Sandbox Code Playgroud)

编辑:我查看了我的supportedTypeswith列表,parser.getSupportTypes(context))它是空的。正如从 返回的解析器列表一样parser.getParsers()

所以也许这是另一个依赖问题?鉴于包含 tika-app,这真的让我感到惊讶。

小智 3

我有同样的问题,我已经更正了在我的 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>
Run Code Online (Sandbox Code Playgroud)