摘要:針對(duì)線上教學(xué)中,教師無(wú)法即時(shí)提供課上考勤情況以及及時(shí)保存考勤結(jié)果的問(wèn)題,作者以雨課堂為例,使用Python編程語(yǔ)言開(kāi)發(fā)了一個(gè)基于PC端的實(shí)時(shí)考勤軟件系統(tǒng)。以期該考勤系統(tǒng)能夠彌補(bǔ)在線教學(xué)軟件考勤的不足,進(jìn)而更好地滿(mǎn)足線上教學(xué)考勤的需求。
關(guān)鍵詞:線上教學(xué)軟件;考勤;Python
中圖分類(lèi)號(hào):TP391.1 文獻(xiàn)標(biāo)識(shí)碼:A 論文編號(hào):1674-2117(2024)20-0000-04
引言
在數(shù)字化時(shí)代,在線教學(xué)已經(jīng)成為一種新的教學(xué)常態(tài),因而也催生了大量的在線教學(xué)軟件,在高校中用于在線教學(xué)的常用軟件有雨課堂、騰訊會(huì)議、QQ群課堂等。
在教學(xué)管理中,出勤考核是學(xué)生成績(jī)考核的重要組成部分。而大多數(shù)在線教學(xué)軟件主要提供課后考勤數(shù)據(jù),可以在課后查看學(xué)生們的到課情況,如雨課堂、騰訊會(huì)議導(dǎo)出的Excel課堂數(shù)據(jù)表,可查看上課簽到時(shí)間、離開(kāi)時(shí)間、在線時(shí)間等。但課上考勤,往往只能提供到課人數(shù)、到課人員姓名查看,無(wú)法即時(shí)提供上課班級(jí)總體考勤情況,這與考勤要求存在一定的差距。主要問(wèn)題是:①無(wú)法提供上課時(shí)學(xué)生到課細(xì)節(jié),如剛開(kāi)始上課時(shí),未到課學(xué)生姓名無(wú)法快速獲取,且難以及時(shí)通知提醒其上課;②導(dǎo)出的考勤結(jié)果文件需要手工處理才能把數(shù)據(jù)記錄在給定格式的記錄表中,考勤效率較低。
針對(duì)上述的線上教學(xué)考勤問(wèn)題,筆者以雨課堂在線教學(xué)軟件為例,介紹基于PC端的在線教學(xué)軟件實(shí)時(shí)考勤數(shù)據(jù)處理系統(tǒng)開(kāi)發(fā)。該系統(tǒng)能夠?qū)崿F(xiàn)雨課堂在線教學(xué)軟件的在線考勤,實(shí)時(shí)反饋缺課、早退等學(xué)生姓名,并將考勤數(shù)據(jù)自動(dòng)記錄到給定格式的記錄文檔中,減少考勤工作量,提高考勤的效率。
系統(tǒng)設(shè)計(jì)
1.技術(shù)路線分析
大部分在線教學(xué)軟件都有一個(gè)呈現(xiàn)當(dāng)前在線人員的界面,如騰訊會(huì)議在教學(xué)界面上點(diǎn)擊“點(diǎn)擊查看簽到詳情”,在窗口右側(cè)可看到當(dāng)前已出席和未出席的人員名稱(chēng)。雨課堂也有類(lèi)似查看當(dāng)前人員的窗口設(shè)置,但雨課堂當(dāng)前在線人員界面顯示的內(nèi)容并非文本,無(wú)法拷貝、粘貼,只能通過(guò)截取有姓名內(nèi)容的圖片,利用圖片文本識(shí)別方法將姓名文字識(shí)別,然后再進(jìn)行簽到考勤處理。因此,本考勤系統(tǒng)以保證識(shí)別精度、提高識(shí)別速度為目標(biāo),選擇使用Python強(qiáng)大的圖像處理庫(kù),如OpenCV、PIL和scikit-image等,對(duì)截圖進(jìn)行處理操作,然后通過(guò)百度AI開(kāi)放平臺(tái)接口,調(diào)用圖片文字識(shí)別工具實(shí)現(xiàn)在圖片中提取文本信息的功能,最后在識(shí)別的文本信息中提取姓名文字進(jìn)行考勤處理,將考勤結(jié)果寫(xiě)入給定格式的考勤表格中。
2.系統(tǒng)架構(gòu)設(shè)計(jì)
根據(jù)考勤操作的具體要求,從考勤的實(shí)際操作過(guò)程出發(fā),進(jìn)行系統(tǒng)架構(gòu)設(shè)計(jì)(如圖1)。展示層是用戶(hù)與系統(tǒng)之間進(jìn)行數(shù)據(jù)傳遞和互動(dòng)操控的接口;業(yè)務(wù)層是系統(tǒng)的核心,用于實(shí)現(xiàn)班級(jí)管理和考勤統(tǒng)計(jì)的功能;數(shù)據(jù)層則實(shí)現(xiàn)記錄文件的保存及訪問(wèn)。
3.系統(tǒng)模塊設(shè)計(jì)
系統(tǒng)模塊結(jié)構(gòu)如圖2所示,其中包含班級(jí)管理、考勤管理2個(gè)模塊。
班級(jí)管理模塊中,添加班級(jí)是建立班級(jí)與考勤記錄表之間的關(guān)系,修改、刪除班級(jí)則是對(duì)已有的班級(jí)與考勤記錄表關(guān)系進(jìn)行修改或刪除。
考勤管理模塊的主要功能是截取在線教學(xué)軟件當(dāng)前在線人員的界面,然后將截圖上的文字信息進(jìn)行識(shí)別,提取姓名。上課考勤是在剛開(kāi)始上課時(shí)進(jìn)行考勤,并將已到課的考勤結(jié)果記錄到數(shù)據(jù)文件上;課中考勤則是在課間的某個(gè)時(shí)間進(jìn)行考勤,并將考勤時(shí)刻的遲到人員、早退人員寫(xiě)入及更新原來(lái)的上課記錄文件。
系統(tǒng)實(shí)現(xiàn)
考勤管理是系統(tǒng)的核心,具體的考勤流程圖如圖3所示。
1.截圖實(shí)現(xiàn)
當(dāng)上課學(xué)生人數(shù)較多時(shí),在線教學(xué)軟件當(dāng)前在線人員的界面需要滾動(dòng)才能查看所有上課學(xué)生的信息,因此要采用滾動(dòng)截屏的方法進(jìn)行截圖,其實(shí)現(xiàn)步驟為[1]:滾動(dòng)界面→圖片截取→圖片拼接點(diǎn)辨識(shí)→圖片拼接。滾動(dòng)界面使用pynput模塊的滾動(dòng)功能實(shí)現(xiàn)。圖片截取用Qt的截屏方法實(shí)現(xiàn)。圖片拼接點(diǎn)辨識(shí)是滾動(dòng)截屏生成完成截屏圖片的關(guān)鍵,通過(guò)比較截屏所得的相鄰圖片,尋找下一張圖片在前一張圖片的相同部分位置,并記錄下來(lái)。但有些截屏區(qū)域包含不滾動(dòng)部分,即所有圖片都有相同的頭部或邊框,不能直接用截取的圖片來(lái)尋找拼接點(diǎn),需要比較多張圖片來(lái)去除相同部分的影響。最后將圖片轉(zhuǎn)為數(shù)組,通過(guò)數(shù)組實(shí)現(xiàn)圖片拼接。
2.圖片處理
截屏拼接得到的圖片,還要通過(guò)一定的處理后才能進(jìn)行文字識(shí)別。不同的班級(jí)上課的人數(shù)不同,當(dāng)前在線人員的界面截取圖片長(zhǎng)度的變化也較大。查閱百度AI開(kāi)放平臺(tái)官網(wǎng)可知[2],圖像數(shù)據(jù)base64編碼后進(jìn)行urlencode,要求base64編碼和urlencode后大小不超過(guò)10M,最短邊至少15px,最長(zhǎng)邊最大8192px。
文字識(shí)別正確率與截圖圖片長(zhǎng)邊的長(zhǎng)度有很大的關(guān)聯(lián),當(dāng)截圖圖片長(zhǎng)邊太大時(shí),文字識(shí)別正確率會(huì)下降,甚至無(wú)法識(shí)別。通過(guò)對(duì)在線人員的界面截屏圖片進(jìn)行試驗(yàn)比較,筆者發(fā)現(xiàn)當(dāng)圖片長(zhǎng)度不超過(guò)1500px時(shí),文字識(shí)別準(zhǔn)確率與識(shí)別速度兩者可達(dá)到較好的平衡。因此,在進(jìn)行識(shí)別之前,要先檢查截圖長(zhǎng)邊的像素,若大于1500px,就將圖片分割,然后識(shí)別結(jié)果并合并。
3.文字識(shí)別
百度AI開(kāi)放平臺(tái)免費(fèi)開(kāi)放通用文字高精度識(shí)別,識(shí)別準(zhǔn)確率及使用次數(shù)完全可以滿(mǎn)足日常使用要求,調(diào)用設(shè)置也比較簡(jiǎn)單,本系統(tǒng)使用了百度AI開(kāi)放平臺(tái)提供的OCR API接口進(jìn)行在線識(shí)別。首先,安裝requests庫(kù)以發(fā)送HTTP請(qǐng)求,在百度AI開(kāi)放平臺(tái)上創(chuàng)建應(yīng)用并獲取API Key、Secret Key等信息用于身份認(rèn)證和接口調(diào)用。其次,在程序中導(dǎo)入所需的模塊和函數(shù),傳入圖片對(duì)象,加載圖片并轉(zhuǎn)換為Base64編碼。最后,構(gòu)造POST請(qǐng)求參數(shù)后發(fā)送POST請(qǐng)求得到返回結(jié)果。[3]
4.文字處理
在整理考勤記錄前,百度AI開(kāi)放平臺(tái)返回的識(shí)別文字要經(jīng)過(guò)以下處理。
①姓名提取。在雨課堂中,當(dāng)學(xué)生以實(shí)名及學(xué)號(hào)注冊(cè)賬號(hào)加入班級(jí)后,課上的成員列表會(huì)顯示其姓名與學(xué)號(hào)。在對(duì)圖片識(shí)別文字后,就得到了姓名與學(xué)號(hào)的文本信息。
②姓名糾錯(cuò)。系統(tǒng)對(duì)識(shí)別后得到的姓名設(shè)置了糾錯(cuò)環(huán)節(jié),其操作是將識(shí)別得到的姓名在點(diǎn)名冊(cè)中搜索,獲得未搜索到結(jié)果的姓名、與點(diǎn)名冊(cè)中沒(méi)有匹配項(xiàng)的姓名,通過(guò)difflib.get_close_matches()模塊計(jì)算文本相似度,從中找出最接近的匹配對(duì),顯示于窗口,提示糾正修改為正確的名字。
5.考勤記錄
根據(jù)之前設(shè)置的考勤類(lèi)型,如果是上課考勤,將考勤結(jié)果寫(xiě)入新的一列,如果是課中考勤,則修改原來(lái)的考勤結(jié)果,處理流程如圖4所示。
系統(tǒng)運(yùn)行
系統(tǒng)主界面如圖5所示,可通過(guò)主界面設(shè)置及選擇考勤班級(jí)和考勤模式。點(diǎn)擊“開(kāi)始檢查”出現(xiàn)截圖框選提示并選擇截圖區(qū)域(如下頁(yè)圖6),即可通過(guò)鼠標(biāo)滾輪滾動(dòng)進(jìn)行截圖,在截圖完成后,系統(tǒng)自動(dòng)進(jìn)行圖片文字識(shí)別。
當(dāng)圖片文字識(shí)別完畢后,彈出姓名糾錯(cuò)對(duì)話窗口(如下頁(yè)圖7、圖8),窗口左側(cè)為圖片文字識(shí)別獲取但在點(diǎn)名冊(cè)中搜索不到的姓名,右側(cè)為通過(guò)匹配算法得到的推薦正確姓名。考慮到匹配算法可能存在誤差,因此將窗口右側(cè)內(nèi)容設(shè)置為可以編輯。當(dāng)姓名糾錯(cuò)完成后,點(diǎn)擊窗口“確定”按鈕,則彈出考勤結(jié)果對(duì)話框,確定后即可把考勤結(jié)果寫(xiě)入數(shù)據(jù)記錄文件。
結(jié)語(yǔ)
上述開(kāi)發(fā)的雨課堂實(shí)時(shí)考勤數(shù)據(jù)處理系統(tǒng),可以快速檢查線上課堂在線人員,實(shí)時(shí)獲取上課學(xué)生考勤情況,并將考勤結(jié)果自動(dòng)記錄在指定記錄文件中,提高了考勤效率。該系統(tǒng)在進(jìn)一步改進(jìn)后,還可以應(yīng)用于騰訊會(huì)議、QQ群課堂等常用線上教學(xué)軟件的實(shí)時(shí)考勤。
參考文獻(xiàn):
[1]Roll_screenshot Contributors.用Python實(shí)現(xiàn)的滾動(dòng)截屏.[2024-02-03].https://github.com/fandesfyf/roll_screenshot.
[2]百度AI開(kāi)放平臺(tái).API文檔——通用文字識(shí)別(高精度版).[2024-02-03].https://ai.baidu.com/ai-doc/OCR/1k3h7y3db.
[3]百度AI開(kāi)放平臺(tái).API調(diào)用指南.[2024-02-03].https://ai.baidu.com/ai-doc/REFERENCE/Lkru0zoz4.