mcpField
P
pdfaudit

pdfaudit

本地服务
github.com/CloudCorpRecords生产力01 周前更新

关于 pdfaudit

pdfaudit 根据可机器检查的 PDF/UA 无障碍基础要求审查本地 PDF,并生成 JSON 报告。它适用于无需上传文档的审计,文件读取和检查均在本地完成,不访问网络。

主要功能

  1. 01检查标记和结构树
  2. 02验证语言和文档标题
  3. 03检查图像替代文本
  4. 04评估阅读顺序和辅助访问权限
  5. 05报告失败项和建议处理路线
  6. 06提供 CLI 和 MCP 服务

适用场景

  1. 01分发前审查 PDF
  2. 02查找缺失的无障碍元数据
  3. 03为扫描版或部分标记的 PDF 选择后续处理方式

MCP 相关

MCP 服务提供 `check_pdf_accessibility` 工具,接收本地 PDF 文件路径,并返回包含七项检查、失败项、处理路线和结论的 JSON 报告。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-pdfaudit": {
"command": "npx",
"args": [
"-y",
"@reneturcios/pdfaudit"
]
}
}
}
启动命令npx -y @reneturcios/pdfaudit

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

安装包
npm@reneturcios/pdfaudit0.1.0
ocighcr.io/cloudcorprecords/pdfaudit:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
file_pathstring是此调用的本地文件路径。

详细介绍

pdfaudit

有些 PDF 在屏幕上看起来没问题,但屏幕阅读器却无法使用:文本虽然存在,却没有任何信息说明阅读顺序;图像没有描述;文件甚至可能禁止提取辅助技术所依赖的内容。pdfaudit 会根据 PDF/UA 无障碍性的机器可检基本要求检查本地 PDF,并在 JSON 报告中准确列出检查结果,供调用方采取后续行动。文档绝不会上传——审计会读取磁盘上的文件,完全在本地运行,不会访问网络。

每份文档都会运行七项检查。文档必须带有标签(目录中包含 /MarkInfo 字典,且其中有 /Marked true),并且必须包含结构树(/StructTreeRoot)。必须设置语言(非空的 /Lang 条目),并且必须提供标题(信息字典中非空的 /Title;不会检查 XMP 元数据)。每张图像都必须能从带有替代文本的结构元素访问。必须能够确定阅读顺序,这需要结构树和至少一个结构元素。此外,文档不得禁止辅助功能访问:未加密的文档通过检查;加密文档只有在权限位允许为无障碍功能提取内容时才通过。

每项检查都会报告固定的 ID、名称、通过或失败状态,以及详细信息字符串。报告会统计失败数量,并选择下一步处理方案:没有失败时为 already-compliant;扫描文档(没有可提取的文本,但至少有一张图像)为 ocr;包含可提取文本但未加标签的数字 PDF 为 guaranteed;其他情况均为 repair——包括需要针对性修复的部分加标签或混合文档。一行判定结果会概述通过的检查数量、处理方案,以及任何失败检查的 ID。

审计采用刻意精简的 PDF 读取方式:扫描普通对象块以查找目录、信息字典、结构元素、图像对象和加密字典,并从 Tj 和 TJ 运算符中恢复文本,以辅助确定处理方案。对于无法通过这种方式读取的文件,程序会如实报告——文件不存在、没有 PDF 文件头,以及没有可用对象结构的文件,都会分别产生各自的错误,而不是给出误导性报告。

CLI

npx @reneturcios/pdfaudit check_pdf_accessibility '{"file_path": "/path/to/document.pdf"}'
npx @reneturcios/pdfaudit --version

报告以 JSON 格式打印:

{
  "filePath": "/path/to/document.pdf",
  "checks": [
    {
      "id": "tagged",
      "name": "Document is tagged",
      "passed": true,
      "detail": "MarkInfo/Marked is true"
    }
  ],
  "failed": 0,
  "route": "already-compliant",
  "verdict": "7/7 checks passed. Route: already-compliant."
}

(上面的示例缩写了 checks 列表;实际报告始终包含全部七项。)

退出代码:成功时为 0;运行时错误时为 1(包括无法解析 JSON 参数、文件不存在,或文件不是可审计的 PDF);用法错误时为 2。

MCP 服务

npx -y @reneturcios/pdfaudit mcp

MCP 客户端配置:

{
  "mcpServers": {
    "pdfaudit": {
      "command": "npx",
      "args": ["-y", "@reneturcios/pdfaudit", "mcp"]
    }
  }
}
工具
  • check_pdf_accessibility — 根据 PDF/UA 无障碍性的机器可检基本要求审计本地 PDF,并返回 JSON 报告。文档绝不会上传。

    • file_path(字符串,必填)— 本地 PDF 的路径

    返回一项文本内容,其中包含 JSON 报告;报告采用 2 个空格缩进美化打印,键按 filePath、checks、failed、route、verdict 的顺序排列。 checks 中的每个条目都按 id、name、passed、detail 的顺序包含这些字段。

Docker

docker run -i ghcr.io/cloudcorprecords/pdfaudit
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/pdfaudit check_pdf_accessibility '{"file_path": "/w/document.pdf"}'

开发

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

许可证

MIT — 版权所有 (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

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

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