把格式混乱的 Word 文档排成规范公文(Word-Formatter-Pro)
Word-Formatter-Pro 是一个用 Python 写的桌面排版工具,把来源不一的 Word、WPS、TXT、Markdown 稿件转成规格统一的 .docx,支持标题分级识别、编号转换和批量目录处理。这篇按功能、安装、CLI 参数、输出位置和真实 Issue 逐项过一遍,帮需要批量排公文和报告的人判断它省不省事、哪些平台还缺依赖。
公文、报告、投稿论文这类文档对排版有一致要求:页边距固定,标题分级,正文首行缩进两字符,字体字号行距都要对齐规范。手里拿到十几份来源不一的稿件,逐份手工调格式要花掉大半天,改完还容易漏掉某一级的缩进。
Word-Formatter-Pro 是一个用 Python 写的桌面排版工具,把格式混乱的 Word、WPS、TXT、Markdown 文档转成规格统一的 .docx,适合需要批量处理公文和报告的人。
它提供 Windows、Kylin 和 macOS 三个平台的发布包,界面用 Tkinter 写,左侧放文件上传、排版按钮和日志区,右侧是可滚动的参数区。核心逻辑同时暴露成命令行,方便脚本调用和批量跑。
默认参数参考常用公文排版规范,覆盖页边距、页码、字体、字号、行距和标题层级。整套沿用可以,逐项改成自己单位的模板也可以。仓库地址是 https://github.com/cwyalpha/Word-Formatter-Pro ,采用 MIT 许可证,主要语言 Python,当前 858 Star、89 Fork、5 个开放 Issue。
主要功能
一键排版与多格式输入。把文件、文件夹拖到列表里,或者直接在软件里粘贴文本,点「开始排版」就生成处理后的 .docx。支持 .docx、.txt、.md,.doc/.wps 按环境处理:Windows 优先用 WPS/Word COM,macOS/Kylin/Linux 尝试调用 LibreOffice 的 soffice,检测不到 LibreOffice 就跳过旧格式文件,其余文件继续处理。拖入超过 1000 个文件的文件夹时会先弹确认框,避免误拖深层目录导致长时间扫描。
标题层级识别。文档开头连续居中、字体字号一致的段落识别为主标题,主标题下方字体字号不同的居中段落认作副标题;TXT/MD 把首个非层级标题段落当题目。四级标题能识别「一、」「(一)」「1.」「(1)」这类常见写法,分别套用对应格式和大纲级别。二级标题与正文挤在同一段时,例如 (一)标题。正文...,程序会在同一段落内为标题和正文分别套格式。图表标题会向上或向下找最近的居中「图...」「表...」段落。附件标识「附件」「附件1」「附件:」能自动设置段前分页,并继续识别附件自己的主副标题。
安全副本处理。原始文件不会被动。程序在系统临时目录里的安全副本,或者由旧格式转换来的 .docx 上执行排版,临时文件命名带进程 ID 和随机后缀,降低重名覆盖的风险。包含图片、图形、嵌入对象的段落只处理其中的文字,不破坏对象本身,也不会改掉可能导致图片显示不全的行距属性。清理段首空白时,包含域代码、书签、批注引用的 run 会被跳过。
Markdown 清理与空行整理。处理 .md 时自动清掉标题标记、粗体斜体标记、链接、图片语法、引用和分隔线。数字编号按源文档保留,不自动递增重排。TXT/MD 提供三种空行处理:不改动任何空行;删除单个空行并把连续多个空行合并成一个;保留单个空行并把连续多个空行合并成一个。默认用第二种。
修订与自动编号预处理。Windows 下优先用 WPS/Word COM 接受修订并转换编号,COM 不可用或失败时回退到 Python 编号转换。macOS/Kylin/UOS/Linux 默认开启「识别自动编号并转换为文字」,覆盖正文、表格及其他已覆盖区域,含中文、日式、多级编号和自动手写混排,可以在全局选项里关掉。Python 转换不自动接受修订;不支持的编号保留原状并记录警告,排版继续。转换后的编号直接接原文,不额外补空格或制表符。
可配置排版参数。页面设置可调上下左右页边距、页脚距、页码对齐方式和页码字体字号,也能强制设为 A4。题目、副标题、一级标题、二级标题、正文及三四级标题分别设字体、字号、行距。v2.7.7 起行距支持磅值与 Word 倍数两种模式,倍数默认 1.0;左右缩进支持厘米或字符,首行缩进沿用 Word 字符语义,默认 2 字符;题目和一级、二级标题可以勾选强制加粗。勾选「自定义数字和字母字体」后能单独设西文字体,默认 Times New Roman。实验性的符号标准化会保守修复中文语境下的中英文标点混用;实验性的表格内容自动调整可统一表头与表格字体、字号、行距、行高、宽度、边框,并自动调整列宽;表格智能对齐让表头、序号列和短文本居中,数字靠右,长文本靠左,默认保留单元格原始对齐。
CLI 与可复用的 Skill。wfp_cli.py 支持单文件、多文件、重复 -i、位置参数和目录批量处理,目录输入默认递归,输出目录保留原结构。skills/doc-format 的 scripts 目录自带完整 CLI、核心逻辑、默认配置和测试代码,单独安装这个文件夹也能运行。内置测试可通过 python wfp.py --test 或 python wfp_cli.py test 执行。
安装与依赖
方式一是直接下发布包。Windows 用户取 .exe,Kylin/Linux 取 .AppImage,macOS Apple Silicon 取 macOS-arm64.app.zip。macOS 包未签名,首次运行如果被系统拦截,需要在「系统设置 > 隐私与安全性」里允许打开。Kylin/Linux 上系统没自动给执行权限的话:
chmod +x Word-Formatter-Pro.v2.7.7.Kylin-V10.x86_64.AppImage
./Word-Formatter-Pro.v2.7.7.Kylin-V10.x86_64.AppImage
方式二是从源码跑,需要 Python 3.x,Kylin 上验证过的目标是 Python 3.12 的 venv 环境。
git clone https://github.com/cwyalpha/Word-Formatter-Pro.git
cd Word-Formatter-Pro
python -m pip install -U pip
pip install -r requirements.txt
python wfp.py
可选依赖按平台分。Windows 下要完整处理 .doc/.wps、修订和自动编号转文本,需要装 Microsoft Office 或 WPS Office,以及 pywin32。macOS/Kylin/Linux 处理 .doc/.wps 建议装 LibreOffice,确保 soffice 可用:
# macOS
brew install --cask libreoffice
# Kylin/Linux
sudo apt-get update
sudo apt-get install libreoffice libreoffice-writer
没装 LibreOffice 时,这些平台上 .wps/.doc 会被记录为跳过,.docx/.txt/.md 照常处理。
最短能跑通的用法
不想开界面就用命令行。一个文件、多个文件、整个目录都能吃:
# 单文件
python wfp_cli.py format -i input.docx
# 多文件或目录
python wfp_cli.py format a.docx -i b.txt -i ./documents -o ./formatted_output
目录输入默认递归子目录,输出目录会保留原来的目录结构。转换 .doc/.wps 时可以指定 LibreOffice 路径,仓库示例里给的是 --soffice 参数。
关键参数
CLI 会自动读取当前目录下的 wfp_config.json,也可以用 --config 指定配置文件、--config-json 直接传 JSON、--set key=value 改单项,以及若干便利开关临时覆盖配置。想先看清有哪些字段:
# 查看当前配置和字段说明
python wfp_cli.py show-config
# 保存配置到当前目录 wfp_config.json
python wfp_cli.py save-config --set body_font=宋体 --set body_size=12
convert_auto_numbering 是自动编号转文字的配置项,v2.7.8 起支持保存到配置里,也能从 CLI 设置。界面侧的参数包括页边距、页码、各层级字体字号行距、缩进、A4 强制、空行处理、符号标准化、表格调整等。依赖选项有联动:附件格式化、自定义数字和字母字体、表格内容自动调整这几个总开关没启用时,对应的细项会置灰不可编辑,当前值仍会显示。配置方案可以加载、保存、保存为默认,也能一键恢复内置默认。
结果在哪里看
界面模式下看左侧日志区,进度条和每条文件的处理日志都在那里。排版任务在后台线程执行,批量处理期间还能滚动日志、调整窗口;任务进行中关窗口会先问一次确认,并尽量把剩余日志刷出来。命令行模式下日志打到终端,生成的文件写到 -o 指定的目录;不指定输出目录时,仓库里没有说明默认写到哪里。原始文件全程不变,改的都是副本。
实际使用中的坑
- 标题格式没套上、首行缩进也丢了。有用户测了几个文档都遇到这个现象,反馈后已解决。这类问题多半和标题识别规则、缩进叠加有关,仓库后续版本对段落缩进做了统一清理,先清掉残留的左缩进、悬挂缩进和固定首行缩进,再按规则设标准首行缩进。
- Windows 11 25H2 上界面只剩右边参数区。左侧上传、排版、日志栏被挤没了,有用户从 2.7.4 一路回退到 v2.6.7 才正常。v2.7.6 修了这个问题:给左侧区域加了最小宽度保护,启动窗口按屏幕尺寸设置初始和最小大小,不再固定 1200×860,帮助菜单里另加了「重置界面布局」入口。该 Issue 状态为已解决。
- macOS 上选文件时 .doc 格式是灰的。有用户报告即使给了完全磁盘访问权限也点不动。macOS 端处理旧格式要靠 LibreOffice 的
soffice,装好 LibreOffice 后旧格式才有转换通道。这条已解决。 - 生成的文件不方便再手工微调。有用户希望能默认套用已经定义好的 Word 排版样式,这样后期手动改更省力。这条目前仍是待解决状态。
和同类放在一起看
| 项目 | 适合谁 | 部署方式 | 主要限制 | 什么情况下选它更合适 | 项目地址 |
|---|---|---|---|---|---|
| Word-Formatter-Pro | 手上一次要处理几十份来源不一的公文、报告,需要统一规格的人 | 下载 Releases 里的 .exe / .AppImage / .app.zip,或源码跑 Python 3.x | 处理 .doc/.wps 依赖本机 Office/WPS 或 LibreOffice,缺了会跳过;macOS 包未签名 | 只需要把文档排成统一规格并批量输出 | Word-Formatter-Pro |
| FanBox | 在一个窗口里同时开文件、终端和改动审阅的人 | 仓库里没有说明 | 它不处理 .docx 的字体、行距、缩进 | 需要把文件和终端操作收进同一个界面时 | FanBox |
| 霞鹜文楷 | 需要一套覆盖简繁日韩汉字的开源楷体做正文或封面的人 | 仓库里没有说明 | 它是字体资源,本身不做任何排版处理 | 缺中文字体、要给文档换字时 | 霞鹜文楷 |
FanBox 和霞鹜文楷都不是文档排版工具,放在这里只给同类选型的读者一个参照:一个管本地操作界面,一个管字体素材。回到排版本身,Word-Formatter-Pro 的短板在字体和旧格式这两处——它不内置字体,中文字体要自己装;旧格式转换得靠本机的 Office、WPS 或 LibreOffice,机器上没有这些,.doc/.wps 就只能跳过。你要是主要处理扫描件、PDF 或在线协作文档,这个工具帮不上。
适合谁
适合单位里负责汇总材料、经常一次拿到多份 Word 稿件要统一格式的人;适合写论文、投稿,需要按期刊模板反复调整标题层级和缩进的研究人员;也适合把排版接进脚本的开发者,命令行和 Skill 两种形态都能嵌进已有的处理流程。
不适合只偶尔改一两份文档、手工调几分钟就完事的人;不适合需要处理 PDF、扫描件或在线文档的场景;也不适合完全不能在本机装 Office、WPS 或 LibreOffice 的环境,因为旧格式转换这条路会被直接跳过。
焚评:这个项目的量化评分
本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.0 分(满分 10)。下表是各维度的得分:
| 评分维度 | 得分 |
|---|---|
| 热度动量(权重 25%) | 10.0 / 10 |
| 开发活跃(权重 25%) | 7.0 / 10 |
| 社区响应(权重 15%) | 9.9 / 10 |
| 文档质量(权重 15%) | 8.5 / 10 |
| 发布节奏(权重 10%) | 10.0 / 10 |
| 风险控制(权重 10%) | 10.0 / 10 |
评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。
内容核验说明
把 Word 批量排成统一公文规格的工具不多,这篇把功能、安装、CLI、平台依赖和真实 Issue 都摆出来了,适合单位里要汇总多份稿件的人先判断省不省事。需要留意:排版效果与 Issue 修复状态来自作者和提交者,诀.com 未独立验证;旧格式转换依赖本机 Office/WPS 或 LibreOffice,缺了会跳过。
GitHub 指标为 2026-10-15 抓取快照,未独立复核;功能描述、Issue 修复状态与内置测试均来自仓库和提交者公开内容,文中的数据来自原作者公开披露,诀.com 未独立验证;排版效果受本机环境、字体和 Office/WPS/LibreOffice 影响,结果不保证复现。用户反馈摘要
根据仓库 Issue 来看,提交者主要讨论格式细节和平台适配:标题格式/首行缩进缺失、Win11 25H2 左侧 UI 消失、macOS 版本与 .doc 选择、Kylin V10 Arm 版需求,以及字体加粗、宋体黑体、Times New Roman、标题行距等,多数状态为已解决。待解决 Issue 提出按字符缩进、按倍数行距,并根据期刊模板分析生成配置。另有提交者提供 v2.8.0 更新,涉及架构重构、附件段落跳转、空行处理修复、后台线程化与内置单元测试。
基于该仓库公开 Issue 整理,只反映提交者报告的现象与诉求,不代表诀.com 立场,也不代表问题已被确认。项目来源与说明
开源项目:cwyalpha(cwyalpha)
本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。
查看项目仓库