Files
final-exam/config/agent/PDF_EXAM_TO_MARKDOWN.md
T

224 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PDF 试题册转 Markdown 文档 — 提示词模板
## 使用场景
将图片型/扫描版 PDF 试题册(含题目+参考答案)转写为 Obsidian Vault 中的结构化 Markdown 文档。
## 前置条件
- 目标目录下存在 `config/agent/DOCUMENT_OPERATION.md`(文档规范)
- Python 环境已安装 `pdfplumber`(用于 PDF → 图片转换)
- PDF 为图片型(无文本层),需借助 LLM 视觉能力读取
---
## 提示词模板
> 以下为可直接复制使用的提示词。将 `{{变量}}` 替换为实际值后发送给 Claude。
```
帮我把这份试题册翻译为文档,新建目录并存放。
<current_note>
{{PDF文件路径,如 嵌入式系统.pdf}}
</current_note>
```
收到回复后,当 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` 目录。