Skip to content

About

OpenCV + PyQt5 answer sheet recognition with perspective correction and automatic scoring

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

答题卡自动识别与判分

基于 OpenCV 和 PyQt5 的答题卡识别桌面应用:对手机拍摄的答题卡做几何校正、气泡定位与答案识别,并支持导入标准答案后自动判分。

输入答题卡 识别结果
答题卡示例 识别结果

示例素材为空白答题卡,不包含个人姓名或学号信息。

功能

  • 手机拍摄、倾斜或透视变形的答题卡自动校正。
  • 识别准考证号、科目和选择题答案。
  • 导入标准答案后自动判分,按题号显示正确 / 错误 / 漏涂。
  • PyQt5 图形界面展示原图、学号区、科目区、答案区域与得分。
  • 中间处理图自动保存到 photos/,便于定位预处理与坐标映射问题。

处理流程

  1. 预处理:灰度化 → 高斯滤波 → 自适应阈值 → Canny 边缘检测。
  2. 几何校正:寻找最大四边形轮廓,使用四点透视变换校正拍摄角度。
  3. 气泡检测:二值化后按轮廓面积和宽高筛选填涂气泡,计算质心。
  4. 坐标映射:按固定行列网格将质心映射到题号和选项。
  5. 分区识别:分别处理学号、科目、答案三个区域。
  6. 判分:导入标准答案,与识别结果比对并计算得分。

快速开始

pip install -r requirements.txt
python enablement.py

界面操作顺序:

  1. 点击“扫描答题卡”,选择一张答题卡照片。
  2. 点击“导入标准答案”,选择文本答案文件。
  3. 点击“检查答案”,查看学号、科目、正确率和逐题结果。

标准答案文件为逐行文本,一行一个选项,例如:

B
D
C
A

目录结构

.
├── enablement.py       # PyQt5 应用入口
├── interface.py        # 主窗口与交互逻辑
├── recognition.py      # OpenCV 识别与几何校正
├── assets/             # README 示例图
└── requirements.txt

说明与限制

  • 当前网格坐标针对示例答题卡模板固定配置;更换版式后需要重新标定 xt1、yt1、yt2、yt3。
  • 只识别填涂气泡,不包含手写姓名或手写文字的 OCR。
  • 原始测试图片和中间处理图未上传,photos/ 与 test/ 已加入 .gitignore;使用自己的空白答题卡即可测试。
  • 拍照时保持答题卡完整入镜、光线均匀,可提高轮廓检测和填涂识别稳定性。

依赖

  • Python 3.9+
  • OpenCV、NumPy、imutils、PyQt5

测试环境:Windows 11、Python 3.9、OpenCV 4.11。

About

OpenCV + PyQt5 answer sheet recognition with perspective correction and automatic scoring

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages