做毕设的时候最烦的事情之一,就是把写好的论文内容手动调格式——标题居中、正文首行缩进、行距1.5倍、页眉页脚……每次改完内容又要重新调一遍。

于是我做了一个小工具:doc-formatter,让 AI 帮你排版。

项目主页

它能做什么

简单来说:上传一个排好版的 Word 模板 + 上传你的数据文件 → AI 自动理解模板格式 → 输出排好版的成品

支持 Word (.docx) 和 Excel (.xlsx) 两种格式。

举个例子:你有一个学校提供的论文模板,里面规定了一级标题居中15pt加粗、正文两端对齐12pt首行缩进0.85cm。你只需要把这个模板传上去,再传你的论文内容,AI 就会按照模板的格式规范帮你把所有段落排好。

技术架构

项目架构图

核心思路是用 AI Function Calling 来操作文档,而不是让 AI 生成 Python 代码再去执行。这样更可靠,也更安全。

工作流程只有 3 步:

  1. read_file — 读取文件,自动创建 Document 副本,提取模板页眉
  2. batch_set_paragraph_format — 一次调用提交所有段落格式操作
  3. finalize — 自动设置页眉页脚 + 验证文件

相比之前让 AI 生成代码再执行的方案,步骤从 5+ 步减少到 3 步,而且不再有代码执行的安全风险。

项目结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
doc-formatter/
├── app.py # Flask Web 应用入口
├── core/
│ ├── agent.py # Function Calling 调用循环
│ ├── tools.py # 11 个结构化工具
│ ├── session.py # 会话管理 + Document 缓存
│ └── post_processor.py # 格式验证
├── frontend/ # 前端界面
├── prompts/ # AI 系统提示词
├── skills/
│ └── docx_formatting/
│ └── SKILL.md # 排版规范知识文档
├── static/ # 静态资源
└── test_cases/ # 测试用例

做了哪些改进

项目经历过一次大重构,主要改进:

改进项 改造前 改造后
一级标题对齐 两端对齐 居中 15pt 加粗
正文首行缩进 0.85cm
页眉页脚 自动从模板提取
格式化段落数 0/73 63/63
工作流程 5+ 步 3 步
模板格式识别 无法获取 自动分析

还加了 Markdown 语法清理——数据文件里的 #** 等标记会干扰 AI 判断段落类型,现在会自动清理掉。

怎么用

1
2
3
4
5
6
7
8
9
10
11
git clone https://github.com/wenxixixi-miao/doc-formatter.git
cd doc-formatter
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

export AI_API_BASE="https://api.openai.com/v1"
export AI_API_KEY=sk-xxx
export AI_MODEL=gpt-4o-mini

python app.py

浏览器打开 http://localhost:5000 就能用了。

写在后面

这个工具的初衷就是解决毕设排版的痛点。目前支持 5 种文档类型:中文论文、商业报告、技术文档、课程教案、通用文档。AI 会根据内容自动判断类型,选择对应的格式规范。

项目刚起步,还有很多可以优化的地方——比如支持 PDF、支持批量处理多个文档、支持更复杂的模板分析等。

GitHub 地址:wenxixixi-miao/doc-formatter

欢迎试用和反馈 🙌