用Python+OpenCV+PyQt开发的答题卡识别软件

用Python+OpenCV+PyQt开发的答题卡识别软件

软件使用说明

软件设计思路

如何设置答案

界面风格

备注


这是一个可以识别定制答题卡的软件,它可以根据用户自定的答案来进行识别,校对正误并统计分数。该软件可以识别80道选择题,支持单选和多选。用户在识别前可以进行图像调整,去除噪点,提高识别准确率。

Python+OpenCV+PyQt开发答题卡识别软件

代码下载地址

注:之前的答题卡识别软件是用摄像头来识别的,现在是用识别答题卡扫描图片的方式,提高了识别准确率和速度。下载了旧版软件的小伙伴可以私信我获取更新后的版本。

软件使用说明

1. 下载源码后,首先安装依赖库。项目所用到的依赖库已经放在了requirements.txt文件中,大家可以使用以下命令进行安装。一定要使用requirements.txt中指定的版本库,其他版本的库可能会导致部分功能异常。

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 安装完毕后,运行main.py即可打开软件:

3. 接着选择答案和答题卡扫描件所在的文件夹。

4. 然后点击"图像调整"按钮,调整图像识别参数,去除图像噪点。调整完毕后点击“确定参数”按钮。

5. 最后点击开始识别按钮进行识别,识别出来的准考证号和选择题填涂区域将显示在屏幕上:

注:每张答题卡都将会验证6次,验证次数可以在settings/config.json文件中修改。

 在下方的表格中会显示学生的准考证号以及填涂答案。如果文本为红色,则说明学生的答案跟标准答案不匹配。如果单元格是空的话,说明学生未填涂或者填涂不清晰。

6. 全部识别完毕后,点击"导出成绩"按钮即可获得识别结果的Excel表格:

        

软件设计思路

1. 首先设计好答题卡模板,在四个边角加上定位标志。

2. 将答题卡模板各个区域涂黑,然后使用OpenCV获取到准考证区域和选择题区域所有的长方形轮廓,将所有目标填涂区域的轮廓坐标进行保存。因为图片质量很高,所以我们可以用OpenCV很容易地获取到描黑的填涂区域轮廓。此时程序所需的答题卡识别坐标文件就制作好了。

3. 之后我们识别学生填涂的答题卡时,可以从文件中直接读取坐标,然后让程序判断相应区域的非零值(None Zero Value),符合条件的话说明学生有填涂该区域。准考证区域的判断稍有不同,我们应该判断非零值最符合条件的一项,因为同一列只能填涂一个数字,描得最黑的那个区域上的数字即为目标数字。

4. 开始识别时打开了一个识别线程,在定位、优化、识别图片之后,通过PyQt自定义信号将准考证号和选项返回给主窗口。

5. 识别出来后,将学生的准考证号和选项显示到PyQt的QTableWidge控件上,如果学生选项跟答案的字符串不一致,则标红并且扣除相应分数。

6. 最后利用openpyxl模块生成excel。

如何设置答案

请将标准答案放在txt文件中:

每一行填写一个答案,左侧为题号,中间为标准答案,右侧为该题分值。题号、标准答案和分值用-进行分隔。

如果某一题是多选的话,那只用把当中的选项修改下就行了:1-AB-1

界面风格

该软件还提供了三种不同的界面风格:

flatwhite.css:

lightblue.css:

psblack.css:

可以在main.py中修改以下代码来设置不同的风格:

qss = read_qss('./res/qss/flatwhite.css')
app.setStyleSheet(qss)

备注

1. 答题卡模板已经随源码放在项目文件夹中,可以自行打印出来填涂。

2. 一定要下载requirements.txt中指定的版本库,其他版本的库可能会导致部分功能异常。

3. 填涂要清晰有力,不然扫描出来很淡的话,不利于识别。

4. 答题卡四个边角处有长方形黑块,用于定位,扫描出来的这四个定位黑块要清晰,这样方便定位。

5. 请在识别前调整图像,否则图像的噪点会很多,不利于识别。调节时要确保四个定位点明显,准考证区域和选项区域的填涂也要明显。

6. settings/config.json中的verify_num为验证次数,改大可以提高验证准确率,但会影响识别速度。stu_number_length为准考证号长度,该值可以依据学生考试时所用的准考证号长度来定,最大值为6。

7. 如果要加快识别速度,可以修改threads.py文件中的第46行代码self.msleep(500),500表示间隔0.5秒验证识别1次。可以调整为100或更小的数字。

8. 要识别的答题卡扫描件放在文件夹中,然后在软件上面选择的是答题卡所在的文件夹路径。

9. 如果绝大部分答题卡识别没有问题,只有个别答题卡识别不了,可以将这些答题卡单独拿出来,调整相应的参数后再识别。

10. 软件下方的表格上会显示识别出来的准考证号和选项,如果选项跟相应题号的答案不符合,就会被标记为红色。

11. 全部识别完毕后,点击导出成绩按钮就可以获取excel文件了。

  • 38
    点赞
  • 185
    收藏
  • 打赏
    打赏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:博客之星2020 设计师:CSDN官方博客 返回首页
评论 29

打赏作者

la_vie_est_belle

谢谢支持

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值