在日常开发中我们经常需要从各种格式的文档中提取文本内容例如 PDF、Word、Excel、PPT 等。手动解析这些格式不仅繁琐而且容易出错。Apache Tika是一个开源的文档解析工具库能够自动检测文档类型并提取文本和元数据支持多达上千种格式包括 PDF、DOC、XLS、PPT、HTML 等。它提供了多种使用方式图形化界面tika-app、独立服务tika-server以及嵌入到 Java 项目中。本文将演示如何在 Spring Boot 项目中集成 Tika快速实现文档解析功能。1. 引入 Tika 依赖在 Spring Boot 项目的pom.xml中加入 Tika 的依赖管理及核心包dependencyManagement dependencies dependency groupIdorg.apache.tika/groupId artifactIdtika-bom/artifactId version2.8.0/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement dependencies dependency groupIdorg.apache.tika/groupId artifactIdtika-core/artifactId /dependency dependency groupIdorg.apache.tika/groupId artifactIdtika-parsers-standard-package/artifactId /dependency /dependenciestika-bom统一管理版本tika-core提供核心 APItika-parsers-standard-package包含常用解析器。2. 创建 Tika 配置文件可选在src/main/resources目录下创建tika-config.xml用于自定义编码检测器等行为。以下是一个示例配置主要调整了不同编码检测器的markLimit参数?xml version1.0 encodingUTF-8? properties encodingDetectors encodingDetector classorg.apache.tika.parser.html.HtmlEncodingDetector params param namemarkLimit typeint64000/param /params /encodingDetector encodingDetector classorg.apache.tika.parser.txt.UniversalEncodingDetector params param namemarkLimit typeint64001/param /params /encodingDetector encodingDetector classorg.apache.tika.parser.txt.Icu4jEncodingDetector params param namemarkLimit typeint64002/param /params /encodingDetector /encodingDetectors /properties如果不提供配置文件Tika 会使用默认配置一般情况下也足够。3. 配置 Tika Bean创建一个配置类MyTikaConfig加载配置文件并初始化Tika对象。代码如下import java.io.IOException; import java.io.InputStream; import org.apache.tika.Tika; import org.apache.tika.config.TikaConfig; import org.apache.tika.detect.Detector; import org.apache.tika.exception.TikaException; import org.apache.tika.parser.AutoDetectParser; import org.apache.tika.parser.Parser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.xml.sax.SAXException; Configuration public class MyTikaConfig { Autowired private ResourceLoader resourceLoader; Bean public Tika tika() throws TikaException, IOException, SAXException { // 加载自定义配置文件 Resource resource resourceLoader.getResource(classpath:tika-config.xml); InputStream inputStream resource.getInputStream(); TikaConfig config new TikaConfig(inputStream); Detector detector config.getDetector(); Parser autoDetectParser new AutoDetectParser(config); return new Tika(detector, autoDetectParser); } }这里我们通过ResourceLoader读取 classpath 下的配置文件然后用它构造TikaConfig再创建Detector和Parser最后生成Tika实例。Tika类封装了常用的 detect、parse 等方法非常方便。4. 在项目中使用 Tika 解析文档配置完成后你可以在任何 Spring 管理的 Bean 中直接注入Tika对象然后调用其方法解析文档。例如创建一个 Service 来处理文件上传和解析import org.apache.tika.Tika; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; Service public class DocumentParseService { Autowired private Tika tika; /** * 解析上传的文件提取文本内容 */ public String parseFile(MultipartFile file) throws Exception { try (InputStream inputStream file.getInputStream()) { // 自动检测文档类型并解析为文本 return tika.parseToString(inputStream); } } /** * 仅检测文档类型 */ public String detectFileType(MultipartFile file) throws Exception { try (InputStream inputStream file.getInputStream()) { return tika.detect(inputStream); } } }parseToString将文档内容解析为纯文本字符串。detect检测文档的 MIME 类型。此外还可以使用parse方法获取结构化内容如 XHTML或元数据。在 Controller 中你可以接收上传的文件并调用上述 Serviceimport org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; RestController public class FileParseController { Autowired private DocumentParseService parseService; PostMapping(/parse) public String parseFile(RequestParam(file) MultipartFile file) { try { return parseService.parseFile(file); } catch (Exception e) { e.printStackTrace(); return 解析失败 e.getMessage(); } } }启动 Spring Boot 应用使用 Postman 或前端上传文件即可得到解析出的文本内容。5. 总结通过以上几步我们就快速在 Spring Boot 中集成了 Apache Tika实现了对多种文档格式的解析。Tika 的强大之处在于自动识别文档类型无需关心具体格式。统一 API解析 PDF、Office 文档、HTML 等只需一行代码。可扩展性强支持自定义解析器、编码检测器等。无论是实现全文搜索、内容分析还是文档内容提取Tika 都是一个非常实用的工具。