pep-exam-review:试卷讲评离线单文件网页生成器
把一份试卷(pptx 题干 + 合并听力 mp3)自动分析、翻译、装配成一个离线单文件 HTML 讲评页:双击即用、数据存本机、不外传。
何时使用
用户想为某次考试/某份试卷做"讲评网页 / 讲评课件 / 试卷 HTML",尤其是小学英语人教版(PEP)学业质量测评,且提供或需要合并听力音频时。
交付物与内置功能(模板已全部具备)
单文件 HTML(把插图与听力音频内嵌为 base64),离线可用,含:
- 每题「显示答案」:点开该题答案、再点收起,答案可在页面直接改并自动保存。
- 中文翻译开关:每题一个「译」按钮,点击展开译文、再点收起;篇章(听短文/阅读/对话/写作范文)用「显示全文翻译」。
- 点词发音朗读:正文单词可点,非听力内容用浏览器 TTS 朗读;听力按音频精确 seek。
- 听力逐题播放:每题「播放本题」+ 本大题连播;底部听力控制条;切点严格对应题目。
- 圈画 + 橡皮:右下角统一工具条,逐题笔迹保存。
- 每题备注:可插图片/音频/录音,IndexedDB 存储,可导出/导入备份。
- 投影模式、四线三格答题区、图片随题、横排题型等。
目录
assets/template.html:讲评页引擎(含上述全部功能,数据以EXAM / IMGS / EMBED_AUDIO / PRESET_MARKS四个常量占位)。scripts/extract_pptx.py:抽逐页文本与插图。scripts/audio_cuts.py:按音频结构自动生成听力切点(无需语音识别)。scripts/slice_grid.py:把多小题拼图切成单题图。scripts/build.py:把数据装配成最终 HTML。references/data-schema.md:EXAM 与译文数据结构(先读)。references/listening-cuts.md:听力切点规则与核对方法(必读,最易错)。references/pitfalls.md:环境与本机坑(ffmpeg、无头浏览器、编码等)。
工作流程(每做一份卷走一遍)
- 读卷:
python scripts/extract_pptx.py 试卷.pptx --out work/→ 得到逐页文本work/slides.json与全部图片work/media/。
注意 pptx 页序可能乱(如 slide10 排在 slide2 前),必须逐页核对;文本被拆成逐词块,重组题目要结合语义人工核对,禁止盲信自动归并。 - 结构化:按
references/data-schema.md把各板块整理成exam.json(EXAM 对象)。逐题确定:题干、选项([["A","文本"],…])、答案、听力原文material。 - 图片:图片题(看图写词/看图写句/思维导图等)从
work/media/选图;多小题拼成一张的,用slice_grid.py切开,得到IMG_R6_1.png这类按小题命名的文件,放进imgs/(文件名去掉扩展名 = EXAM 里引用的IMGS键)。 - 听力切点:
python scripts/audio_cuts.py 听力.mp3 --out marks.json(默认按 18 道选择 + 6 题短文)。换卷型时先--dump看静音结构核对。详见references/listening-cuts.md。 - 写译文:为每道题与每篇章写中文译文(听力的原文与选项都要、阅读/完形/短文整段译),按
references/data-schema.md的zh字段注入。译文由模型生成即可,交付时提示用户可逐条手改。 - 构建:
python scripts/build.py --exam exam.json --imgs imgs/ --audio 听力.mp3 --marks marks.json --out 讲评.html。 - 验收(见
references/pitfalls.md的命令模板):
- Node 校验切点单调、题数与译文齐全;
- 无头 Edge 渲染一次,确认「译」按钮与答案按钮都在真实 DOM 里生成;
- 交付时告知:切点已按结构自动生成,若个别听感有偏差,用页面顶部「听力切线」微调并保存。
硬性规则(务必遵守)
- 听力必须用用户提供的合并音频按切点播放,绝不能用 TTS 充当听力。
- 听力切点必须严格对应题目:用
audio_cuts.py的结构法(标题停顿 + 长静音端点),不要用"识别到某个词就当切点"的做法——那会把每题错开到下一题。核对方法见references/listening-cuts.md。 - 点词是两级交互:单击高亮,再点同一词才弹释义+朗读(勿改成单击弹窗)。
- 答案每题单独显示,顶栏不放总按钮;对话题空位用小号"显示"。
- 圈画工具条固定在右下角,不要在每题上放按钮。
- 不要新增"答案拖拽""关键词句来源"两个已被明确移除的功能。
- 数据只存本机(localStorage / IndexedDB),不外传;学生信息不得上传。
参考资料
- 数据结构与各板块字段:
references/data-schema.md - 听力切点原理与核对:
references/listening-cuts.md - 环境坑与验收命令:
references/pitfalls.md