最近在研究圖像文字識別與圖像對比的問題,遇到的一些坑和解決方案在這里記錄一下
首先使用的是Tesseract,一款由HP實驗室開發由Google維護的開源OCR(Optical Character Recognition , 光學字符識別)引擎,與Microsoft Office Document Imaging(MODI)相比,我們可以不斷的訓練的庫,使圖像轉換文本的能力不斷增強;如果團隊深度需要,還可以以它為模板,開發出符合自身需求的OCR引擎。
在github下載demo源碼圖像識別 Tesseract OCR,打開demo運行是可以的,但是自己放一張含有中文的圖像時就會出現亂碼,這時需要下載漢文包漢化包鏈接地址,在里面找到chi_sim.traineddata并下載。
將chi_sim.traineddata放到項目下的tessdata文件夾,這里要特別注意,一定不要直接拖進Xcode,一定要在目錄里面打開文件夾放進去。
然后修改代碼里的代碼
G8RecognitionOperation *operation = [[G8RecognitionOperation alloc] initWithLanguage:@"eng"];
改為
G8RecognitionOperation *operation = [[G8RecognitionOperation alloc] initWithLanguage:@"chi_sim"];
問題1:改成chi_sim會報allow_blob_division
解決方法是這個
問題2:為什么改成漢化包OCR Result顯示是空的或者是亂碼
暫時用原生的庫只對黑體字識別率較高,如果圖片中是其他字體或者有背景干擾就會顯示為空,而且遇到復雜的黑體字就識別不了了,比如這樣
鑫被識別成了蠢
想要有其他字體識別能力或者提高識別率需要進行字庫訓練,訓練方法,這個需要大量的長時間的訓練
問題3:報"actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES:Error:Assert failed:in file tessdatamanager.cpp, line 53"錯誤
這個是因為下載的 traineddata 版本不對,如果你報了這個錯誤應該下載這個版本的中文包,把之前的替換掉就可以了
暫時我遇到的就是這三個問題,如果你使用此教程遇到更多問題歡迎留言