从未知内容类型的文档中提取文本

时间:2011-03-31 23:22:29

标签: java content-type text-extraction apache-tika

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

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

我应该尝试什么,而不是将文档返回给用户,告诉他不支持格式。

或者,实际上application/octet-stream内容类型是一个我们无法读取的信号?或者“你必须弄清楚如何处理这个问题”?

1 个答案:

答案 0 :(得分:3)

如果探测器不知道文件是什么,它将返回 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生成的平台的可执行文件,然后将其连接到其中)