Official Document AI Assistant
基于 GB/T 9704 标准的公文格式智能检测与优化桌面应用
功能界面 · 功能特性 · 快速开始 · 技术架构 · AI 配置 · 项目结构 · 社区与友链 · 开发日志
| 工作台 | 文档处理 |
![]() |
![]() |
| 校审中心 | 模板中心 |
![]() |
![]() |
| AI 配置 | 关于 |
![]() |
![]()
|
- 格式检测 — 依据 GB/T 9704 标准自动检查公文格式(字体、字号、缩进、行距、页边距等),190 条检查规则
- 智能修复 — 一键自动修复格式问题,180 条修复规则,生成优化后的 .docx 文档
- AI 深度分析 — 接入大模型进行语义级分析,按 22 种文种定制检查规则,发现规则引擎无法识别的问题
- 22 种文种 — 支持通知、报告、请示、会议纪要、决定、决议、函、通报等全部法定公文文种
- 多 AI 服务商 — 支持 DeepSeek、通义千问、智谱、Moonshot、MiniMax、腾讯混元、豆包等 23+ 服务商
- AI 建议应用 — AI 发现的问题可勾选后一键应用到文档
- 模板管理 — 内置官方模板 + 自定义模板,支持三级优先级合并
- A4 实时预览 — 左右分栏布局,左侧格式设置 + 右侧 A4 预览,支持版头版记、Markdown 转公文、表格渲染
- Markdown 转公文 — 识别 # 标题、加粗、列表、表格等 Markdown 语法并自动转为公文格式
- AI 模型监控 — 每 60 秒自动检测所有已配置 AI 模型的可用性,实时显示在线状态和延迟
- 格式提取器 — 从已有文档中提取格式信息,自动生成规则模板
- 本地运行 — 数据不离开本机,API Key 加密存储
双击 启动应用.bat,自动安装依赖并启动。
# 1. 克隆仓库
git clone https://github.com/linhut/document-ai-assistant.git
cd document-ai-assistant
# 2. 启动后端
cd backend
pip install -r requirements.txt
python main.py
# 3. 启动前端(新终端)
cd frontend
npm install
npm run electron:dev| 依赖 | 版本 | 说明 |
|---|---|---|
| Python | >= 3.12 | 下载地址 |
| Node.js | >= 20 | 下载地址 |
# Windows
cd frontend
npm run electron:build:preview
# 输出: frontend/release/AI公文智能优化助手 Setup X.X.X.exe
# Linux x86_64 (需在 Linux 环境执行)
npm run electron:build:linux
# 输出: frontend/release/*.AppImage + *.deb
# Linux ARM64 (鲲鹏/飞腾,需在对应架构执行)
npm run electron:build:linux:arm64以下指南覆盖 UOS、银河麒麟、OpenEuler 等主流信创系统,提供从环境搭建到应用启动的完整步骤。
# 1. 安装系统依赖
sudo apt update
sudo apt install -y python3 python3-pip python3-venv nodejs npm libreoffice-common fonts-wqy-zenhei
# 如果 Node.js 版本低于 20,需安装 nvm 升级:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
# 2. 安装公文字体(项目自带)
sudo mkdir -p /usr/share/fonts/custom
sudo cp TTF/*.TTF /usr/share/fonts/custom/ 2>/dev/null
sudo cp TTF/*.ttf /usr/share/fonts/custom/ 2>/dev/null
sudo fc-cache -fv
# 3. 克隆项目
git clone https://github.com/linhut/document-ai-assistant.git
cd document-ai-assistant
# 4. 创建 Python 虚拟环境并安装依赖
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 5. 启动后端(后台运行)
nohup python main.py > ../backend.log 2>&1 &
# 6. 启动前端
cd ../frontend
npm install
npm run electron:dev
# 7. .doc/.wps 转换依赖 LibreOffice(apt 已安装)
# 后端会自动调用 libreoffice --headless 进行格式转换# 1. 安装系统依赖
sudo apt update
sudo apt install -y python3 python3-pip python3-venv nodejs npm libreoffice-common fonts-wqy-zenhei
# Node.js 升级到 20+(Kylin 自带版本可能较低)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
nvm use 20
# 2. 安装公文字体
sudo mkdir -p /usr/share/fonts/custom
sudo cp TTF/*.TTF /usr/share/fonts/custom/ 2>/dev/null
sudo cp TTF/*.ttf /usr/share/fonts/custom/ 2>/dev/null
sudo fc-cache -fv
# 3. 克隆项目
git clone https://github.com/linhut/document-ai-assistant.git
cd document-ai-assistant
# 4. Python 环境
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 5. 启动后端
nohup python main.py > ../backend.log 2>&1 &
# 6. 启动前端
cd ../frontend
npm install
npm run electron:dev# 1. 安装系统依赖(OpenEuler 使用 dnf)
sudo dnf install -y python3 python3-pip nodejs npm libreoffice-core libreoffice-writer wqy-zenhei-fonts
# Node.js 升级
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 20
# 2. 安装公文字体
sudo mkdir -p /usr/share/fonts/custom
sudo cp TTF/*.TTF TTF/*.ttf /usr/share/fonts/custom/ 2>/dev/null
sudo fc-cache -fv
# 3. 克隆项目
git clone https://github.com/linhut/document-ai-assistant.git
cd document-ai-assistant
# 4. Python 环境
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 5. 启动后端
nohup python main.py > ../backend.log 2>&1 &
# 6. 启动前端
cd ../frontend
npm install
npm run electron:dev龙芯/申威架构上 Electron 不可用,使用纯 Web 模式:后端本地运行 + 浏览器访问。
# 1. 安装 Python(龙芯 loongnix 自带,申威需编译安装)
sudo apt install -y python3 python3-pip python3-venv libreoffice-common
# 2. 克隆项目
git clone https://github.com/linhut/document-ai-assistant.git
cd document-ai-assistant
# 3. Python 环境
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# 4. 启动后端(监听 0.0.0.0 支持局域网访问)
python main.py
# 5. 打开系统自带浏览器(Firefox / 360 安全浏览器)
# 访问 http://127.0.0.1:8765 即可使用| 事项 | 说明 |
|---|---|
| 公文字体 | 项目 TTF/ 目录包含 3 个核心字体(仿宋_GB2312、方正小标宋简、楷体_GB2312),安装后执行 fc-cache -fv |
| 格式转换 | .doc/.wps 转 .docx 依赖 LibreOffice headless,信创系统通常预装 WPS 或 LibreOffice |
| AI 功能 | 需联网访问 AI 服务商 API(DeepSeek/通义千问等),信创内网环境需配置代理或使用 Ollama 本地模型 |
| Node.js 版本 | Electron 35 需要 Node.js >= 20,信创系统自带版本可能较低,用 nvm 升级 |
| Pydantic 兼容性 | 龙芯/申威上如遇 Pydantic v2 编译失败,可降级:pip install 'pydantic<2' |
| 防火墙 | 局域网访问需开放 8765 端口:sudo firewall-cmd --add-port=8765/tcp --permanent |
Electron Shell
├── React 19 + TypeScript + Vite + TailwindCSS + Radix UI
│ ├── A4 实时预览(左右分栏:设置面板 + 实时渲染)
│ ├── 校审中心(规则检查 + AI 分析 + 分组合并显示)
│ └── Markdown 转公文(标题/加粗/列表/表格 → Word 格式)
└── FastAPI Backend (Python 3.12+)
├── Document Pipeline: Parse → Check → Fix → Generate
│ ├── Parser: 段落/Run/表格/版头版记/行距(EMU→pt)
│ ├── Generator: 段落替换 + 表格定位插入(insert_after_index)
│ └── Modifier: 加粗范围裁剪/Markdown转换/标点规范化
├── Rule Engine: 190+ 条检查 + 180+ 条修复 (YAML 配置)
│ └── 三级合并: official < custom < user
├── AI Manager: 23+ 服务商 (Strategy 模式)
│ └── 模型健康检测: 每 60s 自动探测可用性 + 延迟
└── SQLite: 文档、检查结果、AI 配置(Fernet 加密)
| 类别 | 技术 |
|---|---|
| 前端框架 | React 19 + TypeScript + Vite |
| UI 组件 | Radix UI + TailwindCSS |
| 桌面壳 | Electron 35 |
| 后端框架 | FastAPI (Python 3.12+) |
| 文档处理 | python-docx(解析/生成/修改) |
| 数据存储 | SQLite + SQLAlchemy |
| AI 接入 | OpenAI 兼容协议 + Anthropic Claude (Strategy 模式) |
| 预览渲染 | A4 实时预览(版头版记/表格/Run级加粗) |
| 规则配置 | YAML(三级合并继承:official < custom < user) |
在应用内「AI 配置」页面选择服务商并填入 API Key,支持:
| 服务商 | 默认模型 | 说明 |
|---|---|---|
| DeepSeek | deepseek-chat | 国产首选,性价比高 |
| 阿里云百炼 | qwen-turbo | 通义千问系列 |
| 智谱 AI | glm-4-flash | GLM 系列 |
| Moonshot | moonshot-v1-8k | Kimi 长上下文 |
| 豆包 / 火山方舟 | doubao-1.5-pro | 字节跳动 |
| MiniMax | MiniMax-Text-01 | 海螺 AI |
| 腾讯混元 | hunyuan-lite | 腾讯 |
| OpenRouter | openai/gpt-4o-mini | 聚合 100+ 模型 |
| Ollama | qwen2.5:7b | 本地模型,无需联网 |
| 自定义 | — | 任意 OpenAI 兼容接口 |
├── backend/ # Python 后端
│ ├── api/routes/ # FastAPI 路由 (9个: documents/check/optimize/ai/settings/templates/rules/template_download/office)
│ ├── core/document/ # 文档处理
│ │ ├── parser.py # 解析器 (段落/Run/表格/版头/行距EMU转换)
│ │ ├── generator.py # 生成器 (段落替换 + 表格定位插入)
│ │ ├── modifier.py # 修改器 (加粗范围/Markdown转换/标点规范化)
│ │ ├── models.py # 数据模型 (DocumentModel/Table/Paragraph/Run)
│ │ └── format_extractor.py # 格式提取器 (从文档生成规则模板)
│ ├── core/rules/ # 规则引擎 (加载/检查/修复/管理)
│ ├── ai/ # AI Provider 架构 (OpenAI/Claude/DeepSeek/Ollama/Custom)
│ ├── services/ # 业务服务
│ │ ├── document_service.py # 文档处理编排
│ │ └── model_health.py # 模型可用性定时检测 (60s)
│ └── db/ # 数据模型 (Document/AIConfig/CheckResult)
├── frontend/ # Electron + React 前端
│ ├── electron/ # Electron 主进程 (main.ts/preload.ts)
│ └── src/
│ ├── pages/ # 页面 (Workspace/CheckCenter/EnhancedA4Preview/AISettings/Templates/...)
│ ├── components/ # 组件 (A4PreviewModal/Sidebar/PageHeader/ui/*)
│ ├── hooks/ # 自定义 Hooks (useDocumentConfig)
│ ├── api/ # API 客户端 (axios + 拦截器)
│ └── lib/ # 工具库 (cn/utils/ai-status)
├── rules/official/ # 22 种文种 YAML 规则 (_common.yaml + 类型特定)
├── templates/ # 公文模板 (official + user)
└── tests/ # 自动化测试
| 维度 | 本项目 | AIPoliDoc | 小恐龙公文助手 |
|---|---|---|---|
| AI 分析 | ✅ 23+ 服务商 | ✅ 仅 DeepSeek | ❌ 无 |
| 规则检查 | ✅ 190 条规则 | ❌ 无 | ❌ 无 |
| 文种覆盖 | 22 种法定文种 | 学术论文为主 | 通用公文 |
| 独立运行 | ✅ 桌面应用 | ✅ 桌面应用 | ❌ 需 Word |
| 开源 | ✅ MIT | ✅ MIT | ❌ 闭源 |
| 自动修复 | ✅ 180 条修复规则 | ❌ | ✅ 格式化 |
| AI 建议应用 | ✅ 勾选应用 | ❌ | ❌ |
| 测试覆盖 | ✅ 39 个测试 | ❌ | ❌ |
Q: 启动后提示"无法连接到后端服务"?
A: 确认后端已运行(终端显示 Uvicorn running on http://127.0.0.1:8765)。如果端口被占用,运行 python main.py --force。
Q: AI 分析报错 429(限流)? A: API 请求频率超限,系统会自动重试(最多 5 次)。等待 1-2 分钟后重试,或切换到其他 AI 服务商。
Q: 优化后的文档字体不对? A: 请确保系统安装了公文字体(仿宋_GB2312、黑体、楷体_GB2312、方正小标宋简体)。TTF 目录下有字体文件,双击安装即可。
Q: 如何添加自定义规则?
A: 在「规则管理」页面可以查看和编辑规则。自定义规则保存在 data/user_rules/,优先级高于官方规则。
Q: 支持哪些文档格式?
A: 支持 .docx、.doc、.wps 三种格式。.doc 和 .wps 文件会自动转换为 .docx 后处理。
详见 CHANGELOG.md
感谢以下开源项目和社区对本项目的支持与启发






