教参 → 课堂学习单(teachbook-to-worksheet)
Overview
把教师用的教参/备课 PDF(扫描版、图片版、文字版均可)自动转成学生课堂学习单:
每张一页 A4、可直接打印,包含「今日目标 / 探究活动 / 试一试 / 我的发现·疑问 / 自评」五板块。
支持一次处理多册、每册前若干单元,输出 6 张(或更少)独立学习单 + 合集。
适用场景关键词:教参、备课版、教师用书、学习单、课堂练习、一页 A4、打印、单元目标。
触发条件
用户满足以下任一即触发本技能:
- 给了 PDF 路径,并要求"做学习单 / 课堂练习 / 打印用纸"。
- 提到"根据教参准备学生学习材料""把备课内容转成学生用的"。
- 明确要"一页 A4 / 方便打印"的练习单。
注意:用户输入的 PDF 多为扫描版(正文是图片,无文字层)。不要指望 get_text()
能拿到正文,必须渲染成图后用多模态读图提取。
工作流程
第 0 步:环境准备(仅首次)
确认隔离 Python 已装 PyMuPDF:
python -m pip install --quiet pymupdf
上面请用 WorkBuddy 隔离 Python(见运行时说明)执行,不要装到系统全局。
第 1 步:渲染 PDF + 定位单元
运行 scripts/render_pdf.py:
python scripts/render_pdf.py [PDF路径] --out [渲染目录] --dpi 110
- 文字版 PDF:脚本会直接输出"第N单元 → 第X页"定位报告。
- 扫描版 PDF:定位报告会提示"无文字层",此时逐张读图定位单元起始页——
教参每单元开头是一张大标题页(含"第一单元/第二单元"字样),读p001、p025、
p050等抽样页即可锁定。
若一次给多册 PDF,对每册各跑一次。
第 2 步:读图提取单元内容
用 Read 工具打开渲染出的 PNG,有选择地读(不要全读,浪费上下文):
- 读单元标题页 → 拿单元名与核心素养。
- 读前 2–3 页(单元目标/课时安排)→ 提炼 2–3 条儿童口吻的学习目标。
- 读 1–2 个代表例题/活动页 → 设计"探究活动"与"试一试"题目。
提取要点(写入下一步的 units.json):
- goals:2–3 条,用孩子能懂的话("我能读、写万以上的大数")。
- explore:一个动手/动脑任务,可含 HTML 表格(如数位顺序表)。
- try_it:1 道必做 + 1 道选做,带参考答案 a(印给学生自核对)。
- self_items:3 条自评项(默认:我听懂了/我能做对/我能教别人)。
第 3 步:写 units.json
按 scripts/build_sheet.py 头部注释的 JSON 结构,写一个内容清单。一次可含多单元:
{
"grade": "四年级上册",
"output_dir": "学习单",
"units": [
{
"title": "第一单元《认识更大的数》",
"goals": ["能读、写万以上的大数", "理解十进制数位顺序"],
"explore": "在数位顺序表上标出 1443497378 每一位……",
"try_it": [
{"q": "写出:三亿零五万零二百", "a": "300050200"},
{"q": "把 780000000 改写成以‘亿’为单位", "a": "7.8亿"}
],
"discover_hint": "今天最大的收获 / 还不懂的小问题",
"self_items": ["我听懂了", "我能独立做对", "我愿意教别人"]
}
]
}
explore 与 try_it 的 q 字段支持直接写 HTML 片段(如 table class=ladder 表格),
脚本会原样嵌入;纯文本则自动转义。
第 4 步:批量生成 HTML + PDF
python scripts/build_sheet.py units.json
脚本会:
1. 为每个单元生成 [标题].html(可编辑,改完浏览器打开即可重打)。
2. 用系统 Edge headless 把 HTML 转成矢量 PDF(中文路径已做 ASCII 临时名处理)。
3. 拼出 学习单-合集.pdf。
若环境无 Edge,脚本仍产出 HTML,PDF 改用浏览器打印或装 weasyprint。
第 5 步:A4 适配自检(重要)
生成后用 Edge 截图或把 PDF 第 1 页渲染成图,确认:
- 主体必做内容(目标+探究+试一试)落在 1 张 A4 内。
- "我的发现/自评"允许作为 1–2 行尾巴溢出到第 2 页(教学上可接受,不必硬砍)。
- 若必须严丝合缝 1 页,压缩 box-area 高度或去掉反思区。
第 6 步:交付
用 present_files 把 学习单/ 下的 PDF 与 HTML 一并呈现。说明:
- 哪几张完美 1 页、哪几张有反思尾巴。
- 若要"绝对 1 页"或换"单元总览式",可再调。
设计原则(为什么这么做)
- 不直接抄教参文字:教参是给老师的解读,搬给学生太重。学习单是脚手架——目标用
孩子口吻、任务要"做得到"、反思留白。 - 统一五板块模板:目标 / 探究 / 试一试 / 发现·疑问 / 自评,结构稳定,学生形成习惯。
- 打印友好:黑线 + 浅灰底、零彩色图片,避免打印色差;字号 10–13pt 适配小学书写。
Resources
scripts/render_pdf.py
PDF 渲染与单元定位。扫描版渲染成图供读图;文字版直接正则定位"第N单元"页码。
scripts/build_sheet.py
学习单批量生成器。读 units.json → 生成 A4 HTML → Edge 转矢量 PDF → 合集 PDF。
内置 PAGE_CSS / PAGE_HTML 模板,A4 适配参数已校验。
references/(可选)
如需沉淀某册教参的提取样例,可在此放 examples.md。