中文材料套打助手
何时使用
当用户提供以下内容时使用:
- 一个 Word
.docx模板(学校表单、毕业材料、职称材料、企业审批表、报名表等) - 一份字段数据(文本、JSON、表格、聊天里给出的姓名/学号/日期等)
- 要求“按模板填”“套打”“不要改版式”“保持下划线/表格/分页”
不适用于:
- 用户要求从零设计版式
- 需要伪造签字、盖章、证明或篡改 official 文件
- 未经授权处理他人个人信息
核心原则
- 模板是唯一版式来源:不要新建文档、不要重画表格、不要改页边距/字体/行距/分页。
- 只替换字段:优先替换
{{字段名}}占位符;没有占位符时,按模板中的标签(如“姓名:”“学号:”)定位空白,不覆盖标签。 - 保留格式:替换文本必须沿用原 run 的字体、字号、加粗、下划线和对齐方式。
- 不编造:用户没给的字段留空或保留下划线,不猜身份证号、电话、日期、单位信息。
- 交付前自检:检查未替换占位符、空字段、表格错位、跨页和明显的版面溢出。
输入约定
请先向用户确认:
- 模板文件路径/上传文件
- 字段数据(推荐 JSON;也接受自然语言列表)
- 输出格式:
.docx或.pdf - 是否需要保留原模板中的空白下划线
数据示例:
{
"name": "张三",
"student_id": "20230001",
"college": "信息工程学院",
"major": "计算机科学与技术",
"class_name": "计算机2301",
"phone": "13800000000",
"company": "某某科技有限公司",
"start_date": "2026年7月6日",
"end_date": "2026年11月22日"
}
执行步骤
1. 复制模板
把用户模板复制为工作副本,不要直接改原文件;输出路径不能与模板相同(脚本会拒绝覆盖)。
2. 先盘点占位符
python scripts/fill_docx.py --inspect "输入模板.docx" --report inspect.json
输出每个占位符的 key、出现次数和位置:body、body/tbl、header[0]、footer[0]、txbxContent 等。先核对字段名和数量,再填;不要凭猜测直接全局替换。
3. 填写
python scripts/fill_docx.py \
--template "输入模板.docx" \
--data "fields.json" \
--out "输出_已填写.docx" \
--report "fill-report.json"
需要先看计划而不写出文件时,加 --dry-run。
4. 跨 run 占位符
Word 经常把 {{student_id}} 拆成多个 run(自动更正、修订记录、拼写检查都会造成)。脚本会定位占位符的首尾 run,只把值写入首个受影响 run,保留前缀、后缀和原格式;不要为了替换而把整段压成一个 run,也不要手工重画段落。
5. 交付前自检
python scripts/fill_docx.py --check "输出_已填写.docx" --report check.json
必须确认:
unresolved_placeholders: 0structure_ok: true(ZIP/XML 可读、无重复 singleton 子节点、段落/表格数量未变)fill-report.json里的fields_used与fields_unused符合预期- 没有
None、空关键字段或误填数据
脚本只验证包结构和文本,不替代 Word/WPS 的渲染目检。涉及分页、套打、下划线对齐的模板,转 PDF 后逐页看关键页,尤其最后一页和签字页。
6. PDF 与交付
需要 PDF 时,用本机 Word/LibreOffice 转换;转换后检查页数、最后一页和表格/下划线是否完整。交付 .docx(和 .pdf),并列出:
- 已填字段
- 仍为空/待用户确认的字段
- 页数和版面检查结果
- 原模板备份路径
fill-report.json摘要
7. 标签式模板(没有 {{}})
先 --inspect 确认没有占位符,再考虑 --map:它只在标签后是冒号/空格/下划线时写入,不覆盖标签后面的已有文字。复杂表单优先让用户在模板中插入 {{字段名}},比脚本猜标签可靠。
能力边界
- 支持
.docx;.doc先用 Word/LibreOffice 转.docx。 - 支持正文、表格、嵌套表格、页眉页脚、文本框中的普通文本占位符。
- 不保证 Word 自动域(页码、日期、目录、交叉引用)里的文本,Word 打开时会重新生成;遇到时把占位符移到普通文本。
- 不处理图片替换、签名/盖章、批注和修订记录;需要时明确告诉用户未做。
- 不做“任意模板 100% 自动识别”;复杂模板先小样确认。
禁止事项
- 不伪造签字、印章、官方证明、银行流水、病历、学历或工作经历。
- 不把用户文档上传到第三方网盘或公共模型服务;默认本机处理。
- 不擅自删除模板中的空白页、页眉页脚、表格行或下划线。
- 不承诺“任何模板都能 100% 自动识别”;复杂模板先做小样确认。
失败回退
- 脚本报
python-docx缺失:先安装requirements.txt,或改用本机 Word 手工替换。 - 占位符跨多个 run:脚本会自动处理;若仍残留,用
--inspect确认它是否位于超链接、Word 自动域或图片替代文本中,必要时让用户改成普通文本占位符。 - 版面溢出:优先删减文字/缩小字号前先问用户;不要改模板页边距。
.doc旧格式:先用 Word/LibreOffice 转.docx,不要直接解析二进制.doc。