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

5.8 KiB
Raw Blame History

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:
      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 文件必须遵循以下结构:

---
tags:
  - 嵌入式系统
  - 试题
create time: {{YYYY-MM-DD HH:mm}}
---

# 试题 {{序号}} — {{学校名}}《{{课程名}}》

## 概述

- **课程**:{{课程名}}({{学期/卷别,可选}})
- **学校**:{{学校名}}
- **题型**:{{逗号分隔的题型列表}}
- **知识点**:{{逗号分隔的核心知识点}}

> [!tip] 学习建议
> {{针对性复习建议,可引用相关笔记 wiki-link}}

## 正文

### 一、{{题型名称}}({{分值说明}})

{{题目内容,选项用 A. B. C. D. 格式}}

> [!note] {{教学提示或知识点补充}}
> {{相关内容}}

...

### 参考答案

{{答案内容,选择题用表格或列表}}

## 关联笔记
- [[相关笔记1]]
- [[相关笔记2]]

概述统一格式规范

所有试题文件的 ## 概述 必须使用完全一致的结构:

## 概述

- **课程**:{{课程名}}
- **学校**:{{学校名}}
- **题型**:{{题型列表}}
- **知识点**:{{核心知识点}}

> [!tip] 学习建议
> {{具体建议}}

禁止:

  • 概述中出现段落式描述(应为结构化列表)
  • 使用 [!note]、[!warning] 等非 [!tip] 类型的 callout(概述部分)
  • 标题格式不一致(统一为 # 试题 X — 学校《课程》)

索引文件模板

---
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` 目录。