# PDF 试题册转 Markdown 文档 — 提示词模板 ## 使用场景 将图片型/扫描版 PDF 试题册(含题目+参考答案)转写为 Obsidian Vault 中的结构化 Markdown 文档。 ## 前置条件 - 目标目录下存在 `config/agent/DOCUMENT_OPERATION.md`(文档规范) - Python 环境已安装 `pdfplumber`(用于 PDF → 图片转换) - PDF 为图片型(无文本层),需借助 LLM 视觉能力读取 --- ## 提示词模板 > 以下为可直接复制使用的提示词。将 `{{变量}}` 替换为实际值后发送给 Claude。 ``` 帮我把这份试题册翻译为文档,新建目录并存放。 {{PDF文件路径,如 嵌入式系统.pdf}} ``` 收到回复后,当 Claude 询问目录组织方式时,选择「每份试题一个文件」。 --- ## 完整工作流程 Claude 应按以下步骤执行: ### 阶段 1:环境准备 1. **读取文档规范**:读取 `config/agent/DOCUMENT_OPERATION.md`,了解格式、必填项、内容规范。 2. **探测 PDF 内容**: - 尝试 `Read` 直接读取 PDF - 若失败(文件过大或 pdftoppm 缺失),改用 `pdfplumber` 逐页转为 PNG: ```python import pdfplumber, os os.makedirs('.tmp_exam', exist_ok=True) pdf = pdfplumber.open('path/to/file.pdf') for i in range(len(pdf.pages)): pdf.pages[i].to_image(resolution=200).save(f'.tmp_exam/page_{i+1}.png') ``` 3. **用 LLM 视觉逐批读取图片**(每批 5 页),记录: - 每份试题的起止页码 - 课程名称、学校名称 - 题型结构(单选/多选/填空/判断/名词解释/简答/综合/设计) - 对应的参考答案页码 ### 阶段 2:用户确认 向用户展示识别结果,确认: - 试题数量与分份方式(每份一个文件) - 目录命名(如 `嵌入式系统/试题册/`) ### 阶段 3:批量创建文件 使用 **并行 Agent** 同时创建所有文件,每个 Agent 负责一份试题: **每个 Agent 收到的指令应包含:** 1. **文件路径**:`{目录}/{文件名}.md` 2. **格式模板**(见下方「文件格式模板」) 3. **完整的题目文本**(从图片中 OCR/识别的内容) 4. **完整的参考答案**(从答案页中识别的内容) ### 阶段 4:创建索引文件 在目录下创建 `index.md`,包含: - 索引表格(序号 → 试卷链接 → 题型概要) - Mermaid 知识点分布象限图 - 关联笔记 wiki-link ### 阶段 5:验证与清理 1. **规范验证**(可用 Explore Agent 并行检查): - YAML frontmatter:tags(数组)+ create time(YYYY-MM-DD HH:mm) - 文档结构:`## 概述` → `## 正文` → `## 关联笔记`(均为 h2) - 概述:无占位文本,包含结构化信息 - 正文:使用 `> [!type]` callout 穿插教学提示 - 代码:ARM 汇编用代码块 + `;` 注释 - 关联笔记:wiki-link 格式 2. **修复不一致项** 3. **统一概述格式**(见下方模板) 4. **清理临时文件**:`rm -rf .tmp_exam` --- ## 文件格式模板 每个试题 `.md` 文件必须遵循以下结构: ```markdown --- tags: - 嵌入式系统 - 试题 create time: {{YYYY-MM-DD HH:mm}} --- # 试题 {{序号}} — {{学校名}}《{{课程名}}》 ## 概述 - **课程**:{{课程名}}({{学期/卷别,可选}}) - **学校**:{{学校名}} - **题型**:{{逗号分隔的题型列表}} - **知识点**:{{逗号分隔的核心知识点}} > [!tip] 学习建议 > {{针对性复习建议,可引用相关笔记 wiki-link}} ## 正文 ### 一、{{题型名称}}({{分值说明}}) {{题目内容,选项用 A. B. C. D. 格式}} > [!note] {{教学提示或知识点补充}} > {{相关内容}} ... ### 参考答案 {{答案内容,选择题用表格或列表}} ## 关联笔记 - [[相关笔记1]] - [[相关笔记2]] ``` --- ## 概述统一格式规范 所有试题文件的 `## 概述` 必须使用**完全一致**的结构: ```markdown ## 概述 - **课程**:{{课程名}} - **学校**:{{学校名}} - **题型**:{{题型列表}} - **知识点**:{{核心知识点}} > [!tip] 学习建议 > {{具体建议}} ``` **禁止:** - 概述中出现段落式描述(应为结构化列表) - 使用 `[!note]`、`[!warning]` 等非 `[!tip]` 类型的 callout(概述部分) - 标题格式不一致(统一为 `# 试题 X — 学校《课程》`) --- ## 索引文件模板 ```markdown --- tags: - {{课程标签}} - 试题册 - 索引 create time: {{YYYY-MM-DD HH:mm}} --- # {{课程名}}试题册索引 ## 概述 本文档为{{学校名}}「{{课程名}}」课程历年试题合集索引。每份试题包含完整题目及参考答案。 ## 试题目录 | 序号 | 试卷 | 题型概要 | |:----:|------|----------| | 1 | [[试题1]] | {{题型}} | | ... | ... | ... | ## 知识点分布 ```mermaid quadrantChart title "试题知识点覆盖" x-axis "低频" --> "高频" y-axis "简单" --> "困难" quadrant-1 "高难度高频" quadrant-2 "高难度低频" quadrant-3 "低难度低频" quadrant-4 "低难度高频" "知识点A": [x, y] ... ``` ## 关联笔记 - [[课程笔记路径]] ``` --- ## Mermaid 生成规范(提醒 Claude) - 所有中文内容必须用**英文双引号 `""`** 包裹 - 节点 ID 必须为英文 - `[]` 内的所有信息必须用双引号包裹 - 不要使用 `\n` 换行 - 象限图的点用 `A: [x, y]` 格式,不要用 `[label]` --- ## 注意事项 1. **不要读取多余文件**:只读取 PDF 和 `DOCUMENT_OPERATION.md`,减少 Token 消耗。 2. **不确定时询问用户**:文件放哪里、如何分份,优先问用户。 3. **并行加速**:10 份试题可同时启动 10 个 Agent 并行创建。 4. **二次验证**:创建完成后用 Explore Agent 逐文件检查规范符合性。 5. **清理临时文件**:验证通过后删除 `.tmp_exam` 目录。