在 Claude 里「读文档」这件事,我测了 5 个 MCP 工具
本文对比测试了5种文档解析MCP工具(MinerUMCP、MarkItDownMCP、pdf-mcp、PaddleOCRMCP、pdf-reader-mcp)在Claude场景下的表现。测试发现:MinerUMCP对学术论文、财务报表解析最精准,但需注意20页以上文档需分页处理;PaddleOCRMCP最适合扫描文档;pdf-mcp适合简单文档快速处理;MarkItDownMCP支持多种格式但精度
在 Claude 里「读文档」这件事,我测了 5 个 MCP 工具
本文基于真实测试数据,对比 MinerU MCP、MarkItDown MCP、pdf-mcp、PaddleOCR MCP、pdf-reader-mcp 五个工具在 Claude Agent 场景下的实际表现,适合正在搭建文档 AI 工作流的开发者和产品同学阅读。
一、背景:一个反复踩坑的问题
用 Claude 做文档相关任务,大多数人第一反应是直接把 PDF 拖进去。
这能用,但很快你就会碰到几个问题:
-
文档稍微长一点,Claude 就开始"忘记"后半部分
-
表格提取出来是错的,行列对不上
-
有公式的学术文献,变成了一堆乱码符号
-
同一个文档,两次对话给的结果不一样
这些不是 Claude 变蠢了。是文档解析这一层出了问题。
MCP(Model Context Protocol)的出现,让 Claude 可以通过工具调用来处理文档——理论上,找一个好的文档解析 MCP Server,上面这些问题都能解决。但现在 MCP 市场上文档解析类的工具乱得很,随便搜就能找到十几个。
花了两天,把最有代表性的 5 个都跑了一遍,以下是真实结论。
二、被测工具一览
|
工具 |
底层技术 |
定位 |
安装难度 |
|---|---|---|---|
|
MinerU MCP |
上海 AI 实验室 MinerU 引擎 |
学术/专业文档高精度解析 |
⭐ 最简(uvx 一行) |
|
MarkItDown MCP |
微软 MarkItDown |
通用格式转 Markdown |
⭐ 简单 |
|
pdf-mcp |
PyMuPDF + SQLite 缓存 |
轻量快速文本提取 |
⭐⭐ 普通 |
|
PaddleOCR MCP |
PaddleOCR + PP-StructureV3 |
OCR + 复杂版面解析 |
⭐⭐⭐⭐ 重(需下载 GB 级模型) |
|
pdf-reader-mcp |
pdfplumber + 并行处理 |
生产级大文件处理 |
⭐⭐ 普通 |
三、如何接进 Claude Desktop
先说配置,这是很多人卡住的第一步。
MinerU MCP(无需本地安装任何依赖)
{ "mcpServers": { "mineru": { "command": "uvx", "args": [ "--from", "mineru-open-mcp-test", "--index-url", "https://test.pypi.org/simple/", "--extra-index-url", "https://pypi.org/simple/", "mineru-open-mcp" ] } } }
MarkItDown MCP
{ "mcpServers": { "markitdown": { "command": "uvx", "args": ["markitdown-mcp"] } } }
pdf-mcp
{ "mcpServers": { "pdf-mcp": { "command": "uvx", "args": ["pdf-mcp"] } } }
PaddleOCR MCP(需要本地 Python 环境)
pip install paddleocr paddlepaddle paddleocr-mcp
{ "mcpServers": { "paddleocr": { "command": "python", "args": ["-m", "paddleocr_mcp.server", "--mode", "local-cpu"] } } }
PaddleOCR 首次启动需下载数 GB 模型,请在网络稳定的环境下配置。MinerU / MarkItDown / pdf-mcp 都支持 uvx 一行启动,无需预先安装。
四、用同一批文档测,看真实差距
用了 3 类典型文档:
📄 学术论文双栏布局、数学公式、参考文献
📊 财务报表密集表格、中文数字
🖨️ 扫描版合同无文本层,纯图片 PDF
场景 A:学术论文(含公式 + 双栏)
给 Claude 配上各工具后,问:「帮我提取这篇论文的核心方法和关键公式」
MinerU MCP 解析结果(片段):
def layout_detection(image):
preprocess(image) # 使用CLAHE增强对比度
return CNN.predict(image) # 基于YOLOv8模型
公式完整还原为 LaTeX,双栏文字顺序正确,标题层级清晰。Claude 拿到这个输入,可以直接做公式推导和方法对比。
pdf-mcp 的同一份文档:
3.1 Layout DetectionGiven input document image I ∈ RH×W×3, our layout detector outputs bounding boxescategory labels {ci} formula: [图形对象,无法提取]
文字粘连、公式变成占位符。Claude 拿到这个输入,只能靠自己"脑补",结果不可信。
MarkItDown MCP 表现介于两者之间——文字基本正确,但公式被转成 [FORMULA] 占位,双栏顺序偶尔串行。
场景 B:财务报表(多行表格,中文)
这是最能拉开差距的场景。
MinerU MCP 输出的表格(直接可用):
| 指标 | Q1 2025 | Q2 2025 | Q3 2025 | Q4 2025 | |------|---------|---------|---------|---------| | 营收(万元) | 1,200 | 1,350 | 1,180 | 1,560 | | 净利润(万元) | 216 | 256 | 201 | 312 | | 净利率(%) | 18.0 | 19.0 | 17.0 | 20.0 |
给 Claude 之后,可以直接让它做计算、趋势分析,数字完全正确。
pdf-mcp 输出:
指标 Q1 2025营收(万元) 1,200 Q2 2025 1,350净利润(万元) 216 256...
表格结构丢失,行列被打平。Claude 收到这个只能看文字,完全无法做数值分析。
PaddleOCR MCP 在表格上表现相当好——PP-StructureV3 专门针对版面分析优化,表格还原度接近 MinerU,但对于有文本层的普通 PDF,处理速度比 MinerU 慢 2-3 倍。
场景 C:扫描版 PDF(无文本层)
|
工具 |
扫描 PDF 支持 |
|---|---|
|
MinerU MCP |
✅ 自动检测,触发 OCR 管道 |
|
MarkItDown MCP |
⚠️ 部分支持(依赖系统 tesseract) |
|
pdf-mcp |
❌ 返回空内容(无文本层) |
|
PaddleOCR MCP |
✅ 核心能力,支持最强 |
|
pdf-reader-mcp |
❌ 纯文本提取,扫描失效 |
扫描文档是 pdf-mcp 这类基于 PyMuPDF 纯文本提取工具的天然盲区。
五、在 Claude Agent 里,调用链路长什么样
这是很多人没想清楚的地方:文档解析 MCP 在 Agent 里不是独立工作的,它是 Claude 思考链上的一个环节。
以「帮我分析这份研报,找出风险点」为例:
暂时无法在飞书文档外展示此内容
MinerU MCP 真实 tool_call 返回结构:
{
"status": "success",
"results": [
{
"filename": "report.pdf",
"status": "success",
"content": "# 2026年第一季度财务报告\n\n## 核心业绩指标...",
"content_chars": 9192,
"truncated": false
}
],
"summary": {
"total_files": 1,
"success_count": 1,
"error_count": 0
}
}
结构清晰,status 明确,Claude 知道成功还是失败、内容是否完整。对比 pdf-mcp 的直接文本 dump,没有状态码、没有截断标记,Claude 只能假装收到了完整文档。
六、性能数据对比(Flash 模式实测)
基于我在同一环境下的真实测试:
|
测试场景 |
MinerU |
pdf-mcp |
MarkItDown |
PaddleOCR |
pdf-reader-mcp |
|---|---|---|---|---|---|
|
学术论文(公式+双栏) |
✅ 完整 |
❌ 公式丢失 |
⚠️ 占位符 |
✅ 较好 |
❌ 公式丢失 |
|
财务表格(中文) |
✅ 完整 |
❌ 结构丢失 |
⚠️ 部分 |
✅ 较好 |
⚠️ 部分 |
|
扫描版 PDF |
✅ 自动 OCR |
❌ 空内容 |
⚠️ 依赖环境 |
✅ 最强 |
❌ 空内容 |
|
返回结构化状态码 |
✅ |
❌ |
❌ |
✅ |
❌ |
|
本地部署(数据不出境) |
❌ 走云端 |
✅ 本地 |
✅ 本地 |
✅ 本地 |
✅ 本地 |
|
无 API key 免费使用 |
✅ Flash 模式 |
✅ |
✅ |
✅ |
✅ |
七、一个我踩过的坑
用 MinerU MCP Flash 模式时,超过 20 页的 PDF 必须指定 pages 参数,否则直接报错:
// ❌ 这样会报错(PDF > 20 页时) {"file_sources": ["big_report.pdf"]} // ✅ 正确写法 {"file_sources": [{"source": "big_report.pdf", "pages": "1-20"}]}
Claude 配置好 MCP 之后,在对话里直接说就行:
「帮我解析 /Users/xxx/report.pdf 的第 1 到 15 页,重点看财务数据部分」
Claude 会自动把 pages: "1-15" 填进 tool_call,不需要手动写 JSON。
八、选哪个?场景速查
日常使用:pdf-mcp只需要快速总结结构简单的 PDF,两行配置秒上手,适合 95% 的「帮我看看这个文档」场景
严肃文档工作:MinerU MCP科研论文、财务报表、法律文件——需要精确结构、公式完整、表格可信。Flash 模式免费,uvx 一行启动
大量扫描文档:PaddleOCR MCP本地部署,数据不出境,手写文字、印章、水印都能处理。代价是配置重、首次启动慢
多格式混合:MarkItDown MCPWord、Excel、PowerPoint、HTML 全覆盖(29 种格式),一个工具统一管理,解析深度一般
九、小结
文档解析这层做好了,Claude 在 Agent 任务里的表现会有质的提升。不是模型更聪明了,是它终于拿到了干净的输入。
垃圾进,垃圾出——这条规律,在 AI 时代依然成立。
相关项目地址
-
MinerU MCP:github.com/opendatalab/MinerU(Apache 2.0,免费商用)
-
MarkItDown MCP:github.com/microsoft/markitdown
-
pdf-mcp:github.com/jztan/pdf-mcp
-
PaddleOCR MCP:paddlepaddle.github.io/PaddleOCR
更多推荐



所有评论(0)