【问题标题】:Can't parse outlook body using Tika on CentOS无法在 CentOS 上使用 Tika 解析 Outlook 正文
【发布时间】:2014-07-11 01:18:49
【问题描述】:

我正在尝试使用 Tika 解析 Outlook 消息的 html 正文。当我在我的 Windows 机器上运行以下方法时,它工作正常,并且我得到了电子邮件正文的纯文本表示。

private String parseHtml(InputStream stream) throws Exception {
    ContentHandler contenthandler = null;
    try {
        Metadata metadata = new Metadata();
        Parser parser = new AutoDetectParser();
        contenthandler = new BodyContentHandler();
        parser.parse(stream, contenthandler, metadata, new ParseContext());
        System.out.println(contenthandler.toString());
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    return contenthandler != null ? contenthandler.toString() : null;
}

但是,当我在 CentOS 虚拟机和物理服务器上运行相同的代码时,我得到了所有的 Outlook 标记。 Windows 中发生了一些事情,允许 Tika 检测到 centos 上不可用的文档类型。元数据显示,当我调试时:

Windows:Content-Encoding=US-ASCII Generator=Microsoft Word 14(过滤介质)Content-Type=text/html; charset=us-ascii Linux:Content-Encoding=US-ASCII Content-Type=text/plain; charset=US-ASCII

【问题讨论】:

  • 我的第一个预感是您在 CentOS 机器上缺少一些关键的 Tika 依赖 jar。你确定你有同一套罐子吗?
  • 你是对的,添加一个答案,我会选择它作为最佳答案。

标签: java apache-tika


【解决方案1】:

提升对答案的评论...

您缺少一些 Tika jar 或其依赖项

如果您使用命令行 Tika App jar,那么您需要的一切都在其中,并且它可以独立运行。同样,Tika Server jar 是完全独立的。

对于 OSGi 类型,您需要 Tika Core 和 Tika Bundle,但这应该是它,因为该包包含 Tika 解析器及其依赖项/引用。

否则,如果您从 Java 中使用 Tika,则需要 Tika Core、Tika Parsers 以及它们各自的所有依赖项。如果您依赖于tika-coretika-parsers,Maven 可以为您拉取依赖项,但您仍然需要确保您的部署方法能够携带这些依赖项。

如果您错过了 Tika Parsers jar 和/或其依赖项,那么您仍然有 Tika,但没有解析器,因此解析不会返回内容。您可以通过 Tika Config 对象获取可用的解析器,并从中检查您是否拥有所有您期望的解析器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    相关资源
    最近更新 更多