前言¶
毕业论文有两件容易被忽略的事。一是查重,重复率、AIGC 这些指标有现成的检测系统,相对好办。二是排版:页边距差 0.2 厘米、标题字号不对、三线表边框粗细不一致,这类问题没有系统会替你报错,只能人工对着学校那份几十页的《撰写规范》逐条核对,一本论文花掉一两天是常事。
需要先交代一处资料冲突,否则后面的内容会让人困惑。任务给出的线索把 paper-check 描述为「论文查重与检测」,并给出官方地址 https://api.skillhub.cn/user_291e4e7e/paper-check。但本次访问该地址与 SkillHub 列表页(https://www.skillhub.cn/skills/clawhub_sashavegal/paper-check)均失败,能打开的上游仓库 https://clawhub.ai/sashavegal/paper-check 中,同一坐标 @clawhub_sashavegal/paper-check 的实际说明是「毕业论文格式规范检测、自动修复与对比报告生成」,与查重无关。线索里的评分 99256、下载 1201、分类 education,也与已抓取的列表快照(评分 100000、下载 8662、安装 498、分类 office-efficiency)不一致。
因此下文介绍的是这个可核实的格式检测版本。
这是什么¶
paper-check 是一个本科/研究生毕业论文格式规范检测、自动修复与对比报告生成的 Skill。发布者 sashavegal,来源 clawhub,版本 1.0.0,许可证 MIT-0,上游仓库 https://clawhub.ai/sashavegal/paper-check。
它解决的问题是:把学校撰写规范文档解析成结构化检查项,对论文 .docx 文件逐项比对,能自动修复的直接改,改完输出一份带颜色区分、带修改位置定位的对比报告。不需要 API Key,本地 Python 脚本运行。
官方给出的工作流是:规范解析 → 格式检测 → 问题诊断 → 自动修复 → 对比报告生成。
核心功能¶
规范来源可替换。 规范文档支持 .doc / .docx / .txt / .pdf,解析后提取页面设置、字体字号、段落格式、页眉页脚、标题格式、表格格式、图片格式、参考文献著录格式、特殊部分格式等要求,存放在 references/format_rules_template.md 的结构里。用户没有提供规范文档时,退到内置的「通用默认规范」,基于 GB/T 7713.1-2006 等国标和多校通用惯例执行,并建议提示用户补交院校规范。
检测覆盖到样式层级。 scripts/check_format.py 扫描每个节的页边距与页眉页脚距、Normal 与 Heading 1-4 等样式定义、段落的对齐/间距/缩进/字体、表格边框、图片尺寸与位置、编号列表定义、文档默认字体。
问题清单分级。 诊断结果每条包含位置、检查项、规范要求、当前值、严重程度(高/中/低)、修复建议。高是页边距、标题字体字号、行距这类影响整体排版的问题;中是缩进单位、段前段后间距;低是需要人工确认的内容性问题,如参考文献著录、页眉横线。
自动修复有明确边界。 可自动修:页面边距与装订线、首行缩进(固定厘米值转字符单位)、悬挂缩进、段前段后间距、对齐方式、中英文字体与字号、页眉内容与格式、表格三线表边框、标题字间距。修不了的会显式列出:页眉横线(python-docx 限制)、参考文献编号内容、目录更新、图片与公式精确定位、脚注格式。
对比报告定位到段落。 scripts/generate_report.py 输出 .docx、A4 横向,6 列表格(序号 | 位置/定位 | 检查项 | 规范要求 | 修改前 | 修改后),修改前红色、修改后绿色加底纹,同类修改合并显示范围并附章节名与原文预览,另附人工确认事项与规范来源。
安装与启用¶
官方提供的安装命令如下,安装入口是 ClawHub 的 skills 命令行:
$ openclaw skills install @sashavegal/paper-check
前置条件是 Python 3.7+,以及三个依赖库:
$ pip install python-docx lxml pywin32
其中 python-docx 必需,pywin32 仅在 Windows 下读取 .doc 格式时需要,lxml 用于底层 XML 处理。官方资料没有给出 Cursor、Codex CLI、Claude Code 的分别安装方式,本文不做推测。
典型用法¶
按工作流顺序执行。第一步扫描论文格式属性,输出检测报告:
$ python scripts/check_format.py <论文路径> <报告输出路径>
第二步执行自动修复。修复脚本 template 中各 fix_* 函数的执行顺序有依赖,官方推荐的顺序是先检测再修改:
fix_page_setup(doc) # 无文本依赖
fix_paragraph_indent(doc) # 依赖原文本
fix_references(doc) # 依赖原文本,必须在 fix_special_titles 之前
fix_special_titles(doc) # 会修改文本
fix_header(doc) # 无依赖
原因是类似 fix_special_titles 会把「参考文献」改成「参 考 文 献」,后执行的 fix_references 若仍用 '参考文献' in text 检测就会失效。官方给的规避办法是先用清理空格后的文本匹配,或直接调用已处理好依赖关系的 fix_format.py 内置函数。
第三步生成报告,有两个接口:
create_report_from_records(output, title, subtitle, date, records) # 推荐,从 fix_format.repair_records 自动生成,智能合并同类修改
create_report(output, title, subtitle, date, total, categories) # 兼容 v2.0,手动传入 categories
修复记录必须逐条写入。只改属性不调用 add_record 的话,报告里会缺少该分类。调试时可以按分类统计记录数:
for cat in ['页面设置', '特殊标题', '段落格式', '页眉', '参考文献']:
count = sum(1 for r in repair_records if r['category'] == cat)
print(f"{cat}: {count} 项")
适用场景与注意¶
适合要按学校规范逐项核对并批量修正 .docx 论文的用户,尤其是规范文档完整、允许脚本直接改文件的情况。
几个需要注意的地方:
1、默认规范不等于你的学校规范。 不提供规范文档时用的是多校通用默认值(A4、页边距上 2.8cm / 下 2.2cm / 左 3.0cm / 右 2.0cm、正文小四宋体、1.5 倍行距、首行缩进 2 字符、参考文献 GB/T 7714-2015、三线表上下粗线 1.5 磅中间细线 1 磅)。正式送审前必须以本校文件为准重跑一次。
2、.doc 格式依赖 Windows 和 pywin32。 其他平台或缺依赖时,.doc 输入走不通,需要先转成 .docx。
3、不是所有格式问题都能自动化。 目录更新必须在 Word 里手动操作,图片和公式的精确定位、脚注格式同样要人工处理,报告会列出这些待确认项。
4、缩进单位要转换。 Word 里首行缩进有固定厘米值和字符单位两种,后者随字号自动调整。修复脚本需要把固定值转成字符单位,写法是 ind.set(qn('w:firstLineChars'), '200') 并配合设置 w:firstLine。
5、Normal 样式可能自带缩进。 居中标题这类不需要缩进的段落必须显式把 w:ind 的两个值都设为 0,只删元素不够。
6、标题检测容易被目录条目误判。 目录里的「致 谢\t43」会被 if '致谢' in text 命中,应清理空格和制表符后精确匹配,或用正则 re.match(r'^致\s*谢$', text.strip()) 并加长度约束。
7、页眉字体要设两遍。 中文用宋体、西文用 Times New Roman,需要同时设置 w:eastAsia 和 w:ascii / w:hAnsi,只设一边会出现混排字体不一致。
结尾¶
paper-check 的价值在于把「对着规范文档人工核对排版」这件事变成可重复执行的脚本流程,并且把每处改动连同依据落到对比报告里,方便交导师或自己复查。它不替代查重,只解决排版这一层。
官方地址:https://clawhub.ai/sashavegal/paper-check