在 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 时代依然成立。

相关项目地址

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐