在 Java 中使用 Apache Tika 读取 doc、docx等格式文件内容

本文主要是介绍使用 Apache Tika 来读取 doc、docx 等格式文件内容。

场景

大模型业务应用开发中,避免不了文件的读取,虽说很多大模型应用平台都支持上传文件进行读取,但工作中不少文件保密性是相当高的,必须先在代码中处理一遍。

那么就会涉及到后端系统中读取多种文件格式的内容的场景,此时,正是 Tika 大显身手的好时候。

优点

这里选择对比网络上常出现的 poi 组件,有以下优点:

  1. 无需自行判断文件格式从而去选择对应的解析器,tika 支持自识别相当多的文件格式;
  2. 针对错误的 doc、docx 格式,传统代码很难区分,容易导致抛出异常。

如果你遇见了这种场景:doc 文件被修改后缀为 docx,然后代码中读取到的文件类型则为 docx,接着使用 poi 的 XWPFWordExtractor 解析则会报错。

此种情况是不容易区分出两种文件类型的,因为使用 WPS 打开不会存在提示,业务老师对此也不会敏感,你甚至都很难加上约束。

此时可以考虑使用 Apache Tika 帮你快速稳定实现文件读取功能。

用法

引入依赖

groovy 复制代码
dependencies {
    runtime 'org.apache.tika:tika-core:3.2.0'
    runtime 'org.apache.tika:tika-parsers-standard-package:3.2.0'
}

执行代码

java 复制代码
public String parse() throws IOException, SAXException, TikaException {
    Tika tika = new Tika();
    try (InputStream stream = Object.class.getResourceAsStream("test.doc")) {
        return tika.parseToString(stream);
    }
}

参考

https://tika.apache.org/3.2.0/examples.html
https://allinprogram.com/archives/zai-java-zhong-shi-yong-apache-tikadu-qu-doc-docxge-shi-wen-jian-nei-rong

相关推荐
x864 分钟前
Go 1.27 正式发布:泛型方法、encoding/json/v2、后量子签名 ML-DSA 与 SIMD
开发语言·golang
leeyi10 分钟前
Eino Callbacks 回调机制:在 Agent 执行每个环节注入自定义逻辑(第95篇-E81)
aigc·agent·ai编程
杨丰玮41818 分钟前
暑假Java知识点回顾:类与对象知识总结
java·开发语言
盐焗鹌鹑蛋19 分钟前
【Linux】ELF与库加载
java·linux·服务器
WarPigs23 分钟前
Unity未激活的物体无法响应事件?
java·unity·游戏引擎
icestone200025 分钟前
从Cursor到Claude Code:一年半AI编程实战经验
ai编程·claude·cursor
Patrick在香港25 分钟前
Python asyncio vs 多线程 vs 多进程——同一份 HKOpenDataClient 实测 5/30/100 endpoint,谁是真的银弹
开发语言·python
十五喵源码网28 分钟前
基于SpringBoot2+vue2的公寓报修管理系统
java·毕业设计·springboot·论文笔记
牛油果子哥q28 分钟前
C++异常处理万字详解:try-throw-catch机制、栈展开、标准异常体系、自定义异常、工程规范、内存泄漏避坑
开发语言·jvm·c++
Metaphor69229 分钟前
使用 Python 设置 Excel 文件属性
开发语言·python·excel