diff --git a/llm-pdf-to-md-prompt.md b/llm-pdf-to-md-prompt.md new file mode 100644 index 0000000..14b573e --- /dev/null +++ b/llm-pdf-to-md-prompt.md @@ -0,0 +1,171 @@ +# 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 多栏表格格式(每栏对应一列),栏间用 `|` 分隔;同一格内需要换行时用 `
` 换行,**不要**拆成普通段落或列表 + +### 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 原文 +- 路径中使用反斜杠 `\` 或绝对路径 + +--- + +请严格按照上述规则处理每一页。 \ No newline at end of file