公文格式审查系统
一、项目背景与痛点
在中国,各级党政机关、团体和企事业单位日常工作中产生大量公文。根据 GB/T 9704《党政机关公文格式》国家标准,公文在字体、字号、行距、对齐、缩进等方面有严格的格式要求。然而在实际工作中,公文格式不规范是一个普遍存在的痛点:
- 人工检查效率极低:一份 20 页的公文可能包含上百个段落,每个段落需要核对字体、字号、对齐方式、行距、缩进等 6-8 项属性,人工检查耗时且容易遗漏。
- 格式错误类型多样:常见的错误包括正文未使用仿宋字体、标题字号错误、行距不统一、首行缩进缺失、数字未使用 Times New Roman 字体等,涉及 10 余种检查维度。
- 缺乏自动化工具:目前市面上缺少专门针对中国公文格式的自动化检查与修复工具,大多数文档处理软件仅提供通用的格式化功能,无法识别公文特有的段落类型并应用对应的格式规则。
- Word 原生功能不足:虽然 Word 提供了样式功能,但无法自动识别段落类型,也无法一键将全文修正为符合公文标准的格式。
基于以上痛点,我们开发了「公文格式审查系统」,旨在通过技术手段实现公文格式的自动化检查与一键修复,大幅提升公文处理效率。
二、项目简介
公文格式审查系统是一个基于 Web 的公文格式自动化检查与修复工具。用户只需上传 Word 文档(.docx),系统即可自动完成以下工作:
- 智能解析:深度解析 Word 文档结构,提取段落文本、样式信息、图片、表格等结构化数据
- 段落分类:基于规则引擎自动识别 12 种段落类型(标题、一级标题、二级标题、三级标题、正文、抬头、署名、署名日期、文号等)
- 格式验证:实时检查 10+ 项格式规则,包括字体、字号、对齐方式、行间距、首行缩进、段前段后间距、数字字体、文号格式等
- 一键修复:一键自动修复所有检测到的格式错误,将全文统一为符合 GB/T 9704 标准的公文格式
- 在线编辑:基于 TipTap 富文本编辑器,支持实时在线编辑,所见即所得
- 标准导出:修复后可导出为标准格式的 Word 文档,直接用于正式发文
三、核心功能详解
3.1 智能文档解析
后端使用 python-docx 深度解析 Word 文档的 XML 结构,完整提取文档信息。解析器能够处理以下复杂场景:
- 样式继承链解析:段落样式 > 段落样式继承链(basedOn)> 第一个 Run 的样式 > 文档默认样式 > 主题字体,确保提取的样式信息准确无误
- 混合内容段落:一个段落中可能同时包含中文、英文、数字,每种字符可能使用不同的字体和字号,解析器逐 Run 提取样式信息
- 内联图片识别:从 Word 的 DrawingML 结构中提取图片,包括图片尺寸(EMU 转 cm,与 Word 显示一致)、图片 URL 等
- 表格结构解析:支持合并单元格(colspan/rowspan)、列宽、单元格样式等复杂表格结构
- 二次位置扫描:基于段落在文档中的位置比例,对 header(抬头)和 signature(署名)进行二次修正,提高分类准确率
3.2 段落类型自动分类
系统内置规则分类器,按优先级从高到低匹配 12 种段落类型:
| 优先级 | 匹配规则 | 目标类型 |
|---|---|---|
| 1 | 日期正则 \d{4}年\d{1,2}月\d{1,2}日 |
署名日期(date) |
| 2 | 长度≤20 + 成对特殊括号 | 文号(doc_number) |
| 3 | 第X章 模式 |
一级标题(heading1) |
| 4 | 第X节 模式 |
二级标题(heading2) |
| 5 | 第X条 模式 |
三级标题(heading3) |
| 6 | 一、二、三、... 模式 |
一级标题(heading1) |
| 7 | (一)(二)... 模式 |
二级标题(heading2) |
| 8 | 1. 2. / (1)(2) 模式 |
三级标题(heading3) |
| 9 | 居中 + 字号≥20 | 标题(title) |
| 10 | 位置比例判断 | 抬头/署名 |
| 11 | 冒号结尾的短文本 | 正文开头(body_opening) |
| 12 | 长度≥20 的长文本 | 正文(body) |
3.3 实时格式验证
前端内置规则引擎,每 3 秒自动对全文进行格式验证,检查项包括:
- 段落样式属性:对齐方式、字体、字号、首行缩进是否与段落类型对应的规则匹配
- 全局行间距:全文行间距是否为固定值 30 磅
- 段前段后间距:全文段前段后间距是否为 0
- Run 级别检查:每个文本片段的字体、字号是否与段落类型规则一致
- 数字字体检查:包含阿拉伯数字的文本片段是否使用 Times New Roman 字体
- 文号特殊检查:文号类型段落是否包含〔年份〕格式
- 错误可视化:不合规的段落下方显示红色波浪线,左侧错误列表面板实时显示所有错误详情
3.4 一键智能修复
用户点击「一键修复」按钮后,系统自动完成以下操作:
- 删除冗余:自动删除图片上下方的空白段落,优化文档结构
- 统一样式:根据段落类型对应的规则,统一设置对齐方式、字体、字号、首行缩进、行间距、段前段后间距
- 修复 Run:拆分混合字体 Run(数字部分单独设为 Times New Roman),统一 Run 的字体、字号、加粗属性
- 文号格式化:自动将文号中的年份格式化为〔YYYY〕标准格式
- 重新渲染:修复完成后自动重新渲染编辑器内容,并重新验证,清除已修复的错误标记
四、技术架构
4.1 技术栈
后端: Python 3.10 + FastAPI + python-docx + Uvicorn。FastAPI 提供 RESTful API,python-docx 负责 Word 文档的解析与生成。后端还集成了基于 StructBERT 微调模型的 AI 分类器(可选),支持 GPU 加速推理。
前端: Vue 3 + TipTap 3.0 + Element Plus + Vite。TipTap 是基于 ProseMirror 的现代富文本编辑器,支持自定义扩展(如错误波浪线、自定义图片、分页等)。Element Plus 提供 UI 组件库。
4.2 系统架构
graph TB
subgraph Browser["用户浏览器"]
subgraph Frontend["Vue 3 + TipTap 前端"]
Editor["编辑器 TipTap"]
Toolbar["工具栏 字体/字号"]
ErrorList["错误列表 波浪线"]
Export["导出下载"]
end
end
subgraph Backend["FastAPI 后端 :5000"]
subgraph Services["服务层"]
Parser["WordParser .docx解析"]
Classifier["RuleClassifier 段落分类"]
Generator["WordGenerator Word导出"]
end
end
Frontend -->|"HTTP JSON"| Backend
4.3 数据流设计
系统采用「单一数据源」架构,originalParagraphs 是整个系统的唯一数据源。后端返回的段落数据直接赋值给 originalParagraphs,渲染、验证、修复、导出都使用同一个引用,避免数据不一致。
编辑器作为纯展示层,用户编辑内容时仅同步文本、Run 样式和对齐方式,不触碰 expectedType、字体、字号等由后端决定的属性。
4.4 关键设计决策
- 规则引擎统一:
TYPE_RULES只在useDocumentValidator.js中定义一份,验证器和修复器共用同一份规则 - 编辑器同步策略:使用
isRendering和isFixing两个锁保护,确保渲染和修复过程中不会触发编辑器同步 - 空段落保留:空段落在渲染时使用行间距作为高度,与 Word 行为一致;导出时保留所有空段落
- 图片尺寸精确:后端从 Word XML 读取 EMU 值并转换为 cm(1cm = 360000 EMU),前端用 CSS cm 单位渲染
五、项目亮点
- 全流程自动化:从上传、解析、分类、验证到修复、导出,全流程自动化,用户只需上传文档并点击一键修复
- 所见即所得:基于 TipTap 富文本编辑器,编辑体验流畅,支持实时预览,修复效果立即可见
- 实时验证反馈:错误段落下方显示红色波浪线,左侧面板实时显示错误列表,快速定位问题
- 高精度段落分类:规则分类器覆盖 12 种段落类型,结合位置比例和文本特征,分类准确率高
- 格式还原度高:导出的 Word 文档在字体、字号、行距、页边距等方面与原文高度一致
- 可扩展架构:规则引擎和分类器均为模块化设计,支持轻松添加新的段落类型和验证规则
六、应用场景
- 党政机关:各级政府部门的公文格式审查,确保发文符合 GB/T 9704 标准
- 企事业单位:企业内部公文的格式规范化处理
- 教育培训:公文写作培训中,自动检查学员练习的格式是否规范
- 文档管理:大量历史公文的批量格式化处理
- 出版排版:出版社、印刷厂在排版前对公文进行格式预检
七、总结
公文格式审查系统通过深度解析 Word 文档结构、智能识别段落类型、实时验证格式合规性、一键修复格式错误,实现了公文格式审查的全流程自动化。系统采用前后端分离架构,前端基于 Vue 3 + TipTap 提供流畅的编辑体验,后端基于 FastAPI + python-docx 提供强大的文档处理能力。
本项目的核心价值在于:将原本需要人工逐项检查、耗时数分钟甚至数十分钟的公文格式审查工作,缩短到几秒钟内自动完成。这不仅大幅提升了工作效率,也有效降低了因格式不规范导致的退文率,具有显著的实用价值和推广意义。