Apache Tika 中是否有针对 application/octet-stream
类型的解析器?我想这是一个不可解析的流。
我只需要解析ODS文档、MS文档和PDF文件。看来 new Tika( ).parseToString(file);
就足够了。但我无法弄清楚当未检测到内容类型时会发生什么 -> application/octet-stream
是默认的。如果我有机会从这些类型之一的文档中提取文本,但 contentType 检测器未检测到它们的类型。
除了将文档返回给用户并告诉他格式不受支持之外,我还应该尝试什么。
或者生成的 application/octet-stream
内容类型真的是我们无法读取的信号吗?或者“你必须想出自己的办法来处理这个问题”?
最佳答案
如果检测器不知道文件是什么,它将返回application/octet-stream
如果检测器不知道它是什么,那么 Tika 将无法为其选择合适的解析器。 (你最终会得到 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 的可执行文件,然后将其连接)
关于java - 从未知内容类型的文档中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5507565/