我尝试构建一个可以从汽车扫描vin号的iOS应用程序。我在扫描的准确性方面遇到了一些问题。
我使用opencv查找文本的轮廓/边界框,到目前为止我有这个结果:
正如您所看到的,我找到了很好的结果,找到了文本框,并且在将图像发送到tesseract之前,我根据绿框裁剪图像。
然而,Tesseract并没有给出好的结果。有时我会得到正确的文字,有时它会给我一些其他内容。我使用以下Pod中的tesseract 3.03:https://github.com/kevincon/Tesseract-OCR-iOS/tree/tesseract3.03
我使用默认的英语训练字典,我设置了Tesseract,如:
tesseract = [[Tesseract alloc] initWithLanguage:@"eng"];
[tesseract setVariableValue:@" 0123456789ABCDEFGHJKLMNPQRSTUVWXYZ" forKey:@"tessedit_char_whitelist"];
[tesseract setVariableValue:@"language_model_penalty_non_freq_dict_word" forKey:@"0"];
[tesseract setVariableValue:@"language_model_penalty_non_dict_word" forKey:@"0"];
[tesseract setVariableValue:@"load_system_dawg" forKey:@"0"];
[tesseract setVariableValue:@"load_freq_dawg" forKey:@"0"];
关于如何提高此扫描准确度的任何想法?
更新1: 我的下一步将是创建traindata。我会尝试使用这个图像: https://dl.dropboxusercontent.com/u/63179/ocr/traindoc.jpg 我是字体helvetica neue regular,因为它看起来很安静。我知道我的文本只包含数字和大写字符。
答案 0 :(得分:0)
你有没有生成.traindata?我已经为信用卡号识别做了类似的事情。但它没有开箱即用。
我使用 jTessBoxEditor 和 SerakTesseractTrainer 为用于信用卡的特定字体生成 .traindata 。
但无论如何 - 结果并不像我预期的那么好。如果我用略微不同的字体扫描数字,准确性是非常糟糕的。