本文主要是介绍使用 Apache Tika 来读取 doc、docx 等格式文件内容。
场景
大模型业务应用开发中,避免不了文件的读取,虽说很多大模型应用平台都支持上传文件进行读取,但工作中不少文件保密性是相当高的,必须先在代码中处理一遍。
那么就会涉及到后端系统中读取多种文件格式的内容的场景,此时,正是 Tika 大显身手的好时候。
优点
这里选择对比网络上常出现的 poi 组件,有以下优点:
- 无需自行判断文件格式从而去选择对应的解析器,tika 支持自识别相当多的文件格式;
- 针对错误的 doc、docx 格式,传统代码很难区分,容易导致抛出异常。
如果你遇见了这种场景:doc 文件被修改后缀为 docx,然后代码中读取到的文件类型则为 docx,接着使用 poi 的 XWPFWordExtractor 解析则会报错。
此种情况是不容易区分出两种文件类型的,因为使用 WPS 打开不会存在提示,业务老师对此也不会敏感,你甚至都很难加上约束。
此时可以考虑使用 Apache Tika 帮你快速稳定实现文件读取功能。
用法
引入依赖
dependencies {
runtime 'org.apache.tika:tika-core:3.2.0'
runtime 'org.apache.tika:tika-parsers-standard-package:3.2.0'
}
执行代码
public String parse() throws IOException, SAXException, TikaException {
Tika tika = new Tika();
try (InputStream stream = Object.class.getResourceAsStream("test.doc")) {
return tika.parseToString(stream);
}
}