《高中数学精编·代数(上海专版)》题目整理工作区

长期工作区。任何一次新的对话里,只要指向本文件,即可按同一套标准继续整理。 主对话工作区(WorkBuddy):C:\Users\Administrator\WorkBuddy\ 下的会话目录会变, 但本目录 + 记忆文件里的规范不会变。

任务定义

把教材 PDF 中每道训练题整理成 Obsidian 笔记:

  1. 每题一个 .md 文件,写入 vault 对应章节文件夹;
  2. 每题配一张原书截图(从 PDF 高清裁剪),存放在该章节文件夹的 attFiles\ 下;
  3. #题目 段为逐字转录的文字版(数学式用 LaTeX);
  4. 截图在文件末尾用 ![[文件名.png]] 引用;
  5. 模板:D:\无非小筑\template\题目题目题目题目目目目目目.md。

目录约定

D:\无非小筑\3_数学题目\高中\《高中数学精编·代数·上海》\
├─ 1,集合与逻辑\            ← vault 第一章笔记(已有)
├─ 2,等式与不等式\          ← vault 第二章笔记
│  ├─ 1,不等式的性质与方程解集\
│  └─ 4,基本不等式及其应用\
│     ├─ 〚代数精编2.4-98〛.md
│     └─ attFiles\代数精编2.4-98.png
├─ 资料\
│  ├─ 高中数学精编·代数·上海.pdf          ← 教材(305页纯扫描,无文字层)
│  └─ 高中数学精编·代数·上海·答案.pdf     ← 答案册(219页,题号与教材一致)
└─ _work\                    ← 本工作区(工具+数据,不进 Obsidian 索引)
   ├─ README.md              ← 本文件
   ├─ extract_pages.py       # 教材PDF → pages\pNNN.jpg(物理页序提取)
   ├─ build_notes.py         # problems\X.X.json → 批量生成 md + 截图
   ├─ book_map.json          # 全书目录 & 书页↔图片映射
   └─ problems\X.X.json      # 每节的题目清单(转录文本+裁剪框)

命名与编号规则

  • 文件名:〚代数精编<章>.<节>-<题号>〛.md,如 〚代数精编2.4-98〛.md
  • 题号一律用书印题号(第2章在章内连续,如 2.4 节为 98~129)
  • 截图名:代数精编<章>.<节>-<题号>.png,放章节文件夹的 attFiles\
  • 章节文件夹名:<章>,<节名>(如 4,基本不等式及其应用)

第3章起的扩展命名(10-26 用户定)

例题、A组、B组分别加前缀,仍用书印题号(第3章题号在章内连续:3.1 为 132,3.2 续 3369):

类型文件名例
例题〚代数精编<节>-e<例题号>〛〚代数精编3.1-e1〛、〚代数精编3.2-e4〛
A组〚代数精编<节>-a<书印题号>〛〚代数精编3.1-a1〛、〚代数精编3.2.1-a33〛
B组〚代数精编<节>-b<书印题号>〛〚代数精编3.1-b26〛、〚代数精编3.2.2-b64〛
  • 3.2 含两个子节,例题用 3.2-e*,训练题分别用 3.2.1-*、3.2.2-*
  • 跨页题:一题跨两页时,第一段截图 名.png,续图 名-2.png,笔记里依次 ![[名.png]] ![[名-2.png]]

已定规范(勿再询问)

  • #解答 默认留空,由用户自己做;如用户要求,才从答案册转录
  • 模板以 D:\无非小筑\template\t题目.md 为准(10-26 更新版):frontmatter 只有 关联/备注/tags:(tags 下不再预置 - "#题目"), 正文为 # 题目 / # 导引 / # 解答 / # 解析 / # 附注,附注首行是带说明的评级标尺 ☆☆☆☆💯(必做好题)🏅(详细解读)📋(知识类)👍(好题)🙇(拓展思考)
  • 截图裁剪:约 2.6 倍放大,上边界贴题号行、下边界到选项/小题结束,不带邻题残影
  • 转录遇到原书印刷可疑处,照原样转录并加 🔺 标记

工具用法

PY="C:/Users/Administrator/.workbuddy/binaries/python/envs/default/Scripts/python.exe"  # 已装 pymupdf
 
# 1) 提取教材页面图片(首次或 PDF 变更后执行一次)
"$PY" ".../_work/extract_pages.py"
 
# 2) 第2章及以前:按 json 清单生成
"$PY" ".../_work/build_notes.py" problems/2.4.json
 
# 3) 第3章起:题目数据直接写在脚本里,按行带裁图
"$PY" ".../_work/build_ch3.py"          # 只补缺的
"$PY" ".../_work/build_ch3.py" --force   # 全部重出截图(改裁框后用)

_bands.json 是 p064~p075 的行带表(每页各文本行的 [上,下] 页高比例), build_ch3.py 里每题只记「页 + 起始行带 + 结束行带」,留白自动取相邻行带间隙的 75%(上限 0.006)。 换页做新题时重跑一遍行带提取即可。

新增一节的标准流程:

  1. extract_pages.py 确认页面图片在位;
  2. 按 book_map.json 定位节的训练题页码范围,读图确定题号起止;
  3. 在 problems\X.X.json 里逐题填:题号、所在页图、裁剪比例框、题干 LaTeX 文本;
  4. 跑 build_notes.py 生成,抽 2~3 张截图人工核验边界;
  5. 用户在 Obsidian 里检查。

页序与映射(重要坑)

  • 教材 PDF 是 Quark 扫描版,PDF 页树顺序与物理对象顺序不一致,且无文字层。
  • extract_pages.py 按物理对象序提取为 pages\pNNN.jpg(283/305 页,个别页字典格式不同未匹配)。
  • 第一、二章已验证:pNNN.jpg = 书第 (NNN-4) 页,此范围无缺页。
  • 偏移在第 40 页处变了:书 39 → p043(+4),书 40 → p045(+5),此后 pNNN = 书(NNN-5)。 即提取时缺了一页,第 40 页起普遍后移一位(已验证书 4048 → p045p053)。
  • 第3章同样 +5:书 59 → p064(第三章开篇)、书 65 → p070(二、对数)、书 70 → p075(本章末页)。
  • 更后面章节使用前,必须先抽查页码验证偏移(读页脚 ”· N ·”)。
  • 第4章的偏移是分段变的,且中间有两张重复扫描页(已逐页读页脚核实):
    • 书 7175 → p076p080(+5);
    • p081 是书75 的重复扫描页(与 p080 图像近似度极高),弃用;
    • 书 76 起 → 书页 = pNNN − 6 的实际锚点:p082=76、p083=77、p084=78;
    • p085 是书78 的重复扫描页(与 p084 同内容),弃用;
    • p086=79 之后稳定 书页 = pNNN − 7:p090=83、p091=84、p099=92、p106=99。
    • 结论:第4章(书7199)用 p076p080 + p082p084 + p086p106,跳过 p081、p085。
  • 找重复页的快捷办法:把相邻页缩到 400×560 灰度算平均差,差值 < 6 的基本就是同一页重复扫描。
  • 答案册同样提取在 _work\ans\aNNN.jpg,题号与教材一一对应(已验证 2.1、2.4)。
  • 定位行首的可靠办法:先出「标尺图」——整页按行算墨迹带后画红线并标编号,一眼把每行对上编号; 再按编号区间裁图。注意分母/根式的浅灰横线常被行带漏检,会把一行拆成两带, 遇到例3、例4 这类大分式要目视确认末行没被切(3.2-e3 曾因此少截一行)。

进度

章节状态
2.1 等式的性质与方程的解集(题1~17)✅ 已生成(书2425 / p028p029)
2.4 基本不等式及其应用(题98~129)✅ 已生成 32 篇(书4547 / p050p052)
3.1 幂与指数(例13、A125、B26~32)✅ 已生成 35 篇(书5964 / p064p069)
3.2 对数的例题(例1~4)✅ 已生成 4 篇(书6566 / p070p071)
3.2.1 对数(A3347、B4853)✅ 已生成 21 篇(书6668 / p071p073)
3.2.2 换底公式(A5463、B6469)✅ 已生成 16 篇(书6870 / p073p075)
4.1 幂函数(例16、A112、B13)✅ 19 篇(书7176 / p076p082)
4.2 指数函数(例15、A1433、B34~47)✅ 39 篇(书7684 / p082p091)
4.3 对数函数(例18、A4857、B58~85)✅ 46 篇(书8492 / p091p099)
4.4 指数方程和对数方程(例16、A86122、B95~126)✅ 47 篇(书9299 / p099p106)
第5章起未开始

第 4 章合计 151 篇 + 174 张截图(跨页/图文分裁的题各多一张续图)。

第 4 章题号规律:全章连续编号(1126),按小节顺序排;但 4.4 节内部是「(一)(二)(三) 三个子专题,每个子专题先 A 组后 B 组」, 所以 A/B 题号是交错的两段(A8694、B9598、A99104、B105113、A114122、B123~126),不是「A 段在前、B 段在后」。

第 3 章合计 76 篇 + 79 张截图(3 道跨页题各多一张续图)。第 3 章题号规律与第 2 章不同: 3.1 训练题从 1 重新起编(132),3.2 接着编(3369),不是全章连续到 2.4 的 129 之后。

生成脚本

脚本覆盖
build_ch3.py第 3 章全部(行带表 _bands.json)
build_ch4.py4.1 + 4.2(行带表 _bands4.json,含 crop() 与模板,其余脚本 import 它)
build_ch43.py4.3 节
build_ch44.py4.4 节

crop() 的留白规则(第4章定稿):取与相邻行带间隙的 75%,上限 0.006 页高;间隙 < 0.004 时留白取 0( 否则会把上一行的下划线/笔锋带进来);裁完若某侧墨迹 < 12px,该侧逐步加宽重裁(单侧累计 ≤ 0.012)。

2.4 裁剪框速查([y0,y1] 页高比例,全宽)

页 45(p050):100 0.5905-0.653|101 0.6545-0.724|102 0.728-0.7925|103 0.795-0.8645|104 0.868-0.938 页 46(p051):105 0.064-0.113|106 0.115-0.138|107 0.1385-0.161|108 0.165-0.230|109 0.2295-0.252|110 0.2535-0.292|111 0.347-0.385|112 0.390-0.4675|113 0.480-0.538|114 0.5445-0.624|115 0.630-0.745|116 0.7465-0.7705|117 0.7745-0.7995|118 0.801-0.871|119 0.876-0.942 页 47(p052):120 0.059-0.130|121 0.1345-0.226|122 0.2285-0.3425|123 0.3455-0.483|124 0.5365-0.5985|125 0.5995-0.6235|126 0.624-0.663|127 0.6645-0.7065|128 0.711-0.807|129 0.8095-0.8325

快速定框法:用 pymupdf 渲染整页→按行算墨迹带(dark<128 的行和 >2), 行带首尾各留 0.005 页高即得框;分母/根号高行会额外占带,需目视回看顶部是否贴边。