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

标签 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 内容类型真的是我们无法读取的信号吗?或者“你必须想出自己的办法来处理这个问题”?

最佳答案

如果检测器不知道文件是什么,它将返回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/

相关文章:

java - 我是否需要为测试用例使用的 util 类编写测试用例

java - 数据库更新和可排序 JTable 问题

jquery - Jsp、Jquery和Json编码字符问题

xml - ASP.NET Core 1.0 Web API 不返回 XML

java - 提取 PDF 时忽略表格

java - 将数组值从一个方法传递到另一个方法

java - 如何使用 .HAR 文件生成 HTML UI(Firebug 显示)

android - 如何查找网址是否为音频/视频

从一系列数据中提取imacros

python - 对图像中的单个字符进行校正