# PDF 洗 MD — LLM 提示词（v4）

>用途：Python PyMuPDF 提取原始文本 →喂给 LLM → LLM 按此提示词整理成干净 Markdown
>适用范围：通用技术文档（不限于 ST 芯片手册）

---

## 原始材料说明

- 源文件：技术参考手册 / 数据手册 / 规格书 / 标准文档
- PDF 通过 PyMuPDF 提取，存在以下典型问题：
  * 页眉页脚残留（文档名、版本号、页码）
  * 表格列裂、单元格错位、跨行跨列丢失
  * 标题层级丢失或降级
  * 图片/框图区域只剩占位符或空行
  * 多栏排版文本顺序混乱

---

## 一、目录（TOC）处理

**不混在正文页中，单独生成文件 `00_目录.md`**

文件格式（三列严格按此顺序）：

```markdown
| 章节号 | 标题 | 页码 |
|--------|------|------|
| 1 | About this document | 12 |
| 1.1 | Typographical conventions | 13 |
```

- 列顺序固定：章节号 | 标题 | 页码（不可颠倒）
- 按章节号数字顺序排列（同一顶级章节的子章节排在一起）
- 不要点号填充（不要 `1.1.1 .......... 15` 这种，用纯表格）
- 封面页（p1）不入目录，目录本身不入目录

---

## 二、文件名生成规则

每页正文对应一个独立 MD 文件，规则如下：

**规则一：页在 TOC 中有映射**
→ `章节号_标题_p{页码}.md`
- 章节号中 `.` 原样保留，不替换
- 标题只取英文/数字/中文，空格替换为下划线，总长不超过 200 字符
- 中文标题直接保留，不强制翻译为拼音
- 多段标题只保留第一段

示例：
```
2.1.1_Bus_matrices_p110.md
1.3.1_System_level_interface_p14.md
```

**规则二：页不在 TOC 中**
→ `{页类型}_p{页码}.md`

示例：
```
List_of_tables_p10.md
Revision_history_p260.md
Figure_list_p8.md
```

**规则三：页类型也未知**
→ `p{页码}_unknown.md`

---

## 三、正文页处理要求

### 1. 正文内容 — 逐字保留，与原文完全一致

- 不改写、不概括、不翻译、不遗漏
- 技术术语、缩写、信号名保留原文
- 数值、地址、偏移量、寄存器名逐字保留
- 换行位置与原文保持一致

### 2. 表格 — 严格还原原始结构

- PDF 提取后表格经常列裂或单元格错位
- 以内容语义为准，合并被拆散的单元格
- 保留原始列数、行数、合并单元格结构
- 不省略任何列，用 | 分隔
- **表格表头行**（如 "Mnemonic | Operands | Brief description | Flags | Page"）和**表格标题行**（如 "Table 21. Cortex-M4 instructions"）是独立于数据行的元数据，**不要**作为数据行写入表格：
  - 表头行：单独提取为表格的第一行（加粗或作为表头分隔线后第一行）
  - 表格标题行（如 "Table 21."）：**单独一行**写在表格上方，用加粗 `**Table X. 标题**` 格式，不混入表格内
- 寄存器位域表保留 bit31...bit0 从左到右顺序
- **多栏表格（2栏及以上）**：优先保留为 Markdown 多栏表格格式（每栏对应一列），栏间用 `|` 分隔；同一格内需要换行时用 `<br>` 换行，**不要**拆成普通段落或列表

### 3. 排版 — 保持原文档版式

- 缩进、空行数量与原文一致
- 列表项层级和顺序不变
- 不添加原文没有的解释性文字
- 寄存器值、路径名用 `...` 包裹保持等宽

### 4. 框图 / Figure — 通过 Markdown 图片链接引用截图

- 发现 "Figure"、"图"、"Diagram"、"Block diagram" 等图形区域
- **先写标题文字，再在标题下方插入图片占位符**
  - 标题格式：`**Figure X. 图标题文字**`（加粗保留原标题）
  - 占位符：`![图 X](imgs/page_{页码}_fig_{编号}.png)`
- 链接路径为相对路径，**只使用正斜杠 `/` 作为分隔符**（禁止反斜杠 `\`）
- **禁止绝对路径**，所有路径相对于 MD 文件所在目录
- 截图由后续步骤单独生成，此处只生成占位符
- 不在正文中用文字描述图形内容（标题文字除外，原样保留）

### 5. 标题层级 — 根据章节号判断

- "X.X.X" 格式：一级=1，二级=1.1，三级=1.1.1，四级=1.1.1.1
- 一级 → ##，二级 → ###，三级 → ####，四级 → #####
- 标题文字取自 PDF 原文，不改写

### 6. 页眉页脚清理

- 删除所有包含文档名、版本号、页码格式（如 "1/262"）的独立行
- 删除版权声明、空白占位行
- 正文第一行前不留多余空行

### 7. 关于文件名中的页码

- 页码使用 PDF 物理页号（从封面 p1 开始计数）
- 封面（p1）不生成正文 MD 文件，只截图存档
- 文件名中的 `p{页码}` 对应 PDF 物理页号，而非内容章节号

### 8. 寄存器描述中的缩写（r / rw / rc_w0 等）

- 在寄存器描述表格中出现的读写属性缩写（r、rw、rc_w0、rc_w1、w、t、Res.）保留原文
- 不要翻译，不要加引号，不要改成代码块包裹
- 它们是表格内容的一部分，原样保留即可

---

## 四、文件输出格式

每个 PDF 页对应一个独立 Markdown 文件。

**文件头：**
```markdown
来源：{文档名} Rev {版本}，Page {页码}
```
> 注：文档名取 PDF 元数据中的实际文档标题，不要写简称或代号。

**文件尾：**
```markdown
> 原始图片：imgs/page_{页码}_*.png（无图则注明无图）
```

**封面页（p1）处理规则：**
- 封面页**不生成**目录条目，也不生成正文 MD 文件
- 封面页单独提取为一张截图：`imgs/page_1_cover.png`

---

## 五、严格禁止

- 改写、概括、翻译原文内容
- 合并或拆分句子
- 省略表格中的任何列或行
- 在正文中用文字描述替代图形占位符
- 在目录文件中混入正文内容
- 为封面页（p1）生成目录条目或正文 MD 文件
- 输出任何处理过程说明，只输出 Markdown 原文
- 路径中使用反斜杠 `\` 或绝对路径

---

请严格按照上述规则处理每一页。