2

application/octet-streamApache Tika中是否有类型解析器?我想这是一个不可解析的流。

我只需要解析 ODS 文档、MS 文档和 PDF 文件。似乎这就 new Tika( ).parseToString(file); 足够了。但我无法弄清楚当未检测到内容类型时会发生什么 - >application/octet-stream是默认值。如果我有机会从属于其中一种类型的文档中提取文本,但 contentType 检测器没有检测到它们的类型。

除了将文档返回给用户告诉他它不受支持的格式之外,我还应该尝试什么。

或者结果内容类型真的是application/octet-stream我们无法阅读的信号吗?还是“你必须想办法解决这个问题”?

4

1 回答 1

4

如果检测器不知道文件是什么,它将返回application/octet-stream

如果检测器不知道它是什么,那么 Tika 将无法为它选择合适的 Parser。(你最终会得到什么都不做的 EmptyParser)

如果可以,请在进行检测和解析时传入文件名,因为这在某些情况下有助于检测:

Metadata metadata = new Metadata();
metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
ParseContext context = new ParseContext();

Parser parser = new AutoDetectParser();
parser.parse(input, textHandler, metadata, new ParseContext());

此外,值得检查 Tika 网站的支持格式部分,以确保您拥有的文档是有解析器的文档 - http://tika.apache.org/0.9/formats.html

如果您的文档采用当前不受支持的格式,那么您有两个选择(都不是立即修复)。一种是帮助编写新的解析器(需要为该格式找到合适的 Java 库)。另一种是使用基于命令行的解析器(需要为您的平台找到可以生成 xhtml 的可执行文件,然后将其连接进去)

于 2011-04-01T09:31:07.823 回答