# 文档整理报告（三份）

> 三份 docx 均已解析为结构化数据，未做任何改写：题干、空位、选项、图片一律照抄原文。

## 一、三份文档是什么

| 文件 | 内容 | 规模 |
|---|---|---|
| 新托福填词题——一星难度题（适用于基础班） | 80 篇短文填词，每篇挖 10 个空（Passage 12 为 11 空） | 80 篇 / 801 空 / 8230 词 |
| 模考1-12 | 12 套完整模考，每套 50 项 | 12 套 / 597 项 |
| 学术篇章难篇章1027 | 98 篇学术难篇，每篇 5 题 | 98 篇 / 514 题 |

**三份都只有题目，没有任何答案或解析**（`答案`、`解析`、`Answer` 关键词出现 0 次）。

## 二、填词题（80 篇）

- 正文总词数 **8230**，总空位 **801**，需要补的字母合计 **2634** 个
- 空位写法：**保留词首字母 + 每个缺失字母一个下划线**，例如 `pref{5}` 表示 `pref` 后面还缺 5 个字母（preferred）
- 每篇空数分布：10 空 × 79 篇、11 空 × 1 篇

### 需要注意的地方
- **无标题**：Passage 14, 15（正文完整，只是标题缺失）
- **同一主题出现两遍**：conservationecology → Passage 13, 37；massextinctions → Passage 43, 73；languagedevelopment → Passage 52, 69；humananatomy → Passage 53, 68
- **标题写法不统一**：`Passage1.`（带点）、`Passage 17`（带空格）、`Passage16`（无点）三种混用，原文保留
- 篇目编号 1–80 连续无缺口

## 三、模考 1-12

每套的结构完全一致，**50 项**：

| 模块 | 分区 | 内容 | 项数 |
|---|---|---|---|
| Module 1 | 1-10、11-20 | 单词填空（两段短文，各 10 空） | 20 |
| Module 1 | 21-25 | 生活化阅读（邮件、海报、通知、社媒帖…） | 5 |
| Module 1 | 26-35 | 学术文章（两篇，各 5 题） | 10 |
| Module 2 | 1-10 | 单词填空（一段短文，10 空） | 10 |
| Module 2 | 11-15 | 学术文章（一篇，5 题） | 5 |

12 套合计：**360 个填空 + 237 道选择题 = 597 项**（理论值 600，差 3 项见下）
- 生活化阅读的素材有 **19 张是图片**（邮件、标签、收据、网页等截图），已从 docx 导出，按出现顺序命名 `image1.png`–`image19.png`
- 其余素材是文字段落，直接保留在数据里

## 四、学术篇章难篇章 1027

- **98 篇**学术难篇，正文合计 19637 词，题目 **514 道**，无图片、无答案
- 正常结构：每篇 1 段导语 + 2–4 段正文 + 5 题（4 选项）
- 解析结果：437 道四选项齐全；76 道为句子插入/定位题（无 A–D 选项，选项是原文 `■` 位置）；52 道原文就没编号
- 正文里保留了 `■` 插入标记（如 `■ This trade-off reflects deeper functional pressures. ■`）

### 这份文档的排版最乱，三种写法混用
| 写法 | 例子 | 出现在 |
|---|---|---|
| 题号 + 题干同段 | `11. According to the passage…` | 多数篇目 |
| 题号单独一行 | `Question 11`，下一行才是题干 | 部分篇目（如第 2 篇） |
| 完全无题号 | 题干直接跟在选项群后面 | 部分篇目（如第 11 篇） |
| 选项字母 | `A.` 与 `O` 两种混用 | 同一篇里都可能出现 |

- **4 篇疑似两篇合并**（一篇里塞了两套题）：第 36、47、54、71 篇
- 另有 第 2 篇（Linguistic Structural ，6 题）、第 18 篇（Sleep and Memory，6 题）、第 20 篇（Hidden Structures in D，8 题）、第 24 篇（Science of Bridges，4 题） 题数异常
- 12 道题题干为空（选项群前面那行被并进了上一题），已标 `empty_stem`

## 五、异常清单（建议人工确认）

| # | 位置 | 问题 | 我的处理 |
|---|---|---|---|
| 1 | 2026年1月21日 真题3 / Module 1 | 题号从 24 直接跳到 28，**缺 25, 26, 27 题**；同时缺 25-30 的分区表头 | 保留现状并标记 `missing`，未编造题目 |
| 2 | Passage 12（Sleep） | 其余 79 篇都是 10 空，这篇 11 空 | 保留 11 空，未删减；如按 10 空出题需人工确认多出的那一空 |
| 3 | 5 套的 11 处 | **无 A–D 选项的句子插入/定位题**（题干本身就是待插入的句子，选项是原文里的 `[■]` 位置） | 标 `special: true`，原文行内 `[■]` 标记保留 |
| 4 | 全文档 | 部分题干与选项被排版拆行（如 `closest in` / `A. meaning to`） | 按段落顺序合并，未改字 |
| 5 | 学术难篇第 36, 47, 54, 71 篇 | 一篇里出现两个编号段，疑似两篇合并、缺标题 | 原样保留并标 `anomaly: merged`，未强行拆分 |
| 6 | 模考 1–4 vs 5–12 | 两套表头写法：`1-10 [单词填空] …` vs `Question 1-10` + 下一行类型 | 解析器两种都吃，类型按下一行推断 |

## 六、产物与字段

| 文件 | 说明 |
|---|---|
| `.asr/data/tianci.json` | 80 篇：`no / heading / topic / body / text / blanks[] / nblanks / nletters / words`；`text` 里空位写成 `{n}` 占位 |
| `.asr/data/academic.json` | 98 篇：`title / body[] / questions[] / anomaly / empty_stems` |
| `.asr/data/mocks.json` | 12 套：`title / date / modules[] → sections[] → stimulus[] / images[] / questions[]` |
| `.asr/images/` | 19 张生活化阅读原图 |
| `.asr/build/*.py` | 解析脚本，文档更新后可重跑 |

数据里几个关键字段：
- `stimulus`：按原文顺序的段落或图片，`{"p": "…"}` 或 `{"img": "image3.png"}`
- `questions[].options`：`[{"k":"A","text":"…"}]`，缺选项的题 `special: true`
- `range_mismatch`：题号超出所属分区范围时的记录（真题3 的 28-30 就落在这里）

## 七、这份整理能怎么用

1. **填词题练习页**：80 篇按 10 空/篇做成填空，逐空判对错（`{n}` 已给出每空缺几个字母，可做逐字母输入框）
2. **模考按套练**：12 套 × 50 项，Module 1/2 可分开计时，生活化阅读直接嵌原图
3. **错题本**：和你昨天那份 41/50 的截图打通——按题号回链到原文和图片
4. **句子插入题**：`[■]` 位置已保留，可以渲染成可点的四个方块
5. **学术难篇专项**：98 篇 × 5 题单独成册，和模考里的学术文章合并成「难篇加练」

> 说明：图片是从 docx 内嵌资源直接导出的原图，未压缩、未重绘；题干文本未做拼写修订，原文的笔误保持原样。