OCR学习及tesseract的一些测试
2016-05-17 23:30
267 查看
最近接触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,提到改善结果的要素:
please check DPI of your image and size of text
try to set different segmentation mode (-psm option for command line) if you try to OCR small part of text (line, text)
try to add border (see issue 398)
try to pre-process image (increase DPI, resize, blur/sharpen image) before OCR (see issue 191)
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%,字符为黑体印刷体。
目前测试中增加字体宽度,对识别率,无明显影响。
为进一步提高识别率,对错误识别的字符再次进行训练学习
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,提到改善结果的要素:
please check DPI of your image and size of text
try to set different segmentation mode (-psm option for command line) if you try to OCR small part of text (line, text)
try to add border (see issue 398)
try to pre-process image (increase DPI, resize, blur/sharpen image) before OCR (see issue 191)
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%,字符为黑体印刷体。
目前测试中增加字体宽度,对识别率,无明显影响。
为进一步提高识别率,对错误识别的字符再次进行训练学习
相关文章推荐
- (九)Hibernate 检索策略
- ●sql语句-添加表和字段的说明
- 设计模式学习--状态模式
- 很好的一本linux书籍
- MyEclipse+Mysql (一)
- Hadoop伪分布式配置
- 使用Heartbeat和脚本使服务器服务失效后自动切换 推荐
- vi 常规用法 (二)
- Android-ManiFest
- effective objective-c 2.0 笔记 第五章 :内存管理
- 在用struts2框架时在Action中返回json数据
- iOS开发中邮箱,电话号码,身份证,密码,昵称正则表达式验证
- ●sql-行列转换
- 逃离系统故障的十个心得
- CentOS 下 MySql 忘记root密码
- java基础(四)方法和数组
- 柴俊理金:5、17午夜黄金、宁贵沥青操作策略
- Android开发遇到过期方法时的简单处理
- 配置pycharm 5.0.3 工作环境
- 继续贪心:删数问题