paper-format-check:用规则批量体检 Word 实验报告与论文格式

前言

在 DeepSeek Harness(DSH)里做技能或批改流程时,经常碰到一类需求:学生交的是 .docx,学院给的却是给人读的 PDF 格式说明——字号、行距、页眉学号姓名、图题编号等全是可判定的机械项,却没法批量比对。Word 的「显示格式」只能逐段看,「格式刷」解决的是改不是查。缺的是把「格式要求」变成可执行规则、再拿规则扫全文的工具。下面介绍社区插件 Stephen-pc/paper-format-check:只读检查 docx,输出可定位、可执行的修法清单,并可作为 DSH 技能插件接入。

这是什么

paper-format-check 由维护者 Stephen-pc 发布,定位是论文与实验报告的格式体检。给定一份 .docx 和一套格式规则,输出带编号的问题清单;每条 finding 会指到标题路径、段内序号,并附一句在 Word 里怎么改。

引擎分三层:scripts/ooxml.py 解析 docx、scripts/checks.py 判定、scripts/check.py 编排与 CLI——加规则不必碰 XML 解析。检查端为纯 Python 标准库,不需要 python-docx 等第三方包;原件只读,判定口径偏保守(宁可漏,不可误报)。

插件在 SkillHub 目录页:https://www.skillhub.cn/plugins/Stephen-pc/paper-format-check。源码与说明:https://github.com/Stephen-pc/paper-format-check。许可为 MIT;package.json 版本为 0.1.0。

核心功能

会查什么

  • 正文字号、首行缩进、行距、中文字体
  • 页眉是否带学号与姓名(CLI 可通过 --student-id、--student-name 传入期望值)
  • 页边距(逐节)
  • 图题、表题的编号连续性
  • 手动换行(Shift+Enter)与连续空段落
  • 标题各级字号与加粗

不查:正文内容(错别字、语句、抄袭)、自动修复、.doc 格式。

输出长什么样

命令行会列出预设、统计信息、已执行的检查项,以及类似 [F001] 的问题条目。示例(摘自仓库 README):

$ python scripts/check.py 实验三_HBase\ shell\ 操作.docx --student-id 2411020125 --student-name 彭超

报告:实验三_HBase shell 操作.docx
预设:实验报告 非空段落:86 表格:2 图片:5
已查:header、margins、bodyRange、body、breaks、captions、headings

[F001] header
    页眉里找不到姓名 彭超(当前页眉:2411020125)
    修法:双击页眉 → 补上姓名 彭超

[F002] body · 二、实验内容 · 第 12 段「随着数据量的增长,HBase 采用…」
    字号 五号 10.5pt,要求 小四 12pt
    修法:选中该段 → 字号改为 小四 12pt

结论:有 3 处必须修改(error 3 · warn 0 · info 0)

规则外置在 references/rules.json;插件本身不带某一学院的「唯一正确答案」。复制后改 presets,用 --rules 指向你的 JSON;字段含义见包内 references/rules.md。

判定口径(设计约束)

  • 读不到就不报 error(可报 info);不确定就降级(如文档网格、固定值行距、SEQ 域、自动编号)。
  • 能定位才报:每条必须指到标题路径 + 段内序号。
  • 若本次真正比较过的检查项为 0,禁止判通过,避免规则写错导致静默跳过却显示通过。

安装与启用

作为 DeepSeek Harness 插件安装(命令来自仓库 README):

dsh plugin --profile web add github:Stephen-pc/paper-format-check

包内 package.json 已声明 dsh.bundle,且 lib/ 已提交,因此不需要 allowBuilds 授权。Node 侧要求 engines.node >= 18(用于 DSH 集成与自测脚本)。

若只想本地跑检查、不装 DSH 插件,可克隆仓库后直接用 Python 3.8+ 调用 CLI(同样零第三方 Python 依赖):

git clone https://github.com/Stephen-pc/paper-format-check
cd paper-format-check
python scripts/check.py 你的报告.docx

注意:插件在 DSH 进程中以当前用户权限运行;安装前应自行审阅源码与 MIT 许可证。SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

单份报告(默认「实验报告」预设):

python scripts/check.py 报告.docx
python scripts/check.py 报告.docx --preset 学位论文
python scripts/check.py 报告.docx --list-presets
python scripts/check.py 报告.docx --show-rules
python scripts/check.py 报告.docx --json
python scripts/check.py 报告.docx --strict
python scripts/check.py 报告.docx --ignore margins

自定义规则文件:

cp references/rules.json 我的格式.json
# 编辑 我的格式.json
python scripts/check.py 报告.docx --rules 我的格式.json --preset 我的格式

助教批量批改目录:

python scripts/check.py --batch 作业目录
python scripts/check.py --batch 作业目录 --fail-list
python scripts/check.py --batch 作业目录 --strict --fail-list

退出码:0 通过,1 不通过,2 文件读不了(不存在 / 非 docx / 加密 / XML 损坏)。

插件集成自测(仓库内):

node tools/dsh-selftest.mjs

适用场景与已知限制

适合:需要按学院规则批量筛查 docx 格式的学生、助教,或在 DSH 技能流里挂一个「提交前格式 gate」的开发者。

已知限制(README 明示):编号连续性、章号一致、页码域、纸张尺寸尚未实现;参考文献格式只做形态提示,不做判定;误报率尚未用 ≥20 份真实文档验收(设计稿目标 precision ≥95%)。

结尾

paper-format-check 把可读 PDF 里的格式要求落到 rules.json,用只读扫描给出可执行的 Word 修法,并支持 DSH 插件安装与 --json / --batch 自动化。目录页:https://www.skillhub.cn/plugins/Stephen-pc/paper-format-check;仓库:https://github.com/Stephen-pc/paper-format-check。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye