# 1 ## GE 为了提高大语言模型(LLM,如GPT-4o, Claude 3.5 Sonnet等)识别数学题照片并输出Markdown的准确率,你需要设计一个**结构化、约束性强且包含特定规则**的提示词(Prompt)。 以下是一个经过优化的提示词模板,以及核心策略的解析。 ### 🚀 高效提示词模板 (直接可用) 你可以直接复制下面的内容作为 System Prompt 或 User Message 的第一部分: ```markdown # Role 你是一个专业的数学排版专家和LaTeX/Markdown转换引擎。你的任务是将用户上传的数学题目图片,精准无误地转换为Markdown格式。 # Constraints & Rules (重要) 1. **精准还原**:必须逐字逐句识别,不要尝试解答题目,不要省略任何文字,也不要添加任何原图中不存在的解释或前言。 2. **LaTeX公式**: - 所有的数学公式、变量、数字(包括单独的x, y, 1, 2等)必须使用 LaTeX 语法包裹。 - 行内公式用 `$ ... $` 包裹。 - 独立公式块用 `$$ ... $$` 包裹。 - 分数请使用 `\frac{a}{b}`,上标使用 `^`,下标使用 `_`。 3. **格式排版**: - 保持原题的段落结构。 - 如果有选项(A, B, C, D),请按照列表格式排列。 - 遇到几何图形或函数图像,请在对应位置插入说明文字:`[此处是图片:描述图片内容]`。 4. **特殊符号处理**: - 乘号请用 `\times` 或 `\cdot`,不要用字母 `x`。 - 根号请用 `\sqrt{}`。 - 积分、求和、极限等高级符号请使用标准的LaTeX命令。 5. **自我修正**: - 如果图片模糊或有手写痕迹,请根据数学逻辑推断最可能的字符(例如,在几何题中,"∠A=90°"比"∠A=900"更合理)。 - 检查括号是否闭合,分数线是否完整。 # Output Format Example (不要输出 ```markdown 标记,直接输出内容) 1. 已知函数 $f(x) = x^2 + 2x + 1$,则 $f(1)$ 的值为 ( ) A. $1$ B. $2$ C. $3$ D. $4$ # Your Task 请识别输入的图片内容,并输出Markdown源码。 ``` --- ### 💡 提升准确率的 5 个关键策略 如果你想进一步微调或理解为什么这么写,以下是核心原理: #### 1. 明确角色定位 (Persona) * **错误写法**:帮我看一下这个题。 * **正确写法**:你是一个专业的数学排版专家,专门负责OCR识别。 * **原理**:设定角色可以减少模型“试图解题”的幻觉,强制它专注于“识别”而非“思考答案”。 #### 2. 强制 LaTeX 规范 (Explicit Syntax) 数学公式最容易出错的地方是混用纯文本和公式。 * **要求**:明确要求所有的变量(哪怕是一个简单的 $x$)都必须用 `$` 包裹。 * **好处**:这样输出的结果放入 Markdown 编辑器(如 Obsidian, Typora)或网页渲染时,格式会非常漂亮,不会出现排版错乱。 #### 3. 禁止“废话” (Zero-shot Chain of Thought) 模型很喜欢说“好的,这是你要的题目...”或者在最后加上“这道题选C”。 * **提示词**:`不要解答`、`不要添加前言后语`、`直接输出Markdown源码`。 * **好处**:方便你直接复制粘贴,不需要二次清洗数据。 #### 4. 利用上下文修正 (Logical Inference) OCR 经常把 $0$ 识别成 $O$,把 $1$ 识别成 $l$。 * **提示词**:`根据数学逻辑推断模糊字符`。 * **例子**:如果模型看到 $x^z + y^2 = 1$,它可能会识别错,但如果你告诉它这是勾股定理或圆方程,它会自动修正为 $x^2$。 #### 5. 分步处理(针对复杂图片) 如果图片非常复杂(包含大量手写字、表格、图形),单纯的一个 Prompt 可能不够。你可以尝试 **Few-Shot Prompting(少样本提示)**: **在提示词中给它一个例子:** > **用户**:[输入一张简单的图片] > **参考输出**: > 1. 若 $\triangle ABC$ 为直角三角形,且 $\angle C = 90^\circ$,则... > > **用户**:[输入现在的图片] > **请参照上面的格式进行识别。** ### 🔧 如果LLM还是经常出错,怎么办? 1. **预处理图片**:在发给 LLM 之前,用手机自带的编辑功能把图片裁剪一下,只保留题目部分,去掉桌子背景、手指阴影,提高对比度。 2. **更换模型**: * **GPT-4o**:目前数学OCR能力最强。 * **Claude 3.5 Sonnet**:在代码和格式化输出上非常精准,很少出错。 * **Gemini 1.5 Pro**:处理长上下文和多模态能力也很强。 3. **分两步走**: * 第一步:让 LLM 描述图片中的所有数学元素。 * 第二步:让 LLM 根据刚才的描述写出 Markdown 代码。 你可以先试用上面的模板,如果发现哪类特定的符号容易错(比如矩阵、化学方程式),可以在 `特殊符号处理` 那一栏专门加一条规则。