Java
Spring Boot + Apache Tika:文档解析不是 parse 一下就完了
Apache Tika 在 Spring Boot 里接入并不难,难的是把“上传一个文档并解析文本”做成可靠的生产链路。很多示例停在依赖、配置和调用 parse 方法,但真实系统会遇到文件体积、格式炸弹、编码、图片型 PDF、解析耗时、异常重试和后续索引等问题。
先把 Tika 放在边界上
Tika 应该位于文档进入系统的边界,而不是散落在业务代码里的工具类。上传、校验、隔离、解析、抽取元数据、生成预览、写入搜索或 RAG 索引,应当是一条可观测的流水线。
生产接入要补的设计
- 限制文件大小、页数、MIME 类型和解析时间,避免压缩炸弹或超大文档拖垮服务。
- 解析任务异步化,接口只返回任务 ID,不让用户请求线程承担重活。
- 保存原文件、解析文本、metadata、错误原因和版本号,便于回溯。
- 对低质量 PDF、扫描件和图片型文档准备 OCR 后备链路。
- 把 Tika 输出当初稿,进入搜索/RAG 前还要做清洗、分块和权限绑定。
Tika 的价值是统一入口,但它不是魔法。把它当 parser 用,只能跑 demo;把它当 ingestion boundary 设计,才适合进入企业系统。