高中数学题目提取

从PDF文件类型的试卷中提取出题目,并打标签

数据准备

  • 从高中数学的教材中提取所有知识点
  • 从新课标中提取数学教学培养的学生的数学素养:
    • 数学抽象
    • 逻辑推理
    • 数学建模
    • 直观想象
    • 数学运算
    • 数据分析

流水线

流水线主要分为三个阶段:

  1. OCR解析PDF格式的文件
  2. LLM多解析后的文件进行题目提取,对于高中数学的试卷,单选题、多选题、填空题和解答题的分布是固定的
  3. LLM对题目打标签 确定题目的难度、考察的知识点和考察的数学素养

对于每个阶段,都有对应的状态,特别是是否需要人工审核:

  • OCR的准确性
  • LLM提取题目的准确性
  • Label的准确性

OCR

这块走了很多弯路,之前试过几个方案:

  1. 本地部署MinerU + LLM清理
  2. PDF转图片 + 支持试卷的LLM解析

MinerU提取效果不是很理想:

  • latex公式提取不准。不是latex公式补全、就是识别错误
  • 试卷的层级结构识别不准。高中数学试卷的格式相对固定:单选题、多选题、填空题和解答题。MinerU对于扫描版的PDF提取的结构不准,而只又会导致LLM拆题也不准

最终还是使用PaddleOCR-VL-1.6,效果很不错,百度给的免费额度基本够用。

注意事项:

  1. 如果都是数字版的PDF,直接用PDF解析库即可处理。
  2. Word版本的试卷都是转换成PDF后再处理的,因为Word的公式处理起来比较麻烦,不过使用PaddleOCR-VL-1.6的话,差别应该不大。

拆题

对于OCR提取后的数据,使用LLM进行拆题,借助提示词从一份试卷中提取出单选题、多选题、填空题和解答题,以及题目的图片。

需要注意几点:

  • 解答题一般有多个问题,每个问题可能还会有解答题
  • 题目可能有图片,需要考虑到

Label

目前只实现了一个MVP版本的标签:

  • 题目难度 LLM自行判读
  • 考察的知识点 将高中数学知识点全部使用提示词注入,让LLM来自行判断
  • 数学素养 和知识点一样,提示词注入 + LLM
顶部