教材科学方法遍历与汇总
把一套教材的科学方法呈现情况做成可交付的审计报告。机器负责粗筛与校验,你负责精读与判读——
两者不能互相替代:正则只能告诉你"哪一节可能有什么",只有读了原文才能判断这句话到底是显性点名还是隐性体现。
产出
同一次运行产出两版,数据同源、绝不漂移:
<名称>.html—— 交互式报告:侧栏 26 法导航 + 全文搜索、章×方法矩阵、节级密度表、A4 打印样式<名称>.md—— 同一份数据的 Markdown 版,便于二次编辑与归档
前置条件
- Python 3(Windows 用
d:/hybjy/anaconda3/python.exe;已装 PyMuPDF 用于印页定位) - 教材全文 md(MinerU 等工具转写),按册分成若干文件
- 教材 PDF(可选,用于印页定位;没有则报告缺页码,其余照常)
- 标尺文件:
初中物理科学方法三层分类体系.md(用于自动填充每法的定义与本质)
适用版本
已验证可用的初中物理教材版本(任选其一即可跑通五步流程):
- 沪科版(廖伯琴主编,2024 版)——
scripts/examples/config_huke.py - 人教版(2024 版)——
scripts/examples/config_renjiao.py - 其他版本(科教/北师大/苏科/沪粤/鲁科/京版/李春密/沪科粤等):复制
scripts/config_template.py改为config_<版本>.py,按本技能的五步流程自行配置即可;坑位见references/pitfalls.md。
> 约束:教材需有 MinerU 等工具转写的 markdown 全文(按册分文件);PDF 用于印页定位,扫描件无文字层时报告缺页码、其余照常。
五步工作流
先建一个工作目录(例如教材同级的 科学方法/),全部脚本与中间产物都放里面。
Step 0 · 写版本配置
复制 scripts/config_template.py → config_<版本>.py,逐项填写。
参照已验证的范例:scripts/examples/config_huke.py 或 scripts/examples/config_renjiao.py。
必须填对的三项:
| 字段 | 说明 |
|---|---|
BOOKS |
有序的〔册键, md 相对路径〕,册键如 八上/八下/九上/九下(五四制可改 八全/九全) |
CHNAME |
章号 → 章名,从目录抄;章名若在图里无文字层,必须手工补 |
POFF / PGRANGE |
印页偏移与合法区间,由 Step 1~2 标定 |
可选但强烈建议填对的两项:
| 字段 | 说明 |
|---|---|
CALIB |
3~5 个校准锚点,给 calibrate.py 自动推算 POFF;锚点要长且唯一 |
CHAP_PATTERNS / SEC_PATTERNS |
章/节标题正则;切分失败时按 references/pitfalls.md 第一节补写法 |
Step 1 · 抽 PDF 逐页文本
python scripts/extract_pages.py --config config_xx.py --out pages.pkl
无文字层的扫描件会当场提示,这类册印页不可用。
Step 2 · 标定印页偏移
在 config 的 CALIB 里填 3~5 个锚点(节名或正文首句中的独特文字 → 教材印页,从目录/教材抄):
CALIB = {'八上': [('动与静', 10), ('快与慢', 15), ('光的反射', 63)],
'九下': [('磁的奥秘', 135), ('通电螺线管外部磁场的方向', 141)]}
python scripts/calibrate.py --config config_xx.py --pages pages.pkl [--write]
--write 直接写回 POFF。锚点要长且唯一——短节名会出现在页眉上,导致多个偏移并列。
脚本会报告并列情况,并列时人工抽查 2 页确认。
再填 PGRANGE(该册正文首页印页 ~ 末页印页)。这步不能省:不设就会出现 P-5 这类匹配到目录页的假页码。
Step 3 · 切分 + 粗筛
python scripts/prepare.py --config config_xx.py --work work/
产出 sections.json(节清单)与 scan.json(26 法 × 命中最高前 8 节 + 命中片段)。
控制台会打印章节清单与结构自检——章号不连续、节名为空、未归属到章都会报出来,必须先修到"自检通过"。
Step 4 · 精读,写证据库(核心工作量,只能你来做)
读 scan.json 的候选片段,回到原文确认,然后写 evidence.py:
EVID = {
'A3': {
'ex': [ (('八上', 6, 4), '能运用控制变量法收集证据', '实验目的第2条,教材直接点名'),
(('八上', 6, 4), '在探究压力大小对滑动摩擦力大小的影响时,要保持接触面的粗糙程度等因素不变', '「变什么/控什么」逐一写清') ],
'im': [ (('九下', 19, 3), '实验时保持磁体位置不变', '隐性控制变量的典型句式') ] },
# … 26 法全部
}
ex= 显性点名(教材出现方法名或学名);im= 隐性体现(没出现方法名但执行了该方法)- 每条:
((册, 章, 节), '教材原句', '说明') - 原句逐字照抄,不许改写——脚本会回查,改了一个字就校验失败
- 每法 6~9 条,覆盖不同章,选最有教学价值的而非最好找的
- 判读口径见
references/three-layer-ruler.md(含 26 法逐条识别特征与易错点)
顺手写 content.py(可选但强烈建议):
TIPS[mid]每法一条教学提示CHAINS5~6 个典型课例的 A→B→C 三层方法链LM教材栏目 → 承载的方法(19 个栏目量级)SUG[mid]隐性方法的显性化补位话术
Step 5 · 生成双版报告
python scripts/build.py --config config_xx.py --evidence evidence.py \
--content content.py --work work/ --out "XX版初中物理科学方法汇总"
脚本会先校验:引文是否真在原文里、节定位是否成功、页码是否落在合法区间。
见到"校验告警 0 条"才算合格;有告警就回到 Step 4 修证据,不要用手工改产物来绕过。
最小调用示例(5 行跑通沪科版)
已验证的沪科版工作流最简路径:
# 复制范例配置 → 落到工作目录
cp scripts/examples/config_huke.py 科学方法/config_huke.py
mkdir 科学方法/work
python scripts/extract_pages.py --config 科学方法/config_huke.py --out 科学方法/pages.pkl
python scripts/calibrate.py --config 科学方法/config_huke.py --pages 科学方法/pages.pkl --write
python scripts/prepare.py --config 科学方法/config_huke.py --work 科学方法/work/
# 人工写 evidence.py / content.py 后:
python scripts/build.py --config 科学方法/config_huke.py --evidence 科学方法/evidence.py \
--content 科学方法/content.py --work 科学方法/work/ \
--out "沪科版初中物理科学方法汇总"
跑完一次后再换版本:把 config_huke.py 改名复用、Step 4 的证据按新章节重写一遍。
交付前自检
- [ ]
prepare.py报"章节结构自检通过" - [ ]
build.py报"校验告警 0 条" - [ ] 报告里没有
P—(缺页)和页待核 - [ ] 抽查 3 条引文,翻到教材对应印页确认对得上
- [ ] HTML 顶部没有样式代码泄漏(
<style>应只有一对)
更多坑位(切分形态、分册错位、OCR 质量、CSS 拼接)见 references/pitfalls.md。
文件说明
| 文件 | 作用 |
|---|---|
scripts/config_template.py |
版本配置模板,换版本只改这里 |
scripts/examples/config_huke.py |
沪科版配置范例(已验证) |
scripts/examples/config_renjiao.py |
人教版配置范例(已验证) |
scripts/extract_pages.py |
PDF → 逐页文本 pages.pkl |
scripts/calibrate.py |
自动推算印页偏移 |
scripts/prepare.py |
切分章节 + 命中统计 + 导出候选片段 |
scripts/build.py |
校验 + 定位 + 一次产出 HTML 与 Markdown |
scripts/common.py |
26 法标尺、检测正则、切分与页码定位(改判据才动它) |
references/three-layer-ruler.md |
写证据前必读:26 法识别特征、显隐性口径、判读分档 |
references/pitfalls.md |
坑位清单与自检清单 |
assets/report_style.css |
报告样式(中式墨金主题 + 报告组件) |