本技能对用户上传的 Word(.docx) 文档执行四个阶段的一站式处理:
DocFormat/
├── SKILL.md # 技能主文件(触发规则 + 四阶段工作流指令)
├── scripts/
│ ├── orchestrate.py # 主控编排脚本(一键串联四阶段)
│ ├── doc_checker.py # 文本提取 + 规则检查 + 批注写入
│ └── gb_t9704_formatter.py # GB/T 9704-2012 国标格式修正
└── references/
└── check_rules.md # 完整检查规则清单(6大类,供 LLM 参照)
用户上传 .docx 文档
│
▼
┌─ 阶段1: 检查 ──────────────────────────┐
│ 1.1 程序化规则检查 (doc_checker.py) │
│ → 标点、间距、错别字、编号等 14 种规则 │
│ 1.2 LLM 语义深度检查 │
│ → 病句、逻辑矛盾、术语一致性等 │
└─────────────────────────────────────────┘
│
▼
┌─ 阶段2: 报告 ──────────────────────────┐
│ 合并所有 issues → 生成 Markdown 检查报告 │
└─────────────────────────────────────────┘
│
▼
┌─ 阶段3: 批注 ──────────────────────────┐
│ 合并 issues → 在原文档中插入 Word 批注 │
│ (同一段落多条问题自动合并) │
└─────────────────────────────────────────┘
│
▼
┌─ 阶段4: 格式修正 ──────────────────────┐
│ 按 GB/T 9704-2012 国标修正文档格式 │
│ → 页面、字体、段落、页码、网格等 │
└─────────────────────────────────────────┘
│
▼
输出 3 个文件:
📄
📝
📋
确认 python-docx 和 lxml 已安装:
pip install python-docx lxml
本技能的两个核心脚本位于 scripts/ 目录:
doc_checker.py — 文本提取、规则检查、批注写入
gb_t9704_formatter.py — GB/T 9704-2012 格式修正
按顺序执行以下四个阶段。每个阶段完成后告知用户当前进度。
此阶段分为两步——先运行程序化规则检查,再由 LLM 做语义深度检查。
运行 doc_checker.py 提取文本并执行规则检查:
python scripts/doc_checker.py extract <input.docx> --text-only --skip-empty -o /home/z/my-project/download/<stem>_paragraphs.json
python scripts/doc_checker.py check <input.docx> -o /home/z/my-project/download/<stem>_rule_issues.json
此步骤自动检测以下问题(无需 LLM 介入):
读取步骤 1.1 输出的 ,逐段分析以下检查项(这些需要语义理解,程序化规则无法覆盖):
必须逐条检查的项目(参照 references/check_rules.md):
| 检查类别 | 具体检查项 |
|---------|-----------|
| 错别字 | 形近字混淆(己/已/巳)、词语误用(不以为然≠不以为意)、搭配错误、AI 生成常见错误(同字重复、输入法错误) |
| 标点符号 | 书名号/引号误用、句末标点遗漏、顿号与逗号混用 |
| 书写格式 | 数字格式(叙述用汉字、统计用阿拉伯数字)、标题层级一致性 |
| 学术规范 | 术语前后不一致、缩写未展开、中英混排顺序、量纲单位不统一 |
| 语言质量 | 词语重复、病句(主语缺失、成分残缺、语序混乱)、逻辑矛盾、指代不明 |
| 文档专项 | 图注/表注格式统一性、参考文献格式统一性、目录与正文标题一致性 |
LLM 输出格式 — 生成 /home/z/my-project/download/,严格遵循此 JSON 结构:
[
{
"paragraph_index": 0,
"category": "错别字",
"severity": "error",
"comment": "\"戴来\"应为\"带来\"",
"evidence": "戴来"
},
{
"paragraph_index": 3,
"category": "语言质量",
"severity": "warning",
"comment": "主语缺失:\"通过实验,证明了……\"应为\"我们通过实验,证明了……\"",
"evidence": "通过实验,证明了"
}
]
字段说明:
paragraph_index:段落索引(与 paragraphs.json 中的 index 对应)
category:问题分类,取值范围为:错别字 / 标点符号 / 书写格式 / 学术规范 / 语言质量 / 文档专项
severity:严重程度,取值范围为:error(必须修改)/ warning(建议修改)/ info(仅供参考)
comment:问题描述(将直接写入 Word 批注,需简洁明确)
evidence:原文中出问题的片段
注意事项:
将步骤 1.1 和 1.2 的检查结果合并,生成一份 Markdown 格式的检查报告。
报告模板:
# 文档检查报告
**文件名**:<原始文件名>
**检查时间**:<当前时间>
**问题总数**:<总数>(错误 <error数> / 警告 <warning数> / 提示 <info数>)
---
## 一、错误(必须修改)
| # | 段落 | 类别 | 问题描述 | 原文片段 |
|---|------|------|---------|---------|
| 1 | 第3段 | 错别字 | "戴来"应为"带来" | 戴来 |
## 二、警告(建议修改)
| # | 段落 | 类别 | 问题描述 | 原文片段 |
|---|------|------|---------|---------|
| 1 | 第5段 | 语言质量 | "特别厉害"为口语化表达 | 特别厉害 |
## 三、提示(仅供参考)
| # | 段落 | 类别 | 问题描述 | 原文片段 |
|---|------|------|---------|---------|
| 1 | 第8段 | 学术规范 | "Python"首次出现建议标注中文译名 | 使用Python |
---
## 四、格式检查结果(GB/T 9704-2012)
| 检查项 | 结果 |
|-------|------|
| 页面尺寸(A4: 210×297mm) | 符合/不符合 |
| 天头(37mm)/ 订口(28mm) | 符合/不符合 |
| 正文字体(3号仿宋) | 符合/不符合 |
| 标题字体(2号小标宋) | 符合/不符合 |
| 每面行数(22行)/ 每行字数(28字) | 符合/不符合 |
| 页码格式 | 符合/不符合 |
将报告保存为 /home/z/my-project/download/,同时在对话中向用户展示报告摘要。
合并规则检查和 LLM 检查的所有 issues,调用 doc_checker.py annotate 一次性写入 Word 批注:
# 先合并两个 issues JSON 文件(规则检查 + LLM 检查)
# 可用 Python 一行合并:
python3 -c "
import json, sys
rule = json.load(open('/home/z/my-project/download/<stem>_rule_issues.json'))
llm = json.load(open('/home/z/my-project/download/<stem>_llm_issues.json'))
rule_list = rule.get('issues', rule) if isinstance(rule, dict) else rule
llm_list = llm if isinstance(llm, list) else llm.get('issues', llm)
merged = rule_list + llm_list
json.dump(merged, open('/home/z/my-project/download/<stem>_all_issues.json','w'), ensure_ascii=False, indent=2)
print(f'合并完成:{len(merged)} 条问题')
"
# 写入批注
python scripts/doc_checker.py annotate <input.docx> --issues /home/z/my-project/download/<stem>_all_issues.json -o /home/z/my-project/download/<stem>_批注版.docx
输出文件: — 带批注的原文档(内容不变,仅添加批注)。
调用 gb_t9704_formatter.py 对文档进行 GB/T 9704-2012 格式修正:
python scripts/gb_t9704_formatter.py <input.docx> --advanced -o /home/z/my-project/download/<stem>_格式修正版.docx
此步骤修正的内容包括:
重要:格式修正版基于原始文档处理(不包含批注),因为批注和格式修正需要分别操作原始文档以避免 XML 冲突。
输出文件:
处理完成后,向用户提供以下文件:
| 文件 | 说明 |
|------|------|
| | 检查报告(Markdown 格式) |
| | 带批注的原文档 |
| | 国标格式修正后的文档 |
向用户说明:
如果用户只需要部分功能,按需执行对应阶段:
| 用户意图 | 执行阶段 |
|---------|---------|
| "帮我检查文档有没有问题" | 阶段 1 + 阶段 2 |
| "给文档加批注" | 阶段 1 + 阶段 3 |
| "帮我按国标排版" | 阶段 4 |
| "检查并修改格式" | 全部四个阶段 |
| "只检查错别字" | 阶段 1(只保留错别字相关检查项) |
所有脚本相对于 Skill 根目录:
scripts/doc_checker.py — 文本提取与批注工具
scripts/gb_t9704_formatter.py — 国标格式修正工具
references/check_rules.md — 完整检查规则清单
所有输出文件保存到 /home/z/my-project/download/ 目录。
共 1 个版本