如何使用tika从办公文档中提取超链接

4

我正在使用Apache Tika从各种文档格式中提取原始文本,包括office。

当从包含超链接的Word文档中提取文本时,只有文本被提取,超链接的信息丢失了。

是否有一种配置解析器的方法,使底层链接也被提取?

    ParseContext context = new ParseContext();
    Detector detector = new DefaultDetector();
    Parser parser = new AutoDetectParser(detector);
    context.set(Parser.class, parser);
    Metadata metadata = new Metadata();

    try (TikaInputStream input = TikaInputStream.get(new File(fileName))) {

        BodyContentHandler handler = new BodyContentHandler();
        parser.parse(input, handler, metadata, context);

        String rawText = handler.toString();

        input.close();
    }

1
请向 Tika 请求文件的 HTML 版本,而不是当前的纯文本版本。 - Gagravarr
1
这是一种可能的解决方法,但需要进行额外的后处理来处理/删除HTML标签。 - Matthias
1
你可以向Tika请求两次,一次作为HTML,从中获取链接,另一次作为纯文本,供您使用。否则,如果您想要链接,您需要在HTML中查找a标签。 - Gagravarr
1个回答

0
我正在使用tika-app在bash中从办公文档中提取超链接。我使用--html选项输出文件的HTML内容。然后,我使用sed和grep过滤HTML,只保留其中href属性的内容。我得到的结果是每个href的内容,每行一个。
java -jar /root/tika-app-1.20.jar --html TEST.docx 2>/dev/null | sed 's/href/\nhref/g' | grep '^href' | sed 's/href="//' | sed 's/".*//'

我知道 OP 没有使用 tika-app,但是一般的方法也可以在 Java 中使用 Tika。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接