关于 pdffr
pdffr-mcp 是供 Agent 和其他 MCP 客户端使用的本地 PDF 转 Markdown 服务。它优先读取字形几何信息,仅对页面中无法解释的内容运行设备端 OCR,让文档留在本机。
主要功能
- 01PDF 转 Markdown
- 02基于几何信息提取文本
- 03对未解释内容运行设备端 OCR
- 04提取 PDF 标题大纲
- 05以 JSON 返回表格
适用场景
- 01提取原生数字 PDF 的文本
- 02通过 OCR 读取扫描页面
- 03选定页面前查看文档标题
- 04获取 PDF 表格以进行结构化处理
MCP 相关
向 MCP 客户端提供 PDF 转换、大纲和表格工具。输入可使用文件路径、URL 或 base64 数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ocr | boolean | 否 | 将文本层无法解释的墨迹交由设备端 OCR 处理(默认 true) |
| url | string | 否 | 要获取的 PDF URL |
| lang | string | 否 | 用于 OCR 的 Tesseract 语言,例如 'eng'、'deu'、'eng+ara'(默认 'eng') |
| path | string | 否 | 此设备上的 PDF 路径 |
| pages | string | 否 | 页面选择,例如 '1-3,7'(默认全部) |
| base64 | string | 否 | 经过 base64 编码的原始 PDF 字节 |
| maxChars | integer | 否 | 将 Markdown 截断至此字符数(默认 200000) |
详细介绍
pdffr-mcp
一个 MCP 服务,为任何 Agent——Claude Desktop、Claude Code、Cursor、Windsurf、Zed 或你自己的 Agent——提供本地、私密的 PDF → Markdown 工具,底层由 pdffr 驱动。数字原生页面可通过字形几何信息在毫秒内反编译;只有当文本层无法解释墨迹时,才会在设备上进行 OCR,处理扫描件和屏幕截图。所有内容都不会离开设备。
安装
Claude Desktop / Claude Code / Cursor / Windsurf——添加到 MCP 配置中:
{
"mcpServers": {
"pdffr": {
"command": "npx",
"args": ["-y", "pdffr-mcp"]
}
}
}
Claude Code 单行命令:
claude mcp add pdffr -- npx -y pdffr-mcp
需要 Node 20+。首次运行时,会将所请求语言的 OCR 模型(默认为英语)下载到操作系统临时目录。
工具
pdf_to_markdown
将 PDF 反编译为 Markdown。提供 path、url 或 base64 其中之一。
| 参数 | 类型 | 说明 |
|---|---|---|
path | string | 绝对或相对文件路径 |
url | string | 通过服务的网络访问权限获取 |
base64 | string | 原始 PDF 字节 |
pages | string | 例如 "1-3,7";默认全部页面 |
ocr | boolean | 对无法解释的墨迹启用 OCR(默认为 true) |
lang | string | tesseract 语言,例如 "deu"、"eng+ara"(默认为 "eng") |
maxChars | number | 截断结果(默认 200 000)——响应会说明是否进行了截断 |
返回 Markdown,后附一行统计信息(页数、耗时、OCR 区域数)。
pdf_outline
仅返回标题——级别、文本和页码——让 Agent 在读取页面前决定要读取哪些页面。同样的输入(path / url / base64、ocr、lang)。
pdf_tables
将所有表格以 JSON 行的形式返回([{ page, rows: string[][] }])。输入相同。
为什么不使用视觉模型
PDF 已经记录了每个字形的位置。pdffr 直接读取这些几何信息,只对文本层无法解释的像素进行 OCR,因此一份 30 页的报告不到一秒就能返回,扫描版发票也只需几秒——无需 API 密钥,也无需上传。请参阅架构说明。
MIT © Amer Sarhan
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。