mcpField
P
pdf-extract-mcp

pdf-extract-mcp

本地服务
github.com/diyaluo金融数据02 周前更新

关于 pdf-extract-mcp

pdf-extract-mcp 是从发票、银行对账单等带文本层的数字 PDF 中提取表格和文本的 MCP 服务。它适用于需要 CSV、JSON 或 Excel 结构化输出的流程,并默认自动脱敏个人信息;扫描版 PDF 会被拒绝。

主要功能

  1. 01提取数字 PDF 中的表格和文本
  2. 02接受 Base64 数据或 PDF URL
  3. 03导出 CSV、JSON 或 XLSX
  4. 04使用三种策略检测表格
  5. 05默认脱敏个人信息
  6. 06拒绝扫描版或纯图像 PDF

适用场景

  1. 01将银行对账单表格转为 CSV
  2. 02将发票数据整理为 JSON 或 Excel
  3. 03以已屏蔽标识信息的形式共享提取数据

MCP 相关

它提供 `extract_pdf` PDF 提取工具,以及用于查看服务状态和免费额度的 `health` 工具。支持本地 stdio 或远程 streamable HTTP 运行。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"diyaluo-pdf-extract": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/diyaluo/pdf-extract-mcp:v0.3.0"
]
}
}
}
启动命令docker run -i --rm ghcr.io/diyaluo/pdf-extract-mcp:v0.3.0

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/diyaluo/pdf-extract-mcp:v0.3.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

pdf-extract-mcp

一个 Model Context Protocol(MCP)服务,可从数字版(带文本层)PDF(银行对账单、发票、账单)中提取表格和文本,并输出为 CSV / JSON / Excel,同时自动脱敏 PII。

属于 invoice-extractor 产品的一部分。此软件包是 MCP 的分发渠道(“生态系统寄生者”:一个后端,多种宿主工作流)。Web 演示位于父项目中。

功能

  • extract_pdf — 上传数字版 PDF(base64 或 URL),获取结构化表格行,格式为 CSV / JSON 记录 / XLSX。
  • health — 服务状态和免费层限制。

表格检测会对每一页尝试三种策略:带线条的表格 → 根据表头行自身的 x 坐标推断显式列(适用于没有网格线的对账单 PDF,这是西方银行的常见情况)→ 通用文本对齐。

PII 脱敏(默认启用)涵盖:

地区脱敏内容
美国 / 国际SSN、EIN/TIN、IBAN、SWIFT/BIC、routing/ABA、账号、卡号(纯数字和 4111 1111 1111 1111 / 带连字符的格式)、美国及国际电话号码、电子邮件
中国18/15 位身份证号、手机号、银行卡、USCC(统一社会信用代码)、护照、2–3 字个人姓名、组织关键词

对于可能存在歧义的纯数字银行标识符(routing/账号/sort code),仅当其前面跟有标签时才会脱敏,因此参考编号和金额仍可读。金额、日期和描述绝不会被修改。

扫描版 / 纯图像 PDF 会被明确拒绝(SCANNED_PDF_UNSUPPORTED)——免费层仅支持数字版 PDF(OCR 是付费层的候选功能)。

限制(免费层)

  • 每个客户端每滚动 30 天 100 页(匿名,以客户端哈希为键)。
  • 每个文件 50 MB。
  • 超出配额时,工具会返回结构化的 QUOTA_EXCEEDED 响应,并附带内联升级链接。绝不会在无提示的情况下扣费。
  • 设置 PDF_EXTRACT_API_KEY 为付费密钥即可绕过配额(计费网关属于 P1 项目;当前免费层尚未发放付费密钥)。

运行(本地 stdio — Claude Desktop / Cursor / 任意 MCP 客户端)

pip install -e .
pdf-extract-mcp

客户端配置示例:

{
  "mcpServers": {
    "pdf-extract": {
      "command": "pdf-extract-mcp",
      "env": {}
    }
  }
}

运行(远程 streamable-http,适用于托管的 MCP 客户端)

REMOTE_TRANSPORT=http MCP_HOST=127.0.0.1 MCP_PORT=5060 \
  python -m pdf_extract_mcp.server
# POST JSON-RPC to http://127.0.0.1:5061/mcp

工具架构

extract_pdf(
  pdf_base64: str | None,     # preferred: PDF bytes as base64
  pdf_url:    str | None,     # alternative: direct https .pdf URL
  output:     "csv"|"json"|"xlsx",   # default csv
  redact_pii: bool = true,
  api_key:    str | None,    # paid key, optional
) -> {
  ok, type: "tables"|"text", pages, tables, rows, columns,
  csv | rows_json | xlsx_base64,   # depends on output
  elapsed_ms
}

遥测

每次调用都会追加到 ~/.cache/pdf-extract-mcp/mcp_usage.jsonl(尽力而为,不会阻塞提取;可通过 PDF_EXTRACT_STATE_DIR 修改路径)。客户端以加盐哈希记录;绝不会记录 PDF 内容或 PII。

注意:由于这是分发的 stdio 软件包,该文件位于用户的机器上,因此发布者无法读取。实际外部使用情况可通过托管注册表的所有者 API 获取(Smithery 上的 GET /servers/{namespace}/{name}/logs 会返回调用次数)。

技术栈

mcp >= 1.2(兼容 mcp 1.x FastMCP 和 mcp 2.x MCPServer)、pdfplumber、openpyxl。pandas 是可选项——如果缺少该依赖,软件包会回退到轻量级的行列表格(使用标准库 CSV/JSON 和 openpyxl),从而缩小可分发软件包的体积。Python 3.10+。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。