最近在研究圖像文字識(shí)別與圖像對(duì)比的問題,遇到的一些坑和解決方案在這里記錄一下
首先使用的是Tesseract,一款由HP實(shí)驗(yàn)室開發(fā)由Google維護(hù)的開源OCR(Optical Character Recognition , 光學(xué)字符識(shí)別)引擎,與Microsoft Office Document Imaging(MODI)相比,我們可以不斷的訓(xùn)練的庫,使圖像轉(zhuǎn)換文本的能力不斷增強(qiáng);如果團(tuán)隊(duì)深度需要,還可以以它為模板,開發(fā)出符合自身需求的OCR引擎。
在github下載demo源碼圖像識(shí)別 Tesseract OCR,打開demo運(yùn)行是可以的,但是自己放一張含有中文的圖像時(shí)就會(huì)出現(xiàn)亂碼,這時(shí)需要下載漢文包漢化包鏈接地址,在里面找到chi_sim.traineddata并下載。
將chi_sim.traineddata放到項(xiàng)目下的tessdata文件夾,這里要特別注意,一定不要直接拖進(jìn)Xcode,一定要在目錄里面打開文件夾放進(jìn)去。
然后修改代碼里的代碼
G8RecognitionOperation *operation = [[G8RecognitionOperation alloc] initWithLanguage:@"eng"];
改為
G8RecognitionOperation *operation = [[G8RecognitionOperation alloc] initWithLanguage:@"chi_sim"];
問題1:改成chi_sim會(huì)報(bào)allow_blob_division
解決方法是這個(gè)
問題2:為什么改成漢化包OCR Result顯示是空的或者是亂碼
暫時(shí)用原生的庫只對(duì)黑體字識(shí)別率較高,如果圖片中是其他字體或者有背景干擾就會(huì)顯示為空,而且遇到復(fù)雜的黑體字就識(shí)別不了了,比如這樣

鑫被識(shí)別成了蠢
想要有其他字體識(shí)別能力或者提高識(shí)別率需要進(jìn)行字庫訓(xùn)練,訓(xùn)練方法,這個(gè)需要大量的長(zhǎng)時(shí)間的訓(xùn)練
問題3:報(bào)"actual_tessdata_num_entries_ <= TESSDATA_NUM_ENTRIES:Error:Assert failed:in file tessdatamanager.cpp, line 53"錯(cuò)誤
這個(gè)是因?yàn)橄螺d的 traineddata 版本不對(duì),如果你報(bào)了這個(gè)錯(cuò)誤應(yīng)該下載這個(gè)版本的中文包,把之前的替換掉就可以了
暫時(shí)我遇到的就是這三個(gè)問題,如果你使用此教程遇到更多問題歡迎留言