用途:在智能体日常工作流中逐个读取文件,将几乎任意格式转成可读的 Markdown 与元数据。适合 .docx/.xlsx/.pptx、邮件(.eml、.msg)及其附件、压缩包、内嵌内容、元数据、OCR,以及约 1000 种其他工具打不开的长尾格式。若宿主环境已能原生读取 PDF、图片的可见文本,则不必使用。
要求:Tika 4.x 需要 Java 17+。无 Java 17 时可改用 Docker(docker run apache/tika:latest-full),或经用户同意后安装用户级 Temurin JRE,不静默安装软件。3.x 默认输出 XHTML 而非 Markdown。
用法:两种入口。tika-app(CLI)零配置、每次调用有约 1 秒 JVM 启动开销,适合少量文件;tika-server(curl)是常驻进程,适合同一会话读取大量文件。默认用 -J(app)或 /rmeta(server)解析单个文件:java -jar tika-app.jar -J document.pdf,或 curl -T document.pdf http://localhost:9998/rmeta,返回 JSON 数组,条目 0 为文档本身,其后为内嵌项,读取 tk:content 字段。仅需正文时可用 /rmeta/text 或 -J -t。提取内嵌文件用 /unpack 或 -z/-Z 与 --extract-dir。纯文本拼接用 /tika 或 -t,但无法看到解析异常。仅取元数据用 -j 或 /meta;检测类型用 -d 或 /detect;语言用 -l 或 /language。批量处理用 Tika Pipes:java -jar tika-app.jar -i 输入目录 -o 输出目录。
限制:扫描件与图片需 OCR,依赖宿主机安装 Tesseract,否则无回退;官方 -full Docker 镜像内置 Tesseract。解析不可信文件应在 tika-server 或 -f/--fork 隔离进程中进行,库内进程解析有安全风险。应对输出加以节制,重定向到文件后再按需读取,避免刷满上下文。错误处理:429 为连接池饱和,应退避重试;503 表示该次解析失败;/tika 的 422 表示容器致命异常,可恢复问题会返回 200 但内容静默截断,只有 /rmeta 通过 tk:exception:* 暴露。批量场景不建议用本技能逐个调用。