Apache Tika 应用程序配置文件

5
我正在使用Apache Tika应用程序作为命令行工具,在我的Ubuntu 16.04服务器上提取文档内容。
[Apache Tika网站][1]上写道:
“构建产物”
Tika的构建由多个组件组成,生成以下主要二进制文件:
tika-core/target/tika-core-*.jar Tika核心库。包含Tika的核心接口和类,但不包括任何解析器实现。仅依赖于Java 6。
tika-parsers/target/tika-parsers-*.jar Tika解析器。基于各种外部解析器库实现Tika Parser接口的类集合。
tika-app/target/tika-app-*.jar Tika应用程序。将上述组件和所有外部解析器库合并到一个可运行的带有GUI和命令行界面的单个JAR文件中。
因此,我已下载了最新版本(1.18)的tika-app-*.jar。这只是一个单独的文件。
在类似于java -jar tika-app-1.18.jar -t <filename>的命令行中运行此命令可以给我所需的文件内容输出,但每次都会收到两个警告:

2018年7月28日下午3:29:27 org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem WARNING: J2KImageReader未加载。 JPEG2000文件将不会被处理。请参见 https://pdfbox.apache.org/2.0/dependencies.html#jai-image-io以获取 可选依赖项。

2018年7月28日下午3:29:27 org.apache.tika.config.InitializableProblemHandler$3 handleInitializableProblem WARNING: org.xerial的sqlite-jdbc未 加载。请提供您类路径上的jar以解析sqlite 文件。请查看tika-parsers/pom.xml以获取正确版本。

我不知道这些警告是否会使事情变慢,但在这些重复的警告中很难跟踪其他输出。

我尝试通过以下方式将Tika指向我的自定义配置文件:

java -jar tika-app-1.18.jar --config=tika-config.xml -t <filename>

我的tika-config.xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<properties>
  <parsers>
    <parser class="org.apache.tika.parser.DefaultParser">
      <mime-exclude>image/jpeg</mime-exclude>
      <mime-exclude>application/x-sqlite3</mime-exclude>
      <parser-exclude class="org.apache.tika.parser.jdbc.SQLite3Parser"/>
    </parser>
  </parsers>
</properties>

如果我使用那个配置,我会得到“无协议:filename.doc”错误,并且警告仍然存在。
如何排除jpeg和sqlite解析器?

1
你是否阅读并遵循了http://tika.apache.org/1.18/configuring.html的指南? - Gagravarr
@Gagravarr 谢谢,我没有看过那个。所以根据那个,我正确地提供了配置文件。我可以使用 <mime-exclude>image/jpeg</mime-exclude> 来避免解析图像。我可能需要一个默认的配置文件,我还是使用 POM.XML 的内容吗?SQLite 解析器可能会被排除在与图像相同的方式下,对吗? - user164863
2
只有在自己编译Tika时才需要pom.xml,而在配置应用程序时则不需要这样做! - Gagravarr
@Gagravarr 好的,我明白了。但是我尝试使用如何配置解析器的第一个示例来创建一个配置文件,然后我执行 java -jar tika-app-1.18.jar --config=tika-config.xml -t <filename>,结果出现 No protocol: filename.doc。那么sqlite文件的MIME类型是什么? - user164863
@Gagravarr,根据您给我的链接,我已经更新了我的问题。 - user164863
2
这些警告是在初始化时出现的,你是在解析时排除了一些东西。你可能只想按照http://tika.apache.org/1.18/configuring.html#Load_Error_Handling的说明来关闭警告。 - Gagravarr
1个回答

3

我的解决方案是这个tika-config.xml文件:

 <?xml version="1.0" encoding="UTF-8"?>
 <properties>
   <service-loader loadErrorHandler="IGNORE"/>
   <service-loader initializableProblemHandler="ignore"/>
  <parsers>
    <parser class="org.apache.tika.parser.DefaultParser">
    <mime-exclude>image/jpeg</mime-exclude>
    <mime-exclude>application/x-sqlite3</mime-exclude>
    <parser-exclude class="org.apache.tika.parser.jdbc.SQLite3Parser"/>
   </parser>
  </parsers>
  </properties>

然后设置:

export TIKA_CONFIG=/path/to/tika-config.xml

在我的.bashrc文件中。


1
由于某些原因,在Windows中,路径分隔符会导致错误的文件路径。 - TheRealChx101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接