PDF 表单文本替换技能
在可填写 PDF 表单的字段值中查找并替换文本,全程本地运行,无需上传云端。
脚本仅读写用户指定的PDF文件,无网络、无凭证访问、无隐蔽行为,最小权限原则基本满足,数据流透明。扣分点:无明确的用户确认/预览机制(直接覆写字段值)、无回滚说明、输出覆盖风险未提示、发布者身份未验证。
脚本逻辑自洽:参数校验、输入文件存在性、输出目录检查、表单字段缺失提示、未找到匹配时的反馈都具备,失败路径有可读错误信息并以退出码区分。扣分点:静态评审无法执行验证,仓库无针对该技能的测试用例,未处理非字符串字段值、加密PDF、部分写入失败等边界情况。
适用场景清晰(可填写PDF表单字段中的文本替换),frontmatter触发描述具体,限制项明确声明(不支持扁平化/扫描件、区分大小写)。扣分点:无中文支持说明;硬编码 /app/uploads 路径绑定特定容器环境,脱离该环境的触发与可用性未说明;触发边界(如整份静态文本替换需求会误触发)未说明。
结构清晰(SKILL.md + scripts),依赖说明明确(pypdf,见仓库requirements.txt),限制与错误处理章节完整,仓库有Apache-2.0许可。扣分点:技能自身无版本号/变更记录、无FAQ/示例输出、维护责任与更新路径仅在仓库层面间接体现,示例路径为容器内部路径对直接使用者是隐藏假设。
核心任务(替换可填写PDF表单字段中的文本并保留表单结构)目标明确,输出为直接可用的新PDF并报告修改字段数,相对手动编辑Acrobat有边际价值。扣分点:静态评审无法确认实际输出正确性(如复选框/特殊字段类型的处理),声称'保留所有字段'与'批量更新'均未经执行验证。
有可审计的一手材料:完整脚本源码、SKILL.md、依赖清单,声明与实现基本可对照。扣分点:无测试、无CI测试覆盖该技能、无独立执行证据或第三方佐证,'修改N个字段'等行为声明只能靠阅读推断,故仅给低分(静态上限内取偏低值)。
- 本评审为静态源码阅读,未执行脚本,所有行为声明均未经独立验证。
- 示例命令使用容器内部路径 /app/uploads,脱离该容器环境运行时需自行替换为本地路径。
- 技能直接覆写PDF表单字段值且无预览/确认机制,建议在副本上操作并自行核对输出;输出路径若已存在同名文件将被覆盖,无回滚保障。
- 搜索区分大小写且仅作用于表单字段值,对扫描件或扁平化PDF无效;依赖pypdf版本行为,加密PDF路径未处理。
- 发布者身份未经FollowSkills企业注册表验证;仓库README称macOS/Apple容器沙箱,而技能路径为Docker风格路径,部署环境差异需注意。
这个 Skill 能做什么,适合哪些场景?
pdf-text-replace 是开源仓库 instavm/open-skills(OpenSkills)中的一个技能,用于更新可填写 PDF 表单的字段值。它运行一个 Python 脚本,扫描 PDF 中的所有表单字段,找到包含指定搜索文本的字段并替换为新文本,输出一个新的 PDF 并保留全部表单结构。该技能依赖 pypdf 库和 Python 3.7+,且要求 PDF 未被扁平化。它通过 OpenSkills 的本地沙箱容器执行,数据不出本机。仓库整体以 Apache 2.0 许可证发布。
读取输入 PDF,遍历全部可填写表单字段;对字段值中出现的搜索文本(默认区分大小写)进行替换;将更新后的内容写入新的输出 PDF,且不扁平化表单;运行结束时报告被修改的字段数量,并在输入文件不存在、PDF 无表单字段、搜索文本未找到或输出路径不可写时报错。
- HR 或行政人员需要修改已填写税表中的姓名(例如把 'MANISH KUMAR' 改为 'MANNU KUMAR')。
- 需要批量更新多份 PDF 表单中的地址、日期或参考编号的办公人员。
- 处理敏感财务表单、不希望文件上传云端的用户,可在本地沙箱中完成替换。
- 需要在 Claude Desktop、Gemini CLI、OpenCode 等 MCP 兼容工具中调用 PDF 表单编辑能力的用户。
这个 Skill 有哪些优点和局限?
- 完全本地执行,敏感表单数据不出本机
- 输出保留全部表单字段,不做扁平化,字段仍可编辑
- 脚本逻辑简单,仅依赖 pypdf,易于审计和修改
- 支持批量更新多个字段值,并提供明确的错误报告
- 只适用于有可填写表单字段的 PDF,无法处理扫描件或图片 PDF
- 只能替换字段值,不能修改静态正文文本
- 搜索默认区分大小写,未提供忽略大小写的选项
- 宿主机直接运行的 Python 版本要求(仓库整体要求 3.10+)与技能标注的 3.7+ 之间以仓库要求为准
- 仓库未提供针对该脚本的测试套件或独立文档页面
如何安装这个 Skill?
该技能随 open-skills 集合安装:克隆仓库并运行安装脚本(要求 Apple Silicon Mac、Python 3.10+):git clone https://github.com/BandarLabs/open-skills.git && cd open-skills && chmod +x install.sh && ./install.sh。安装约 2 分钟,MCP 服务器位于 http://open-skills.local:8222/mcp。技能文件位于仓库的 skills/public/pdf-text-replace/(用户侧目录结构为 ~/.open-skills/assets/skills/)。仓库未单独说明此技能的独立安装步骤。
如何使用这个 Skill?
通过任一 MCP 兼容客户端(Claude Desktop、Gemini CLI、OpenCode、Qwen CLI 等)调用,或直接运行脚本:python scripts/replace_text_in_pdf.py input.pdf "旧文本" "新文本" output.pdf。四个位置参数依次为:输入 PDF、搜索文本、替换文本、输出 PDF。注意脚本内的 /app/uploads/ 路径是沙箱容器内的路径,对应宿主机的 ~/.open-skills/assets/outputs/。
这个 Skill 与同类方案有什么区别?
README 将其定位为 Anthropic 官方 Skills 的本地运行替代方案:同样的技能格式,但通过 OpenSkills 在本机沙箱执行,而非依赖 Claude 云端处理;对在意隐私的 PDF 表单处理场景,这是与云端运行 Claude Skills 的主要区别。