项目详情

Apache Tika

一个接口吃下 1000+ 种文件格式的「解析瑞士军刀」,搜索引擎和 RAG 管线的无名英雄

apache/tika Apache-2.0 Java 17+ 1000+ 格式 4.1k★

更新于 2026-08-21 · 稳定版 3.3.2 / 4.0.0-beta-1

← 返回汇总
项目速览

一句话定位

别为每种格式写一个解析器——Tika 替你写完了 1000 种

Apache 基金会顶级项目(前身是 Lucene 子项目)。单一 API 完成检测(这是什么文件)+ 元数据提取 + 正文提取,覆盖 Office、PDF、邮件、压缩包、音视频、图像等上千种格式。4.x 起默认输出 Markdown、fork 进程隔离防崩溃、内置 VLM 解析器兜底——明确面向 LLM / RAG / Agent 管线。

项目速览

核心数据

1000+
支持格式
15+
年历史(2007 至今)
10.7k
Commits
30+
Maven 模块

ASF 顶级项目 · 官方发布线:4.x(beta)为最新特性线,3.3.2(2026-07)为稳定线,2.x 已于 2025 年 EOL。

项目速览

十五年演进:从 Lucene 子项目到 LLM 管线

为什么存在

解决什么问题

格式地狱

docx/xlsx/pptx/eml/msg/zip/七种 PDF/三种图像元数据……每接一种格式就是一轮 POI/PDFBox/自研解析器的坑。Tika 一层 API 全盖掉。

检测先于解析

上传的文件说自己是 pdf 未必是 pdf。Tika 用文件名 + 魔数 + 容器嗅探三级检测定MediaType,再派发给正确解析器。

恶意文档防御

解析器面对的是不可信输入。Tika 官方安全模型直言「进程内解析无法做到防 DoS」,于是 4.x 把解析搬进 fork 的子进程——崩的是 fork,不是你的服务。

架构

分层架构:core 极薄,parsers 可插拔

L1 · 核心(无依赖)
tika-core
检测引擎 + Tika/TikaConfig 门面 API。几百 KB,不拖任何解析器。
L2 · 解析器
tika-parsers-*
standard / modular 模块组。每种格式一个 Parser 实现(PDF 走 PDFBox,Office 走 POI,图像走 metadata-extractor…),SPI 自动发现。
L3 · 交付形态
app / server / grpc / pipes
CLI、REST server、gRPC、以及面向大规模批量的 tika-pipes(fork 进程隔离 + 统一超时模型 + pf4j 插件)。
L4 · 横切能力
detectors / langdetect / translate / ml / eval
编码检测、语言识别、翻译、VLM 解析器接入(Claude/Gemini/OpenAI)、解析质量评估 tika-eval、元数据 schema。
核心机制

三级检测链:Tika 的看家本领

文件名/扩展名→ 魔数匹配(magic bytes)→ 容器嗅探(开箱看内部)→ MediaType + 置信度

想亲手玩一遍这条检测链?下一页有浏览器版 Playground,拖任意文件即时出结果。

在线体验

浏览器里跑一遍 Tika 式检测链

拖入任意文件,看魔数匹配、容器嗅探、文本编码启发式逐级给出判定——正是 Tika 检测引擎的决策过程。纯本地运行,文件不上传。

打开文件类型检测 Playground →
4.0 新特性 · 一

默认 Markdown 输出,为 Agent 而来

# 4.x 的 CLI 默认就是 Markdown(3.x 默认纯文本)
java -jar tika-app-4.x.jar document.docx   # → Markdown
java -jar tika-app-4.x.jar --text doc.pdf # → 纯文本
java -jar tika-app-4.x.jar -J doc.pdf      # → 结构化 JSON:元数据 + 正文
#                                  且递归提取所有嵌入附件
4.0 新特性 · 二

崩溃隔离 + VLM 兜底:把「不能读」变成「读得懂」

Fork 进程隔离

恶意 PDF 触发 PDFBox 死循环?崩掉的是 fork 出来的解析进程,主服务无感。配套统一超时模型,大规模场景由 tika-pipes 编排。这是官方安全模型的正解——「进程内解析无法防 DoS」。

VLM 解析器

OCR 也读不了的(手写、复杂表格嵌图、扫描质量差)交给视觉语言模型:Claude / Gemini / OpenAI 三家开箱可选,作为解析链的最后一级兜底。

结构化解析→ OCR(Tesseract)→ VLM(Claude/Gemini/OpenAI)→ Markdown

逐级降级:能规则解析的不上 OCR,能 OCR 的不烧 VLM token。另有可复现构建——同源码同 JDK 字节级一致。

工程化

五种交付形态

形态模块适合要点
Java APItika-core + parsers嵌入应用3 行代码起步,依赖可裁剪
CLItika-app脚本 / 临时任务4.x 起为 runnable zip(薄 launcher + lib/)
RESTtika-server多语言调用不安全端点默认关闭,需显式 enableUnsecureFeatures=true
gRPCtika-grpc高性能内网服务跨语言强类型接口
Pipestika-pipes海量批量 / 不可信文档fork 隔离 + 统一超时 + pf4j 插件扩展
快速上手

三行 Java,一条命令

// Java:检测 + 抽正文
import org.apache.tika.Tika;

Tika tika = new Tika();
String text = tika.parseToString(
    new File("document.docx"));
System.out.println(text);

Maven 引 tika-parsers-standard-package,版本对齐用 tika-bom。

# CLI:解压 zip 后进入目录运行
$ java -jar tika-app-4.x.jar doc.pdf

# 输出 Markdown,附元数据
title: 季度报告
author: …

# 第一节
正文内容…

注意:jar 是薄启动器,必须带着相邻的 lib/ 目录跑,单独拷 jar 会 NoClassDefFoundError。

适用场景

谁在用它

横向对比

横评打分:Tika vs pdf-inspector(满分 10)

维度Tikapdf-inspector
格式覆盖广度 10 2
成熟度 / 稳定性 9.5 5.5
安全性(恶意文档) 9.5 6
OCR 能力 9 7
社区 / 生态 8.5 7.5
文档质量 8.5 7.5
Markdown / LLM 输出 7 9
集成便捷性 6.5 9
PDF 文本提取质量 6 9
表格还原 4 8.5
速度 / 性能 5 9.5
简单平均7.67.3

绿条 = 该维度胜者。Tika 赢在「广与稳」,pdf-inspector 赢在「深与快」——不是替代关系。

横向对比

按场景加权,答案完全相反

纯 PDF / 低延迟场景

权重 = 提取质量×3 + 速度×3 + 广度×0.5:
pdf-inspector ≈ 8.8  vs  Tika ≈ 5.9
RAG 入库、批量 PDF 归一化、浏览器端解析——选 Rust 那个。

企业通用 / 不可信文档

权重 = 广度×3 + 安全×3 + 成熟度×2:
Tika ≈ 9.2  vs  pdf-inspector ≈ 4.9
任意格式上传入口、邮件网关、恶意样本分析——选 Apache 那个。

互补架构才是正解:pdf-inspector 做路由(54% 原生文本 PDF 本地秒解),Tika 吃掉其余全部格式,扫描页交给 OCR / VLM。

任意文件输入→ PDF?→ pdf-inspector 路由→ 非 PDF → Tika 解析→ 扫描页 → OCR/VLM→ Markdown
风险提示

需要警惕

潜力评估

未来空间

LLM 应用越普及,「把任意真实文件变成模型能吃的文本」的需求越刚性。Tika 用 15 年积累的 1000+ 格式覆盖 + 4.x 的 Agent 原生改造(Markdown 默认、fork 隔离、VLM 兜底、官方 Skills),把自己从「搜索时代基建」重新拉回 LLM 时代主航道。

评分
8.0 / 10 · 状态:tracking
一句话带走
别的解析器做深一种格式,Tika 做宽所有格式。

上一个
Pi-Mono
下一个
Cloudflare OS
1 / 17