







摘要:針對線上教學中,教師無法即時提供課上考勤情況以及及時保存考勤結果的問題,作者以雨課堂為例,使用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.