name: bid-word-format description: 根据用户提供的参考 Word 模板,重排中文投标书、方案书、建议书等 .doc/.docx 文档,保留原文内容,清理乱格式,迁移标题、正文、页眉页脚、页面设置和表格基础样式,并输出处理报告与结构 QA 报告。 agent_created: true
Word 文档排版技能是一个用于中文投标书、方案书、建议书和商务长文档的 Word 模板迁移排版工具。
它接收两份 Word:
输出是一份新的规范化 .docx,以及处理报告和结构 QA 报告。
小葱技能站7w4.net每天更新,海量AI技能等你发现。
先运行环境自检:
python scripts/check_env.py
检查内容:Python 版本、python-docx、lxml(必需);LibreOffice/soffice(可选,用于 .doc 转换和页面渲染)。
根据结果明确告知用户:
文件检查:
format_bid_doc.py内置_preflight前置校验,排版前会自动检查模板/输入文件的存在性、格式(.docx/.doc)、.docx 完整性、.doc 是否需要 soffice。出错时给出友好中文提示(问题 + 原因 + 解决建议),不抛 traceback。也可在排版前手动运行check_files.py提前诊断。
明确告诉用户:
请上传你想复刻格式的参考模板 Word 文件(
.docx优先,.doc也可以)。我会学习它的标题层级、正文样式、页眉页脚和页面设置。
收到模板后:
bash
python scripts/check_files.py --template <模板路径>bash
python scripts/learn_template.py --template <模板路径>我已学习到: - 页面:A4 纵向,边距 上3.0/下3.5/左3.0/右2.0 cm - 标题:分 4 级(Heading 1~4,黑体) - 正文:中文宋体、西文/数字 Arial、小五(9pt)、1.5 倍行距、首行缩进 2 字符、两端对齐 - 页眉:xxx(保留模板原文)/ 页脚:页码 请确认这就是你要的格式。
⚠️ 检测到模板存在格式覆盖:Normal 样式定义为小四(12pt),但正文实际是小五(9pt)+Arial。排版时会以正文实际格式为准套用。
模板确认后,明确告诉用户:
请上传你想刷格式的 Word 文件(
.docx优先)。我会保留它的正文内容,套用刚才学到的模板格式。
收到文件后:
bash
python scripts/check_files.py --template <模板路径> --input <待排版路径>.doc,先用 LibreOffice/soffice 转为 .docx。任一步骤失败时的处理:
- 脚本会输出友好中文提示(问题 + 原因 + 解决建议),把提示原样转告用户,不要自己翻译成技术术语。
- 若是文件问题(损坏/格式)→ 请用户用 Word 重新另存或换文件。
- 若是环境问题(缺 soffice)→ 给出 LibreOffice 下载链接或建议另存为 .docx。
- 若是未预期错误 → 提示用户先跑 check_env.py + check_files.py 诊断,仍不行则反馈错误信息。
- 不要把 Python traceback 直接丢给用户。
交付 formatted.docx、处理报告、QA 报告,并提醒用户重点检查:
1、1.1、1.1.1、1.1.1.1 等编号识别标题层级。这个技能用于格式迁移,不用于正文改写。如果源文档缺少封面、审批页、目录等关键字段,需要用户补充或人工确认。
排版从模板学习并复刻以下格式维度,全部从模板学习、不硬编码默认值。
Heading 1~4 或文本以 1 / 1.1 / 1.1.1 / 1.1.1.1 等数字编号开头。Heading1-4、中文「标题 1-4」、纯数字命名)。从模板学习「正文画像」,包含样式级 + run 级两层,两层都看、run 级优先:
| 维度 | 含义 | 来源 |
|---|---|---|
| 段落样式 | Normal |
段落级 pStyle |
| 中文字体 | eastAsia(如宋体 / 宋体;SimSun) |
Normal 样式定义 |
| 西文/数字字体 | ascii / hAnsi(如 Arial) |
run 级覆盖 |
| 字号 | 半磅值(如 18 = 小五 / 9pt) |
run 级覆盖 |
| 行距 | line + lineRule(如 360 auto = 1.5 倍) |
段落级 |
| 首行缩进 | firstLineChars(如 200 = 2 字符),优先字符数 |
段落级 |
| 对齐 | jc=both(两端对齐) |
段落级 |
关键:run 级字体/字号必须显式写入每个 run,不依赖样式继承。 模板 Normal 样式定义的字号可能是 12pt(小四),但正文 run 实际常覆盖为 9pt(小五)+ Arial(西文/数字)。只套样式而不写 run 级,会导致正文字号/字体与模板不一致。
学习模板时,运行 scripts/learn_template.py 会同时输出:
- Normal 样式定义的字体/字号(样式级)
- 正文 run 实际的字体/字号(run 级)
- 两者合并后的有效字体
- 样式级 vs run 级冲突清单(如有冲突,排版时会显式写入 run 级覆盖)
Table Grid 样式 + tblBorders + tblCellMar)。Normal 样式,不强行套正文画像(避免破坏表格布局)。--header-text 时才替换。检查环境:
python scripts/check_env.py
检查文件(可选,排版前提前诊断文件是否有问题):
python scripts/check_files.py --template templates/your_template.docx --input your_input.docx
学习模板格式(标题层级 + 正文画像 + 冲突检测):
python scripts/learn_template.py --template templates/your_template.docx
首次使用前:生成演示模板(SkillHub 禁止上传二进制文件,发布包不含 sample_template.docx):
python scripts/create_sample_template.py
输出
templates/sample_template.docx,中性演示,不包含真实业务数据。正式使用请用你自己的参考模板(替换--template参数)。
创建脱敏测试输入:
python scripts/create_test_input.py --out tests/messy_bid_input.docx
运行排版:
python scripts/format_bid_doc.py \
--template templates/sample_template.docx \
--input tests/messy_bid_input.docx \
--out tests/formatted_bid_output.docx \
--report tests/formatted_bid_output.report.json
注意:以上用包内置的中性演示模板跑通流程;正式使用请把
--template换成你自己的参考模板。
运行结构 QA:
python scripts/qa_docx.py --docx tests/formatted_bid_output.docx
渲染并视觉检查:
python scripts/render_docx.py tests/formatted_bid_output.docx --output_dir tests/rendered --emit_pdf
.docx 可以正常打开。自动排版可以复现模板样式系统和页面结构,但不能凭空准确推断缺失的业务字段。对于封面、审批信息、目录、复杂表格、图片排版和超宽页面,最终仍需要人工复核。
这个技能质量不错,文档写得清楚明白,操作流程一步步引导用户,遇到问题会给友好的提示而不只是冷冰冰的技术报错。核心功能稳定,能把模板格式准确迁移到新文档,保留原文档内容不变。不足之处是复杂表格和图片处理能力有限,需要人工复核;SkillHub 版本不自带示例模板,首次使用需要运行脚本生成。总体适合处理常规的中文投标书、方案书排版,标准化工作场景用它很顺手。