APP下载

线上教学实时考勤系统开发

2024-10-25宋咏春

中国信息技术教育 2024年20期

摘要:针对线上教学中,教师无法即时提供课上考勤情况以及及时保存考勤结果的问题,作者以雨课堂为例,使用Python编程语言开发了一个基于PC端的实时考勤软件系统。以期该考勤系统能够弥补在线教学软件考勤的不足,进而更好地满足线上教学考勤的需求。

关键词:线上教学软件;考勤;Python

中图分类号:TP391.1 文献标识码:A 论文编号:1674-2117(2024)20-0000-04

引言

在数字化时代,在线教学已经成为一种新的教学常态,因而也催生了大量的在线教学软件,在高校中用于在线教学的常用软件有雨课堂、腾讯会议、QQ群课堂等。

在教学管理中,出勤考核是学生成绩考核的重要组成部分。而大多数在线教学软件主要提供课后考勤数据,可以在课后查看学生们的到课情况,如雨课堂、腾讯会议导出的Excel课堂数据表,可查看上课签到时间、离开时间、在线时间等。但课上考勤,往往只能提供到课人数、到课人员姓名查看,无法即时提供上课班级总体考勤情况,这与考勤要求存在一定的差距。主要问题是:①无法提供上课时学生到课细节,如刚开始上课时,未到课学生姓名无法快速获取,且难以及时通知提醒其上课;②导出的考勤结果文件需要手工处理才能把数据记录在给定格式的记录表中,考勤效率较低。

针对上述的线上教学考勤问题,笔者以雨课堂在线教学软件为例,介绍基于PC端的在线教学软件实时考勤数据处理系统开发。该系统能够实现雨课堂在线教学软件的在线考勤,实时反馈缺课、早退等学生姓名,并将考勤数据自动记录到给定格式的记录文档中,减少考勤工作量,提高考勤的效率。

系统设计

1.技术路线分析

大部分在线教学软件都有一个呈现当前在线人员的界面,如腾讯会议在教学界面上点击“点击查看签到详情”,在窗口右侧可看到当前已出席和未出席的人员名称。雨课堂也有类似查看当前人员的窗口设置,但雨课堂当前在线人员界面显示的内容并非文本,无法拷贝、粘贴,只能通过截取有姓名内容的图片,利用图片文本识别方法将姓名文字识别,然后再进行签到考勤处理。因此,本考勤系统以保证识别精度、提高识别速度为目标,选择使用Python强大的图像处理库,如OpenCV、PIL和scikit-image等,对截图进行处理操作,然后通过百度AI开放平台接口,调用图片文字识别工具实现在图片中提取文本信息的功能,最后在识别的文本信息中提取姓名文字进行考勤处理,将考勤结果写入给定格式的考勤表格中。

2.系统架构设计

根据考勤操作的具体要求,从考勤的实际操作过程出发,进行系统架构设计(如图1)。展示层是用户与系统之间进行数据传递和互动操控的接口;业务层是系统的核心,用于实现班级管理和考勤统计的功能;数据层则实现记录文件的保存及访问。

3.系统模块设计

系统模块结构如图2所示,其中包含班级管理、考勤管理2个模块。

班级管理模块中,添加班级是建立班级与考勤记录表之间的关系,修改、删除班级则是对已有的班级与考勤记录表关系进行修改或删除。

考勤管理模块的主要功能是截取在线教学软件当前在线人员的界面,然后将截图上的文字信息进行识别,提取姓名。上课考勤是在刚开始上课时进行考勤,并将已到课的考勤结果记录到数据文件上;课中考勤则是在课间的某个时间进行考勤,并将考勤时刻的迟到人员、早退人员写入及更新原来的上课记录文件。

系统实现

考勤管理是系统的核心,具体的考勤流程图如图3所示。

1.截图实现

当上课学生人数较多时,在线教学软件当前在线人员的界面需要滚动才能查看所有上课学生的信息,因此要采用滚动截屏的方法进行截图,其实现步骤为[1]:滚动界面→图片截取→图片拼接点辨识→图片拼接。滚动界面使用pynput模块的滚动功能实现。图片截取用Qt的截屏方法实现。图片拼接点辨识是滚动截屏生成完成截屏图片的关键,通过比较截屏所得的相邻图片,寻找下一张图片在前一张图片的相同部分位置,并记录下来。但有些截屏区域包含不滚动部分,即所有图片都有相同的头部或边框,不能直接用截取的图片来寻找拼接点,需要比较多张图片来去除相同部分的影响。最后将图片转为数组,通过数组实现图片拼接。

2.图片处理

截屏拼接得到的图片,还要通过一定的处理后才能进行文字识别。不同的班级上课的人数不同,当前在线人员的界面截取图片长度的变化也较大。查阅百度AI开放平台官网可知[2],图像数据base64编码后进行urlencode,要求base64编码和urlencode后大小不超过10M,最短边至少15px,最长边最大8192px。

文字识别正确率与截图图片长边的长度有很大的关联,当截图图片长边太大时,文字识别正确率会下降,甚至无法识别。通过对在线人员的界面截屏图片进行试验比较,笔者发现当图片长度不超过1500px时,文字识别准确率与识别速度两者可达到较好的平衡。因此,在进行识别之前,要先检查截图长边的像素,若大于1500px,就将图片分割,然后识别结果并合并。

3.文字识别

百度AI开放平台免费开放通用文字高精度识别,识别准确率及使用次数完全可以满足日常使用要求,调用设置也比较简单,本系统使用了百度AI开放平台提供的OCR API接口进行在线识别。首先,安装requests库以发送HTTP请求,在百度AI开放平台上创建应用并获取API Key、Secret Key等信息用于身份认证和接口调用。其次,在程序中导入所需的模块和函数,传入图片对象,加载图片并转换为Base64编码。最后,构造POST请求参数后发送POST请求得到返回结果。[3]

4.文字处理

在整理考勤记录前,百度AI开放平台返回的识别文字要经过以下处理。

①姓名提取。在雨课堂中,当学生以实名及学号注册账号加入班级后,课上的成员列表会显示其姓名与学号。在对图片识别文字后,就得到了姓名与学号的文本信息。

②姓名纠错。系统对识别后得到的姓名设置了纠错环节,其操作是将识别得到的姓名在点名册中搜索,获得未搜索到结果的姓名、与点名册中没有匹配项的姓名,通过difflib.get_close_matches()模块计算文本相似度,从中找出最接近的匹配对,显示于窗口,提示纠正修改为正确的名字。

5.考勤记录

根据之前设置的考勤类型,如果是上课考勤,将考勤结果写入新的一列,如果是课中考勤,则修改原来的考勤结果,处理流程如图4所示。

系统运行

系统主界面如图5所示,可通过主界面设置及选择考勤班级和考勤模式。点击“开始检查”出现截图框选提示并选择截图区域(如下页图6),即可通过鼠标滚轮滚动进行截图,在截图完成后,系统自动进行图片文字识别。

当图片文字识别完毕后,弹出姓名纠错对话窗口(如下页图7、图8),窗口左侧为图片文字识别获取但在点名册中搜索不到的姓名,右侧为通过匹配算法得到的推荐正确姓名。考虑到匹配算法可能存在误差,因此将窗口右侧内容设置为可以编辑。当姓名纠错完成后,点击窗口“确定”按钮,则弹出考勤结果对话框,确定后即可把考勤结果写入数据记录文件。

结语

上述开发的雨课堂实时考勤数据处理系统,可以快速检查线上课堂在线人员,实时获取上课学生考勤情况,并将考勤结果自动记录在指定记录文件中,提高了考勤效率。该系统在进一步改进后,还可以应用于腾讯会议、QQ群课堂等常用线上教学软件的实时考勤。

参考文献:

[1]Roll_screenshot Contributors.用Python实现的滚动截屏.[2024-02-03].https://github.com/fandesfyf/roll_screenshot.

[2]百度AI开放平台.API文档——通用文字识别(高精度版).[2024-02-03].https://ai.baidu.com/ai-doc/OCR/1k3h7y3db.

[3]百度AI开放平台.API调用指南.[2024-02-03].https://ai.baidu.com/ai-doc/REFERENCE/Lkru0zoz4.