OCR学习及tesseract的一些测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OCR学习及tesseract的一些测试相关的知识,希望对你有一定的参考价值。

最近接触OCR,先收集一些资料,包括成熟软件、SDK、流行算法。

 

1. 一个对现有OCR软件及SDK的总结,比较全面,包括支持平台、编程语言、支持字体语言、输出格式、相关链接等

http://en.wikipedia.org/wiki/List_of_optical_character_recognition_software

以此为索引,比较、选择你想要的OCR SDK。

 

2. 另外一个OCR SDK 网站链接,商用,号称high performance,未深入了解,链接如下:

http://asprise.com/home/

 

3. 一个大学UCI 给出的handwriting数字的 training及testing数据:

http://archive.ics.uci.edu/ml/datasets/Optical+Recognition+of+Handwritten+Digits

其每个数字近550个样本,出自43个人,30个人的用于training,13个人的用testing。其网站上有详细介绍。

4. 一个哥们对开源的OCR 库的总结:

http://blog.csdn.net/yzm888/article/details/5352423

 

5. 网上有很多OCR的online service,这里给出一个:

http://www.free-ocr.com/

是以tesseract为OCR引擎。

 

----------------------------------------------------------------------------------------------------

OCR常用算法:

OCR重要的是识别率,专家说达到90%以上才有意义。

OCR重要的两点:特征提取与匹配能力。

特征提取与图像处理算法的好坏密切相关。

 

匹配算法:

1. 模板匹配

包括多模板匹配、关键点模板匹配

2. 人工神经网络训练

 

3. 结构化分析、特征统计

 

 

---------------------------------------------------------------------------------------------------

tesseract是google开源的OCR,很流行。

这里记录下其应用方法及原理。

 

单个字符tesseract 测试:

命令行: tesseract  input.jpg out  -psm  10

输入图像应该遵守一定的规则,这样才能提高识别率:

技术分享

其结果是M,错的结果。

而对

技术分享

其结果是H,正确。

两个图片的区别就在于宽度不同,一个大小是(29,55),另外一个是(55,55),原以为图片是需要归一化,或宽高相等。后查看tesseract FAQ,提到改善结果的要素:

 

  1. please check DPI of your image and size of text
  2. try to set different segmentation mode (-psm option for command line) if you try to OCR small part of text (line, text)
  3. try to add border (see issue 398)
  4. try to pre-process image (increase DPI, resize, blur/sharpen image) before OCR (see issue 191)
  5. try to remove noise dewarp (so there are straight text lines) image and binarize image

这里是第三点add border,使结果改善。

 

经批量测试,确是如此。

 

其他,设置识别白名单,如只识别数字,或大写字母,可以大大提高识别率

将tessedit_char_whitelist 0123456789 放在config/digits中,数字可被替换。

测试200多个单个字符(200张图片),识别率达到90%,字符为黑体印刷体。

 

目前测试中增加字体宽度,对识别率,无明显影响。

 

为进一步提高识别率,对错误识别的字符再次进行训练学习

以上是关于OCR学习及tesseract的一些测试的主要内容,如果未能解决你的问题,请参考以下文章

使用 tesseract 为 android

android怎么调用tesseract实现OCR功能?

Tess-Two(Android 中的 Tesseract OCR)显示非常不准确的结果

使用 Tesseract 的 Android OCR 应用程序

Windows 中的 Tesseract OCR Android

Tesseract的使用