如何使用Python实现基于PDF文件的数学练习题随机抽取生成器
数学练习册题目提取实现思路
一、单道题目区分思路
- 先匹配题目编号规则:中小学练习册的题目普遍有固定编号格式,比如
1.、(1)、①、一、等,先用正则匹配所有符合对应练习册编号规则的文本,同时记录每个编号对应的页码、在页面中的坐标、文本偏移位置 - 两个相邻同层级编号之间的所有内容(包括文本、内嵌图片)默认对应一道完整题目;如果存在大题套小题的情况,提前预设编号层级规则,比如一级编号为阿拉伯数字加顿号、二级为圆括号加阿拉伯数字,按需选择抽取大题或单个小题的粒度即可
- 可以借助
PyMuPDF等库获取文本块的坐标信息,过滤掉页眉、页脚、页码、参考答案区等固定位置的无关内容,避免误匹配
二、公式图片关联思路
- 同样通过PDF处理库提取所有内嵌图片的页码、所在坐标范围,每道题对应自己的页面坐标区间(从当前题号的顶部坐标到下一题号的顶部坐标),所有坐标落在该区间内的图片,自动归属为当前题目的组成部分
- 不需要额外将公式转成LaTeX,后续拼接生成新PDF时,直接将对应题目的文本块、图片块按原有相对位置还原,或者直接裁切对应坐标区间的PDF片段即可保留完整题目内容
- 如果需要校验归属准确性,可以用带公式识别能力的OCR工具识别图片内容,和相邻文本做匹配验证即可
内容的提问来源于stack exchange,提问作者Michael Stevens
相关产品推荐
相关产品推荐

