服務近2000家企業,依托一系列實踐中打磨過的技術和產品,根據企業的具體業務問題和需求,針對性的提供各行業大數據解決方案。
圖片字母,數字識別技術
來源:未知 時間:2018-31-24 瀏覽次數:217次
圖片字母,數字識別技術,本文主要講解圖片中字母以及數字的識別技術,主要應用有車牌號識別軟件,鈔票編碼識別,稅號識別等應用系統中,圖片文字識別技術應用在很多重要的工業領域不僅能夠節省重復的人力成而且能夠增加識別歸檔的準確率一、主要思路
將降噪后的圖片切成單個的字母或文字,同svm技術訓練機器的識別能力,逐漸提高準確率
二、使用技術
-
- python3.5
-
python SDK版本
-
- PIL
-
圖片處理庫
-
- libsvm
-
開源的svm機器學習庫
三、基本流程- 準備原始圖片素材
- 圖片預處理
- 圖片字符切割
- 圖片尺寸歸一化
- 圖片字符標記
- 字符圖片特征提取
- 生成特征和標記對應的訓練數據集
- 訓練特征標記數據生成識別模型
- 使用識別模型預測新的未知圖片集
- 達到根據“圖片”就能返回識別正確的字符集的目標
四、圖片字母,數字識別的實現
圖片預處理
雖然目前的機器學習算法已經相當先進了,但是為了減少后面訓練時的復雜度,同時增加識別率,很有必要對圖片進行預處理,使其對機器識別更友好。
針對以上原始素材的處理步驟如下:
- 讀取原始圖片素材
- 將彩色圖片二值化為黑白圖片
- 去除背景噪點
二值化圖片
主要步驟如下:
- 將RGB彩圖轉為灰度圖
- 將灰度圖按照設定閾值轉化為二值圖
image = Image.open(img_path) imgry = image.convert('L') # 轉化為灰度圖 table = get_bin_table() out = imgry.point(table, '1')
上面引用到的二值函數的定義如下:
1234567891011121314defget_bin_table(threshold=140):"""獲取灰度轉二值的映射table:param threshold::return:"""table=[]foriinrange(256):ifi < threshold:table.append(0)else:table.append(1)returntable
- 1對某個 黑點 周邊的九宮格里面的黑色點計數
- 2如果黑色點少于2個則證明此點為孤立點,然后得到所有的孤立點
- 3對所有孤立點一次批量移除。
模型訓練
libSVM是一個機器學習的框架,需要查閱官方文檔完成集成工作,主要是python與libsvm的集成
到這個階段后,由于本文直接使用的是開源的 libSVM 方案,屬于應用了,所以此處內容就比較簡單的。只需要輸入特征文件,然后輸出模型文件即可。
可以搜索到很多相關中文資料
主要代碼如下:
def train_svm_model(): """ 訓練并生成model文件 :return: """ y, x = svm_read_problem(svm_root + '/train_pix_feature_xy.txt') model = svm_train(y, x) svm_save_model(model_path, model)

掃一掃