mcpField
P
PDF Form Proof

PDF Form Proof

本地服务
github.com生产力02 天前更新

关于 PDF Form Proof

PDF Form Proof 用于填写 AcroForm PDF,并检查输入值是否显示在渲染页面上。它面向反复处理表单的组织和运营团队,通过 OCR 验证页面内容,而不只检查字段数据。

主要功能

  1. 01检查可填写字段及其值
  2. 02填写表单且不覆盖源文件
  3. 03通过 OCR 验证渲染后的值
  4. 04使用 SHA-256 生成文件指纹

适用场景

  1. 01填写重复使用的资助或供应商表单
  2. 02检查必填值是否显示在页面上
  3. 03提交前审核表单输出

MCP 相关

它向 MCP 客户端提供 PDF 检查、填写、验证和哈希工具。验证会渲染页面并通过 OCR 判断值是否可见。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"essencealignment-pdf-form-proof": {
"command": "uvx",
"args": [
"pdf-form-proof"
]
}
}
}
启动命令uvx pdf-form-proof

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

安装包
pypipdf-form-proof0.1.1

工具

4

收录的工具列表 · 更新于 6 天前

参数类型必填说明
pdf_pathstring是

详细介绍

pdf-form-proof

填写可填写的 PDF 表单,然后验证每个值确实显示在页面上。

mcp-name: io.github.EssenceAlignment/pdf-form-proof

PDF 可以在数据中保存某个值,但人们查看、打印或上传的页面上却什么也不显示,或者显示不全。大多数表单工具做到“字段已设置”就停止了。这个工具会继续验证:它会渲染页面,再通过 OCR(光学字符识别,即从图像中读取文字的软件)读取页面,并将识别结果与文件中存储的文本进行比较。每个值都会得到 VISIBLE、INVISIBLE、RENDER-ONLY 或 MISSING 判定。

它可作为 MCP 服务(MCP,即 Model Context Protocol,是一种让 Claude 等 AI 应用调用外部工具的插件标准)、Claude 插件、Gemini CLI 扩展,也可作为普通命令行工具使用。

功能

工具功能会修改文件吗?
pdf_form_inspect列出所有可填写字段:确切名称、类型、当前值、必填标记,以及用于勾选每个复选框或单选按钮的值否
pdf_form_fill按确切名称填写字段并写入新的 PDF。如果有任何名称不在表单中,就会拒绝整个填写操作。绝不会修改源文件,也不会覆盖现有文件。返回新文件的 SHA-256,并读取所有文本值以进行核验写入一个新文件
pdf_form_verify渲染页面、对其运行 OCR,并为每个值给出判定。可以将检查范围限制在页面的某个区域,避免页面其他位置出现的相同值导致验证通过否
pdf_sha256生成文件的 SHA-256 指纹,精确记录所生成的文件否

所有工具都带有 MCP 注解:四个工具均设置了 readOnlyHint 和 destructiveHint。

适用对象

适用于需要反复填写同一类官方 PDF 的任何人:小型非营利组织和社区组织(例如供应商表格,包括 IRS W-9、拨款和资助方表格、项目登记及同意书)、运营人员,以及希望 AI 助手填写表格时不会掩盖填写不完整或不可见问题的开发者。

安装

你需要 Python 3.10 或更高版本,以及 uv(https://docs.astral.sh/uv/)。验证工具还需要安装两个免费程序:

  • macOS:brew install poppler tesseract
  • Debian 或 Ubuntu:sudo apt install poppler-utils tesseract-ocr
Claude Desktop(MCP 服务)

将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "pdf-form-proof": {
      "command": "uvx",
      "args": ["pdf-form-proof"]
    }
  }
}

或者安装最新 GitHub 版本中的 .mcpb 文件:双击该文件,或前往 Settings > Extensions > Advanced settings > Install Extension。

Claude Code(插件)
claude plugin marketplace add EssenceAlignment/pdf-form-proof
claude plugin install pdf-form-proof@pdf-form-proof
Gemini CLI(扩展)
gemini extensions install https://github.com/EssenceAlignment/pdf-form-proof
命令行
uvx --from pdf-form-proof pdf-form-inspect form.pdf
uvx --from pdf-form-proof pdf-form-fill form.pdf filled.pdf values.json
uvx --from pdf-form-proof pdf-form-verify filled.pdf --require "Sample Community Food Bank"

values.json 将确切字段名称(来自 pdf-form-inspect)映射到对应的值:

{
  "topmostSubform[0].Page1[0].f1_01[0]": "Sample Community Food Bank",
  "topmostSubform[0].Page1[0].Boxes3a-b_ReadOrder[0].c1_1[0]": "/1"
}

文本字段接受字符串。复选框或单选按钮接受其某个开启状态值(由 inspect 显示,例如 "/1" 或 "/Yes"),也可以接受空字符串以清除选择。

退出代码:0 表示成功;1 表示发现问题(verify 发现某个值不可见,或填入的值无法读回);2 表示拒绝操作(字段名称未知、文件缺失、输出文件已存在,或 tesseract 等工具出错)。

示例

$ pdf-form-verify filled.pdf --require "Sample Community Food Bank" --require "Sample Pantry Program"
PDF FORM PROOF - legibility check  verdict: PASS
  file: filled.pdf  page 1 at 300 dpi  scope: whole page
  VALUE                       SOURCE    TEXT  RENDER  VERDICT
  Sample Community Food Bank  required  yes   yes     VISIBLE
  Sample Pantry Program       required  yes   yes     VISIBLE
  limit: legibility only; says nothing about whether values are correct

限制(请仔细阅读)

  • 仅支持 AcroForm 表单。检测到仅含 XFA 的表单(Adobe LiveCycle 动态表单)时会拒绝填写。
  • finalize 会移除 XFA 数据包和 NeedAppearances 标记,使查看器根据各自的外观流绘制这些值。它不会扁平化表单;字段仍可编辑。
  • 验证证明的是可读性,而非正确性。它无法判断某个值是否为表单要求的正确答案。
  • OCR 可能会误读较小、风格化或手写风格的字体。REFUSE 判定意味着“查看页面”,而不是“文件已损坏”。工具故障(缺少 poppler 或 tesseract、渲染错误)会报告为工具故障,绝不会作为文档问题报告。
  • 不会创建签名。inspect 会列出签名字段,但不会对其进行处理。
  • 此工具用于填写表单,不提供法律、税务、福利或其他专业建议,也不会决定任何字段应填写什么内容。

隐私政策

pdf-form-proof 完全在你的计算机上运行。

  • 数据收集:无。它只读取你指定的 PDF 文件,并且只写入你指定的输出路径。
  • 使用和存储:每张渲染后的页面图像都会写入 ~/.cache/pdf-form-proof 下的临时文件夹,并在 OCR 步骤完成后立即删除,包括步骤失败的情况。除非你使用 --keep-render 要求保留副本,否则不会有任何内容留在磁盘上。(0.1.0 版本会保留最后一张图像,直到下次运行;0.1.1 会在首次运行时删除任何此类遗留文件。)
  • 与第三方共享:无。它不会发起网络请求,也不会发送遥测数据。
  • 保留期限:除你创建的文件外,不会保留任何内容。
  • 联系方式:请在 https://github.com/EssenceAlignment/pdf-form-proof/issues 提交问题

起源

填充引擎和页面可见性检查是为生产文档工作流而开发的。当时,一份已填表单通过了所有基于文本的检查,却仍被退回,因为页面上看不到某个值。由此总结出两条规则:绝不隐藏未完成的填充;检查人们实际看到的页面,而不只检查文件中的数据。

作者

由 Eric Brakebill-Jones 构建,MSW 系统架构师 | 临床工作流与资助数据沿袭。 GitHub:https://github.com/EssenceAlignment

更改

  • 0.1.1:OCR 完成后立即删除渲染后的页面图像(在 0.1.0 中,该图像会保留到下次运行)。新增作者信息。
  • 0.1.0:首次发布。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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