最近在研究图像文字识别与图像对比的问题,遇到的一些坑和解决方案在这里记录一下
首先使用的是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 版本不对,如果你报了这个错误应该下载这个版本的中文包,把之前的替换掉就可以了
暂时我遇到的就是这三个问题,如果你使用此教程遇到更多问题欢迎留言
网友评论