name: DocFormat description: | Word 文件一站式檢查與格式化技能。當用戶上傳了 Word(.docx) 文件並需要檢查錯誤、 生成檢查報告、新增批註、或按照 GB/T 9704-2012 國標修正公文格式時,務必使用此技能。 適用場景包括但不限於:使用者說"幫我檢查文件"、"文件有沒有問題"、"給文件加批註"、 "格式不規範幫我改"、"按國標排版公文"、"檢查錯別字"、"文件格式修正"等。 即使只是提到 Word 文件的質量、規範、排版、校對等話題,也應主動推薦此技能。
本技能對使用者上傳的 Word(.docx) 文件執行四個階段的一站式處理:
來源於7w4.net。
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 介入): - 中英文標點混用、省略號格式錯誤、英文直引號 - 全形數字、中英文間距、數值與單位間距 - 60+ 常見錯別字(如"戴來→帶來""既使→即使") - 口語化表達、極端敏感措辭 - 列表編號/圖表編號不連續
讀取步驟 1.1 輸出的 <stem>_paragraphs.json,逐段分析以下檢查項(這些需要語義理解,程式化規則無法覆蓋):
必須逐條檢查的專案(參照 references/check_rules.md):
| 檢查類別 | 具體檢查項 |
|---|---|
| 錯別字 | 形近字混淆(己/已/巳)、詞語誤用(不以為然≠不以為意)、搭配錯誤、AI 生成常見錯誤(同字重複、輸入法錯誤) |
| 標點符號 | 書名號/引號誤用、句末標點遺漏、頓號與逗號混用 |
| 書寫格式 | 數字格式(敘述用漢字、統計用阿拉伯數字)、標題層級一致性 |
| 學術規範 | 術語前後不一致、縮寫未展開、中英混排順序、量綱單位不統一 |
| 語言質量 | 詞語重複、病句(主語缺失、成分殘缺、語序混亂)、邏輯矛盾、指代不明 |
| 文件專項 | 圖注/表注格式統一性、參考文獻格式統一性、目錄與正文標題一致性 |
LLM 輸出格式 — 生成 /home/z/my-project/download/<stem>_llm_issues.json,嚴格遵循此 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.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/<stem>_檢查報告.md,同時在對話中向用戶展示報告摘要。
合併規則檢查和 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
輸出檔案:<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
此步驟修正的內容包括: - 頁面設定:A4 紙、天頭 37mm、訂口 28mm、版心 156×225mm - 預設字型:3 號仿宋體、黑色 - 標題:2 號小標宋體、居中 - 結構層次:一級黑體、二級楷體、三四級仿宋 - 頁碼:4 號宋體、— X — 格式、奇右偶左 - 版頭/版記要素格式修正 - 文件網格:每面 22 行、每行 28 字
重要:格式修正版基於原始文件處理(不包含批註),因為批註和格式修正需要分別操作原始文件以避免 XML 衝突。
輸出檔案:<stem>_格式修正版.docx
處理完成後,向用戶提供以下檔案:
| 檔案 | 說明 |
|---|---|
<stem>_檢查報告.md |
檢查報告(Markdown 格式) |
<stem>_批註版.docx |
帶批註的原文件 |
<stem>_格式修正版.docx |
國標格式修正後的文件 |
向用戶說明: - 批註版保留了原始內容和格式,僅在問題位置添加了 Word 批註,方便逐條審閱 - 格式修正版按 GB/T 9704-2012 國標重新排版,建議在審閱完批註後再使用此版本 - 兩份文件建議配合使用:先在批註版中確認問題,再在格式修正版中做最終修訂
如果使用者只需要部分功能,按需執行對應階段:
| 使用者意圖 | 執行階段 |
|---|---|
| "幫我檢查文件有沒有問題" | 階段 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/ 目錄。
這個 Skill 質量不錯,能一次性完成 Word 文件的錯別字檢查、格式審查、新增批註和國標排版,流程完整、操作便捷。檢查規則覆蓋全面,支援中英文標點、錯別字、書寫格式等多維度檢查,並能按公文國標修正格式。優點是功能整合度高,規則文件詳細;不足是部分功能依賴使用者手動操作,整體自動化程度還有提升空間。