杜菲霏,郝歐亞,王思桐
(1.華北理工大學數學建模創新實驗室,唐山 063210;2.華北理工大學電氣工程學院,唐山 063210)
光學字符識別(Optical Character Recognition,OCR)是指通過電子設備通過字符識別方法將圖片文字抽取為可編輯文本的過程。由于圖像數據往往都包含噪聲,像素模式之間的關系極其復雜,使用計算機完成OCR 的過程很困難。基于此,需要設計一種圖像文字識別算法,以完成光學字符識別任務。
用于分類的機器學習模型建立與求解過程,首先訓練集進行預處理,選取合適的方法進行訓練后得到模型,然后使用測試數據對模型進行評測,如果結果較好則證明該模型適合解決該類問題。有多元線性回歸模型、LightGbm 模型和 KNN 模型。
首先使用Weka 軟件對數據初步進行統計分析,從統計分析數據可以看出,數據集中并未含有異常值與缺失值,大部分在數據在0-15之間,分布較均勻。
統計分析之后,對數據集中的英文字符進行字典編碼處理,首先建立字符字典,例如字典{A:1,B:2,C:3,D:4,E:5},然后進行字符映射,分別將數據集中的字符A,B,C,D,E 使用數字1,2,3,4,5代替,其它字符以次類推。
由于字符在圖像中主要由像素構成,得出字符所在矩形區域的水平、豎直位置、矩形區域的寬度、高度對字符識別作用較小,故將其剔除,后期實驗表明剔除這四組特征后的效果優于原始特征。
(1)多元線性回歸模型。將預處理后的樣本數據代入模型,使用Python 中的sklearn.linear_model.LinearRegression 庫求出權重矩陣,用于光學字符檢測。
(2)LightGbm 模型。將預處理后的樣本數據代入模型,設置boost 類型為gbdt',葉子數為 100,學習率為 0.01,迭代5000次,使用Python 中的lightgbm 庫得出模型,用于光學字符檢測。
(3)KNN 模型。將預處理后的樣本數據代入模型,使Python 中的 sklearn.neighbors 庫得出模型,用于光學字符檢測。
準確率(Accuracy)、查準率(Precision)、召回率(Recall)、F1值都是評價模型好壞的指標,只是評測的側重點不同,且各指標間有一定的關聯。
Accuracy 為預測值中所有正確值的數量/真實值的數量,定義如式(1)。

Precision 是指模型的查準率,定義如式(2)。

Recall 是指模型的召回率,定義如式(3)。

由于Precision 與Recall 是相對的,不能通過單一的Precision或Recall 來評測模型的優劣,F1 值可以用來量化的權衡關系,定義如式(4)。

取70%數據集作為訓練集,其余30%數據集作為測試集,不同模型的在測試結的測試結果如圖1所示。

圖1 模型評測結果對比圖
由于單個模型數據清洗前后的差距較小,對比不明顯,給出模型評測結果對比表。
由圖1可以看出,KNN 模型的準確率遠遠高于其它兩個模型,在測試集的準確率達到95.3%,所以對于英文字符的識別,具有很好的效果;由于特征數目對于多元線性回歸模型來說過多,所以效果很差;由于改數據集對于LightGbm 模型來說過小,所以效果較差。綜上所述,KNN 模型最適合光學字符識別。
綜上所述,KNN 是一種簡單有效的機器學習分類算法,優點是訓練代價較低、使用訓練集的規模較小、更適合于多分類任務、準確率高、時間復雜度低,缺點是計算量較大、依賴于距離函數與K 值。KNN 模型不僅可以應用于光學字符識別,也可以應用于文本分類、用戶產品推薦、疾病預測等方面。