高中数学题目提取
从PDF文件类型的试卷中提取出题目,并打标签
数据准备
- 从高中数学的教材中提取所有知识点
- 从新课标中提取数学教学培养的学生的数学素养:
- 数学抽象
- 逻辑推理
- 数学建模
- 直观想象
- 数学运算
- 数据分析
流水线
流水线主要分为三个阶段:
- OCR解析PDF格式的文件
- LLM多解析后的文件进行题目提取,对于高中数学的试卷,单选题、多选题、填空题和解答题的分布是固定的
- LLM对题目打标签 确定题目的难度、考察的知识点和考察的数学素养
对于每个阶段,都有对应的状态,特别是是否需要人工审核:
- OCR的准确性
- LLM提取题目的准确性
- Label的准确性
OCR
这块走了很多弯路,之前试过几个方案:
- 本地部署MinerU + LLM清理
- PDF转图片 + 支持试卷的LLM解析
MinerU提取效果不是很理想:
- latex公式提取不准。不是latex公式补全、就是识别错误
- 试卷的层级结构识别不准。高中数学试卷的格式相对固定:单选题、多选题、填空题和解答题。MinerU对于扫描版的PDF提取的结构不准,而只又会导致LLM拆题也不准
最终还是使用PaddleOCR-VL-1.6,效果很不错,百度给的免费额度基本够用。
注意事项:
- 如果都是数字版的PDF,直接用PDF解析库即可处理。
- Word版本的试卷都是转换成PDF后再处理的,因为Word的公式处理起来比较麻烦,不过使用PaddleOCR-VL-1.6的话,差别应该不大。
拆题
对于OCR提取后的数据,使用LLM进行拆题,借助提示词从一份试卷中提取出单选题、多选题、填空题和解答题,以及题目的图片。
需要注意几点:
- 解答题一般有多个问题,每个问题可能还会有解答题
- 题目可能有图片,需要考虑到
Label
目前只实现了一个MVP版本的标签:
- 题目难度 LLM自行判读
- 考察的知识点 将高中数学知识点全部使用提示词注入,让LLM来自行判断
- 数学素养 和知识点一样,提示词注入 + LLM