钳窝PDF标准处理包
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,在 AI 助手中安装 @org-pyzzftrt/clawnest-pdf。
技能介绍
你要解决什么问题
PDF 在办公流程里是个矛盾体:它版式固定、跨平台一致,但一旦需要改动就变得很难处理。表单字段怎么找、字段值填到哪里、中文字体能不能正常渲染、扫描件里的文字能不能读出来,这些判断往往散落在不同的库和命令行工具里,工程师每次都要重新摸索一遍。
更麻烦的是安全边界。PDF 是典型的不可信输入格式,内嵌 JavaScript、附件、权限限制都可能造成问题。一个负责任的处理流程不应该顺手下载字体或运行时,也不应该在未经同意的情况下安装系统组件。
这个技能怎么工作
它采用最小依赖策略:优先复用运行环境里已有的 Python 库和命令行工具,不捆绑虚拟环境、字体、模型或系统二进制。工具选择有明确分工:
- 结构级操作(合并、拆分、旋转、加解密)交给
pypdf - 文本、表格、坐标提取用
pdfplumber,适合带文字层的 PDF - 创建 PDF 用
reportlab,中文内容必须显式指定本机可用字体 - 页面渲染为图片可用
pypdfium2或pdf2image(后者依赖 Poppler) - 优化、修复、权限处理用
qpdf,使用前确认系统已安装
表单处理是内置脚本的重点。流程分两条分支:先运行 check_fillable_fields.py 判断是否存在可填写字段。如果存在,就提取字段信息并准备字段值 JSON,再用 fill_fillable_fields.py 填写 AcroForm 字段;如果不存在,则提取文字、横线、复选框的结构,建立坐标 JSON,经 check_bounding_boxes.py 校验后调用 fill_pdf_form_with_annotations.py 通过 FreeText 注释填写。完成后必须把结果渲染成图片,检查文字是否越界、重叠或错位。
执行前会先确认输入文件、目标操作、页码范围、输出格式和是否允许覆盖,缺少依赖时会说明名称、用途、来源并征得同意。
适用边界与注意点
- 不猜测关键字段:姓名、证件号、金额、签名等信息缺失时必须先询问,不能用模型臆造
- 不覆盖原件:默认输出到新文件,用
_filled.pdf、_merged.pdf这类清晰后缀 - OCR 有风险:扫描件识别结果必须标注可能误识别,关键编号、金额、日期应人工复核
- 敏感文件谨慎:涉及合同、证件、财务文件时保留原件并提醒用户复核输出
- 不绕过限制:不处理未知密码,不移除用户无权处理的权限限制
- 不自动下载:字体、模型、运行时一律不自动获取
验证清单要求输出文件能正常打开、页数与顺序正确、文本和字段无丢失、坐标与中文显示正常,并且原始文件未被覆盖或损坏。
使用场景
- 收到一份只有横线和复选框、没有可填写字段的纸质表单,需要按用户给的信息在对应坐标位置写入文字并导出新PDF
- 需要把多份PDF报告按指定页码范围拆分,再按顺序合并成一份新文件,并确认页数与页面顺序正确
- 拿到一批扫描版合同或证件,页面没有文字层,需要渲染成图片识别文字,但金额、日期等关键字段留待人工复核
- 需要生成一份含中文内容的PDF,并确认本机字体的字形覆盖,以及Unicode上下标字符在段落中渲染正常
适合人员
- 需要批量填写政府表格或申报材料的行政人员,希望逐字段核对填写结果并保留原件
- 负责整合多部门PDF报告的后端工程师,需要一个不捆绑重依赖的脚本化处理方案
- 处理扫描合同与证件的法务或财务人员,关注敏感文件不被覆盖且关键字段可人工复核
- 在自动化流水线中嵌入表单检测与填写步骤的开发者,希望流程不会自动安装未知组件