一套基于计算机视觉和深度学习的答题卡自动评分系统,实现降低阅卷成本,无需专用设备;提高阅卷效率,实现自动识别和即时评分;支持灵活的答题卡格式;提供完整的成绩管理和统计分析功能。
用户管理模块支持管理员、教师、学生三种角色,采用JWT认证登录。答题卡识别模块可以上传答题卡图片,自动识别学号、选择题答案和主观题区域。自动评分模块实现选择题自动比对答案并计分,主观题提取作答区域供人工批阅。成绩管理模块提供成绩录入、查询、修改和删除功能。试卷管理模块支持创建试卷、设置标准答案和管理试卷状态。统计分析模块提供成绩分布、及格率、平均分等统计报表。答题卡生成模块可以根据试卷信息生成标准答题卡模板。
答题卡识别评分流程:
首先用户上传答题卡图片,系统对图像进行预处理,包括灰度转换和二值化。然后通过投影切割算法定位题目区域。接下来并行处理三个任务:使用CNN模型识别学号,通过区域比对识别选择题答案,以及提取主观题作答区域。选择题部分自动比对标准答案并计分,主观题部分提取的区域供教师人工批阅。最后将所有成绩汇总并存储到数据库。
系统采用经典的三层架构设计,分为表现层、业务逻辑层和数据访问层。
设计思路:模块化设计:
系统按照功能划分为多个独立的模块。
前后端分离:
前端和后端独立开发、独立部署。前端专注于用户界面和交互体验,后端专注于业务逻辑和数据处理。两者通过RESTful API进行数据交换,使用JSON格式传输数据。这种设计使得前后端可以并行开发,也便于后续更换前端技术栈或支持多端访问。
异步处理:
答题卡识别是一个耗时操作,特别是当处理大量图片时。系统采用线程池技术实现异步处理,前端上传图片后可以立即获得响应,后端在后台完成识别任务。用户可以通过轮询或WebSocket获取识别进度和结果,提升了用户体验。
图像处理流程设计:
答题卡识别采用流水线式的处理流程。首先进行图像预处理,包括灰度化、二值化、去噪等操作,提高图像质量。然后使用投影切割算法定位答题区域,将整张答题卡分割成学号区、选择题区、主观题区。针对不同区域采用不同的识别策略,学号区使用CNN神经网络识别手写数字,选择题区通过像素统计判断填涂情况,主观题区提取图像供人工批阅。
安全设计:
系统从多个层面考虑安全性。用户密码使用bcrypt算法加密存储,即使数据库泄露也无法直接获取明文密码。用户认证采用JWT机制,Token设置过期时间,防止长期有效的凭证被盗用。API接口进行权限控制,不同角色只能访问授权的资源。输入数据进行校验和过滤,防止SQL注入和XSS攻击。
前端框架采用Vue 3,Web框架使用Flask,图像处理核心使用OpenCV,关系型数据库使用MySQL,包管理前端使用npm,后端使用pip。