当前位置 博文首页 > 我用Python给班主任写了一个自动阅卷脚本(附源码)

    我用Python给班主任写了一个自动阅卷脚本(附源码)

    作者:顾木子吖 时间:2021-09-12 18:39

    导语

    幼儿园升小学,小学升中学,中学升高中..........

    每个人都要经历的九年义务教育:伴随的都是作业、随堂考、以及每个科目的大大小小的考试。当然小编被考试支配的恐惧以及过去了哈~除了学生考试的压力之外。

    有调查发现,目前老师大量的时间被小型考试,如课堂测验、周测等高频次测验的批改客观题、计分、登分等占用,被迫压缩了备课、精准辅导的时间。

    今天小编带大家做一款解放教师的自动阅卷系统。

    几千张的答题卡扫描录入电脑阅卷系统,老师们只需打开电脑登陆,即可找到自己要批改的那道题。

    大大提高了改卷效率,降低合分数的错误率。整个过程保密学生姓名,公平公正。

    答题卡识别:

    (一)设置答题卡的位置坐标分为左上,右上,右下,左下。

    def order_points(pts):   
    # 一共4个坐标点   
    rect = np.zeros((4, 2), dtype = "float32")   
    # 按顺序找到对应坐标0,1,2,3分别是 左上,右上,右下,左下   
    # 计算左上,右下   
    s = pts.sum(axis = 1)   
    rect[0] = pts[np.argmin(s)]   
    rect[2] = pts[np.argmax(s)]   
    # 计算右上和左下   
    diff = np.diff(pts, axis = 1)   
    rect[1] = pts[np.argmin(diff)]   
    rect[3] = pts[np.argmax(diff)]   
    return rect

    (二)确保检测到:

    if len(cnts) > 0:   
    # 根据轮廓大小进行排序   
    cnts = sorted(cnts, key=cv2.contourArea, reverse=True)   
    for c in cnts: 
    # 遍历每一个轮廓      # 近似      
    peri = cv2.arcLength(c, True)      
    approx = cv2.approxPolyDP(c, 0.02 * peri, True)      
    # 准备做透视变换      
    if len(approx) == 4:         
    docCnt = approx         
    break
    

    (三)判断正确率

    # 与正确答案进行对比   
    color = (0, 0, 255)   
    k = ANSWER_KEY[q]   
    # 判断正确   if k == bubbled[1]:      
    color = (0, 255, 0)      
    correct += 1   
    cv2.drawContours(warped, [cnts[k]], -1, color, 3) 
    #绘图
    

    附源码:

    ​​

    ​​

    ​​

    ​​

    现代的“机器阅卷”,工作便捷、效率高、易操作,只需要一个相机(手机),拍照即可获取成绩,可以导入Excel表格便于存档管理。

    ​​

    总结

    解放老师的双手,节省时间给大家补习 !23333........不用太感谢我,好事不留名!

    爱我你怕了嘛??!

    源码基地:## 959755565 ##!欢迎!

    ​​

    jsjbwy