如何使用Tesseract OCR改进文本识别.

bal*_*nna 3 opencv tesseract objective-c ios

我在IOS中实现了tesseract ocr用于文本识别.我已经对输入图像进行了预处理并给出了Tesseract方法.它给出了较差的识别结果.

脚步:

1.侵蚀功能

2.Dilate功能

3.Bitwise_not功能

 Mat MCRregion;
 cv::dilate ( MCRregion, MCRregion, 24);
 cv::erode ( MCRregion, MCRregion, 24);
 cv::bitwise_not(MCRregion, MCRregion);

 UIImage * croppedMCRregion = [self UIImageFromCVMat:MCRregion];

    Tesseract* tesseract = [[Tesseract alloc] initWithDataPath:@"tessdata" language:@"eng"];
    [tesseract setVariableValue:@"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.>,'`;-:</" forKey:@"tessedit_char_whitelist"];
    [tesseract setImage:[self UIImageFromCVMat:MCRregion]];
    //                [tesseract setImage:image];
    [tesseract recognize];

    NSLog(@"%@", [tesseract recognizedText]);
Run Code Online (Sandbox Code Playgroud)

输入图片:

图片链接

1.如何使用Tesseract提高文本识别率?

2.在Tesseract中应用了任何其他预处理步骤.

3.在Tesseract OCR中完成了褪色文本.?

bas*_*kin 8

Tesseract是一个高度可配置的软件 - 虽然它的配置文档很少(除非你想深入挖掘150K代码行).这里有一个很好的综合列表http://www.sk-spell.sk.cx/tesseract-ocr-parameters-in-302-version.

另请 参阅https://code.google.com/p/tesseract-ocr/wiki/ControlParamshttps://code.google.com/p/tesseract-ocr/wiki/ImproveQuality

如果您提供有关您正在进行OCR的数据的更多信息,您可以极大地提高质量.例如,如果图像都是遵循某些标准MRZ格式的国家ID或护照,您可以配置tesseract以使用该信息.

对于您附加的图像(MRZ),我得到以下结果,

IDFRADOUEL<<<<<<<<<<<<<<<<<<<<9320 
05O693202O438CHRISTIANE<<N1Z90620<3
Run Code Online (Sandbox Code Playgroud)

通过使用以下配置

# disable dict, freq tables etc which would distract OCR'ing an MRZ
load_system_dawg F
load_freq_dawg F
load_unambig_dawg F
load_punc_dawg F
load_number_dawg F
load_fixed_length_dawgs F
load_bigram_dawg F
wordrec_enable_assoc F

# mrz allows only these chars
tessedit_char_whitelist 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ<
Run Code Online (Sandbox Code Playgroud)

另请参阅您的安装是否经过字体培训,以获得更准确的结果.在你的情况下,它似乎是OCR-B字体.


dii*_*mas 5

没有必要经历重新训练Tesseract的繁琐任务.是的,你会得到更好的结果,但在某些情况下你可以使用ENG训练集.

您可以通过注意以下事项来改善结果:

  1. 使用二进制图像作为输入,并确保在白色背景上有黑色文本

  2. 默认情况下,Tesseract会尝试用没有间距的东西来制作单词.尝试单独分割每个字符并将它们放在具有大量间距的新图像中.特别是如果你有字母和数字的组合,Tesseract将"纠正"这个以匹配周围的字符.

  3. 尝试使用白名单对图像的不同部分进行细分,以确定您应该知道的角色.如果您只在第一部分中查找数字,则使用Tesseract的单独实例来检测这些数字,仅使用数字白名单.

  4. 如果多次使用同一个对象而不重置它,Tesseract似乎有一个内存.这意味着每次执行OCR时都可以获得不同的结果.您可以重置Tesseract来对此进行计数或仅创建一个新对象.

  5. 最后但并非最不重要的是,使用它resultIterator来浏览Tesseract可以提供的框.您可以检查每个字符的大小和置信度并相应地进行过滤.