该技能用于处理 PDF 的高风险或专业场景,与通用 PDF 技能形成边界。官方 Anthropic pdf 技能可用时,普通的创建、合并拆分、表单填写和 CLI(qpdf/pdftotext)工作应优先交给它;本技能专注于其独特领域:无障碍、真实脱敏及其证据门、元数据清理、pyHanko 签名、OCR/表格提取规范,以及 PyMuPDF/pdf-lib 的许可与维护风险。
主要能力与使用方式:
一、无障碍与合规:涉及 PDF/UA-1/UA-2 与 EAA(欧洲无障碍法)。应用 EAA 前需先界定产品/服务范围与各成员国落地法规,并核实所引用的协调标准是否支持官方公报中具体适用立法;仅引用另一指令下的 EN 301 549 不足以支撑合规。建议从支持结构化的源格式(DOCX/HTML 并正确导出)生成,而非对未打标签的 PDF 进行“事后修补”。
二、真实脱敏与证据门:黑色矩形或叠加层不等于脱敏。真实脱敏须删除内容字节,使用 PyMuPDF 的 page.add_redact_annot(rect) 后对每页执行 page.apply_redactions() 再保存。证据门要求针对所有可能泄露该值的表示形式进行验证:提取文本、搜索、复制粘贴、页面渲染、注释、表单字段、附件和元数据;用第二个解析器或查看器重新打开最终文件,搜索敏感词及其归一化变体,放大检查脱敏区域以发现叠加、位移文本和残字。若涉及 OCR,需同时测试可见图像和隐藏文本层。
三、元数据清理:元数据存在于多层——PDF 的 Info/XMP、文件系统日期、操作系统扩展属性,清理一层会遗留其他层。scrub_metadata.py 默认移除 Info/XMP 元数据、附件、JavaScript 和缩略图,并保留 OCR 文本层和链接(PyMuPDF 自带的 scrub() 会删除两者,本脚本仅在指定 --remove-hidden-text / --remove-links 时删除)。清理后建议用 exiftool -all -G1 检查残留的用户名、路径、工具标记和日期。macOS 上 --strip-xattrs 会清理输出属性,但受保护来源属性可能仍保留,此时会拒绝发布,需按主机策略单独验证。
四、签名与加密:使用 pyHanko 进行数字签名与验证。密码保护推荐 pypdf writer.encrypt(..., algorithm='AES-256')(安全处理程序 R6);省略 algorithm 会写入 RC4-128,必须显式传入;仅对特定旧版阅读器使用 AES-256-R5。权限标志仅为建议性,不构成安全机制。
五、提取与 OCR:先区分原生数字 PDF(可选文本)与扫描 PDF(图像),扫描件通常需 OCR。表格提取是概率性的:先用 pdfplumber 并对照源页抽检,仅在行列明显错误时升级到 Camelot,且须检查其每表准确率分数,不可盲信输出。确定性操作(合并/拆分/旋转/清理)优先使用脚本。
六、脚本与退出码:
python3 scripts/merge_pdfs.py merged.pdf a.pdf b.pdf python3 scripts/split_pdf.py in.pdf out_dir --each-page python3 scripts/rotate_pdf.py in.pdf out.pdf --degrees 90 python3 scripts/scrub_metadata.py in.pdf out.pdf python3 scripts/scrub_metadata.py in.pdf out.pdf --filesystem-date <publication-date> --strip-xattrs python3 scripts/test_scrub_metadata.py
输入错误以非零退出,argparse 用法错误退出码为 2。scrub_metadata.py 在清理或所请求文件系统操作失败时退出码为 1,并在 stderr 输出错误;它先在目标旁暂存输出,全部成功后才替换,失败时保留原有目标文件。输入与输出必须不同。其他平台仅支持访问/修改时间并拒绝 --strip-xattrs。
适用场景:需要 PDF/UA 无障碍合规、真实脱敏、元数据全面清理、数字签名、扫描件 OCR 或复杂表格提取的工作流。
限制与风险:PyMuPDF/fitz 为 AGPL-3.0/商业双许可,用于闭源产品或 SaaS 后端前需评估 AGPL 网络使用条款可能触发的源码披露义务,或向 Artifex 购买商业许可,或用 pypdf/pdfplumber 替代重叠功能。pdf-lib(Node)依赖前需检查上游发布活跃度,若停滞且需持续修复,应评估维护良好的分支并锁定依赖版本。不得将文件或元数据日期回填以伪造记录创建时间。金融或法律文档的表格输出未经人工视觉抽检或准确率核验不可信任。