智能 Word 排版(薄客户端)
中文 Word 文档的排版与格式治理工具。排版引擎部署在云端,本包只做「读文件 → 发请求 → 落盘」三件事,所以本机零依赖、装完即用。
日常使用只需一条命令:
python scripts/process.py smart 输入.docx 输出.docx --preset official
架构:薄壳 + 云端引擎
本机(薄客户端) 云端引擎
┌────────────────────────┐ ┌──────────────────────────┐
│ scripts/process.py │ HTTPS │ api.chengpay.com.cn │
│ · 读 .docx → base64 │ ───────▶ │ /wordfmt/v1/smart │
│ · 打包参数 │ │ 标点归一 → 套预设 │
│ · 落盘 + 打印日志 │ ◀─────── │ → 内容兜底 → 返回 docx │
└────────────────────────┘ base64 └──────────────────────────┘
- 本地不含任何排版算法:没有
python-docx,没有本地引擎代码,requirements.txt空依赖。 - 算法只在服务端:改规则、加预设、修 bug 只需更新服务端,所有客户端即时生效,不用重新分发技能包。
- 可离线判断:
health一条命令即可确认云端是否可达,不通时立刻给明确原因,不会静默失败。
功能一览
| 能力 | 怎么用 |
|---|---|
| 一键规范(标点 + 格式 + 内容兜底) | smart |
| 只读诊断(不改文件,可出 JSON) | analyze [--json] |
| 仅标点 / 空格规范化 | punctuation --space-mode ... |
| 仅套用排版预设 | format --preset ... |
| 公文 / 论文 / 法律文书三套预设 | --preset official \| academic \| legal |
| 自定义版式(JSON 覆盖) | --custom-settings 配置.json(配合 --preset custom) |
| 修订留痕(真·Word 修订可接受/拒绝) | --revision |
| 表格边框 + 数值/短文本智能对齐 | 默认加边框,--smart-table-align 开对齐 |
| 页码域(四种样式、四种位置) | --page-number-style / --page-number-position / --page-number-offset-mm |
| 保留 Word 自带标题样式(目录域可继续生效) | --preserve-headings |
| 深度清理(全角 ASCII 转半角等) | --deep-clean |
| Markdown / txt 转规范 DOCX | md2docx 输入.md 输出.docx --title 标题 |
| 写盘前内容完整性兜底 | 默认开启;--no-content-guard 关闭 |
| 兜底凭证落盘(交付归档用) | --guard-report 报告.json |
| 服务自检 / 列出云端预设 | health / presets |
核心优势
- 内容零丢失兜底:写盘前把输入与输出逐字比对——数字、URL、邮箱、路径、标准号、表格数、图片数、段落与单元格数全部核对。只要发现丢一个字/一个表/一张图,直接拒绝返回文件(退出码 3),绝不出"看着没问题、其实少了内容"的稿子。这是"只改格式、不改内容"纪律的机器级担保。
- 只动格式,不动内容:所有转换都基于"归一化后等价"判断,标点宽度/空格差异不误判为内容变更。
- 中文语境标点:URL / 邮箱 / 文件路径 / 时间 / 标准号 / 十六进制先掩码保护,再按中文语境转换半角↔全角;
...→……、--→——、引号开闭配对、重复标点折叠。 - 真·修订留痕:旧内容写
w:del、新内容写w:ins,Word 里是真正的修订模式,可逐条接受/拒绝,不是简单标红。 - 一套命令覆盖三类文书:公文(GB/T 9704-2012 版式)、学术论文、法律文书,一个
--preset切换。 - 薄壳轻量:本机零第三方依赖,Python 3.8+ 即可运行;云端出错不影响本机环境。
- 服务端结果缓存:相同文件 + 相同参数二次请求直接命中缓存,实测从 430ms 降到 70ms。
- 独立实现,无外部许可负担:算法为本项目自研,不引入第三方排版库的许可义务。
快速使用(怎么用)
# 0) 自检:确认云端可达(建议首次使用先跑一次)
python scripts/process.py health
# 1) 一键规范(公文预设,最常用)
python scripts/process.py smart 输入.docx 输出.docx --preset official
# 2) 先体检、不改文件
python scripts/process.py analyze 输入.docx
python scripts/process.py analyze 输入.docx --json
# 3) 只修标点(保留中英边界一个空格)
python scripts/process.py punctuation 输入.docx 输出.docx
# 4) 只套格式 + 输出修订留痕(交审阅用)
python scripts/process.py format 输入.docx 输出.docx --preset academic --revision
# 5) Markdown 转规范 DOCX
python scripts/process.py md2docx 方案.md 方案.docx --title "工作方案"
# 6) 查看云端三套预设的实际参数
python scripts/process.py presets
触发方式
触发词:Word排版、公文排版、论文排版、法律文书排版、文档规范化、格式美化、排版规范、红头文件排版、docx排版、md转docx、Word文档格式治理。
示例话术(直接说,我会调用本技能):
- "把这份 docx 排成公文格式,套 GB/T 9704。"
- "先帮我体检这份报告,看格式有什么问题。"
- "这稿标点中英混用,帮我把半角标点全改成中文标点。"
- "只改版式不动文字,输出带修订留痕的版本给我核对。"
- "把这个 Markdown 转成规范的 Word 文档。"
- "排版前先确认没丢字,给我一份兜底凭证。"
执行路径:识别到上述意图 → 调 scripts/process.py 对应子命令 → 云端排版 → 落盘 → 回报输出路径、字节数、兜底结论。
配置
config.json(同包根目录):
{
"api_base": "https://api.chengpay.com.cn/wordfmt",
"api_key": "",
"timeout": 300
}
| 字段 | 说明 |
|---|---|
api_base |
云端排版引擎地址,一般不用改 |
api_key |
一期免费开放,留空即可 |
timeout |
单次请求超时秒数,超大文档可调大 |
use_env_proxy |
默认 false(直连公网)。若本机必须经代理出网,设为 true |
环境变量可覆盖同名配置:WF_API_BASE / WF_API_KEY / WF_TIMEOUT。
退出码
| 码 | 含义 | 处理建议 |
|---|---|---|
| 0 | 成功 | —— |
| 1 | analyze 发现待修问题 / 云端处理失败 |
看 stderr 提示 |
| 2 | 输入或网络问题(文件不存在、过大、云端不通) | 按提示检查文件或网络 |
| 3 | 内容完整性兜底未通过,已拒绝输出 | 说明该操作会丢内容,需人工介入,不要强推 |
| 4 | 旧版格式(.doc / .wps) | 先用 Word/WPS 另存为 .docx |
边界
- 薄客户端只输出 .docx;
.doc/.wps需先另存为.docx(本地不做 COM 转换)。 - 单文件上限 45MB(base64 后约 60MB)。超大文档请拆分后处理。
- 文档内容会上传到
api_base指定的云端服务处理;如需完全本地处理,请使用本地算法版。 - 只改格式与标点,不改写文字、不增删段落、不调整表格数据。
版本与变更记录
当前版本:2.0.0。客户端与云端引擎同号发布——本包 version 与云端 engine.py 的 VERSION 保持一致,health 返回的版本号应与本包相同。
| 版本 | 日期 | 变更内容 |
|---|---|---|
| 2.0.0(当前) | 2026-10-31 | 架构拆分:本地只保留 CLI 薄壳,排版引擎迁至云端 api.chengpay.com.cn/wordfmt;本机零第三方依赖(无 python-docx)。新增 md2docx / health / presets 三个命令。服务端加结果指纹缓存(同文件同参数二次请求 430ms → 70ms)。修复 URL / 邮箱后接中文句号时,被内容完整性兜底误判为「丢内容」而拒写的问题。客户端 CLI 参数与原版 100% 兼容。 |
| 1.1.0 | 2026-10-31 | 本地算法版:补全「功能一览 / 核心优势 / 快速使用 / 触发方式」四节自描述。标点算法升级——受保护 token(URL / 邮箱 / 路径 / 时间 / 标准号 / 十六进制)先掩码再转换;全角→半角改为「两侧均 ASCII」才降半角,避免误改中文语境;全角引号纳入中文语境判断。页码域不再产生多余空行。 |
| 1.0.0 | 2026-10-31 | 独立实现首发(不依赖任何第三方排版库的代码与许可约定):smart / analyze / punctuation / format 四子命令,公文 / 学术论文 / 法律文书三套预设,写盘前内容完整性兜底(丢内容即拒写、退出码 3),真·Word 修订留痕(w:ins / w:del)。 |
升级方式:替换本包目录即可,无需安装任何依赖。服务端升级不影响已分发客户端(算法在云端),仅当客户端新增命令或参数时才需重新分发本包。