老板丢过来一个文件夹,“十分钟把里面的合同扫描件都转成可搜索PDF,顺便找出有‘保密条款’那几份。

”——如果还指望手动一个个点开 OCR……那就真的不用准点下班了。

今天不拐弯抹角,直接告知你一把真·救场神器:Apache Tika。
这货乍一看像个平平无奇的 JAR 包,实则内部塞满 50+ 解码器、1000多种格式识别器,外加一把 Tesseract 外挂。
一句话,你把文件丢给它,它会先认脸:是不是 PDF、PPT、DICOM 甚至HEIC,再用 Magic Number 秒判格式,不靠扩展名。
确认身份后,Tika就开始掏口袋:元数据、正文、图片里的文字,一个不剩。
最省心的是,输出统一成 Java 对象或直接吐 JSON,不用再写一串 if-else判断文件类型。
有人担心大文件吃内存?
实测在一条 500 页扫描合同里,加 `MetadataWriteFilter`把深度砍到一级节点,内存占用硬降四成;线程池一开,八核 CPU吃满,十分钟扫完上千份,老板端咖啡回来刚好收工。
新版的 3.x 更野:Markdown、YAML、JSON 全收编;直接给出 Docker镜像塞进 K8s,CI/CD 里顺手带过去,扩容就像点个回车。
至于安全,它加了个沙箱,恶意宏、CVE旧洞通通跑不出去,企业部署少挨安全部门一顿咆哮。
阿拉伯语、印地语、俄语 OCR 也补齐,跨国项目不用额外买商业 OCR授权,省下的经费够项目组再搓一顿海底捞。
一个小彩蛋:Tika 背后有个 200+ 贡献者的热闹社区,GitHub上半夜还有人回 issue。
上周刚推送的安全补丁,让旧项目瞬间脱险,感觉像白捡一次“续命”。
个人感受,Tika 最让人上头的不是“能做”,而是“做得够懒”:写二十行Spring Boot 就能跑文档解析服务,懒到连 OCR 语言包都在 Maven里自动拖回家。
如果非要挑刺,那就是上手文档有点迷宫感。
但记住三句话:
1. `tika-core` 只是探测器,真正干活的是 `tika-parsers`。
2. 用 `AutoDetectParser` 就行,不需要自己拼解析链,除非你闲。
3. 部署前先跑 `TIKA_SERVER=
/path/to/tika-server-3.x.jar` 看 OCR是否正常,把 TESSDATA_PREFIX 指对路径,省得中文识别全变框框。
真要用在生产,记得把解析结果按文件指纹扔 Redis,热点文件二次查询直接10ms 回包,用户体验堪比谷歌。
再把敏感词字典配成正则,合同里出现“保密”“机密”立刻高亮,法务部会以为你通宵学了NLP,实则只是提前把 Tika 的解析结果过一遍过滤器,就这么简单。
一句话总结:不想再被文件格式折磨,就把麻烦丢给Tika,剩下的时间,留给咖啡。
开源地址甩这儿,
https://github.com/apache/tika,顺手 star就当给未来的自己攒点人品。
