在 Claude 里「读文档」这件事,我测了 5 个 MCP 工具

37 阅读6分钟

在 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 解析结果(片段):

# MinerU: An Open-Source Solution for Precise Document Content Extraction ## 3. Method ### 3.1 Layout Detection Given input document image <equation>I \in \mathbb{R}^{H \times W \times 3}</equation>, our layout detector outputs bounding boxes <equation>\{b_i\}</equation> with category labels <equation>\{c_i\}</equation>... <equation>\mathcal{L}_{det} = \lambda_1 \mathcal{L}_{cls} + \lambda_2 \mathcal{L}_{reg}</equation>

公式完整还原为 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年Q1财务报告\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 时代依然成立。


相关项目地址