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,未深入了解,链接如下:
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,这里给出一个:
是以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%,字符为黑体印刷体。
目前测试中增加字体宽度,对识别率,无明显影响。
为进一步提高识别率,对错误识别的字符再次进行训练学习
OCR学习及tesseract的一些测试的更多相关文章
- C++ primer学习记录(个人猜想未测试版本)
学习版本:第五版. 本博文主要记录个人曾经并不知晓知识细节. 因为linux下的编译环境还未进行学习.所以实际代码测试将在今后完成. 红色:需确认. 蓝色:重点. 1)const对象设定为仅在文件内有 ...
- 学习使用TestNG进行数据驱动测试
转自: https://mp.weixin.qq.com/s/8Bd8LEhiC2pu2VMcyNMGlQ 学习使用TestNG进行数据驱动测试 赵吃饭 51Testing软件测试网 前天 学习使 ...
- Tessnet2 a .NET 2.0 Open Source OCR assembly using Tesseract engine
http://www.pixel-technology.com/freeware/tessnet2/ Tessnet2 a .NET 2.0 Open Source OCR assembly usin ...
- 转 Python3 错误和异常/ Python学习之错误调试和测试
########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...
- Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!
Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!
- 学习使用Jmeter做压力测试(一)--压力测试基本概念
学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...
- 【转】OCR识别引擎tesseract使用方法——安装leptonica和libtiff
原文来自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c4224 ...
- 开源OCR识别库-Tesseract介绍
最近在github上面看到一个开源的ocr文字识别库,感觉效果还可以,所以在这里介绍一下,这个项目的原地址在:https://github.com/tesseract-ocr/tesseract. t ...
- [机器学习] 深度学习之caffe1——软件配置与测试
caffe的编译配置真的是很让人头疼啊,不知道试过多少次了~~~ 重装系统了七八次,搞得linux的一些常用命令倒是很熟悉了~~~ 我有洁癖~~~某一个点上出了错,我一定要把它搞好了,再重新来一次,我 ...
随机推荐
- junit4 详解
转:http://www.cnblogs.com/eggbucket/archive/2012/02/02/2335697.html JUnit4概述 JUnit4是JUnit框架有史以来的最大改进, ...
- LeetCode 46 Permutations(全排列问题)
题目链接:https://leetcode.com/problems/permutations/?tab=Description Problem:给出一个数组(数组中的元素均不相同),求出这个数组 ...
- css零零散散的笔记
1.div根据内容自适应大小 效果图: html: <body> <div class="parent"> <div class="chil ...
- [原]F5负载均衡激活license
一.pc用网线连接上f5的管理口,开机,ping 192.168.1.245 二.用浏览器登录:https://192.168.1.245 用户名 admin 密码 admin
- 5-5 ES6的模块化的基本规则或特点
一.AMD, CMD, CommonJs和ES6对比 1.AMD ==> 是RequireJS在推广过程中对模块定义的规范化产出 // RequireJS定义标准, 导步加载依赖, 依赖前置 d ...
- apktool反解apk包
APKTool APKTOOL是解包 APK 文件最常用的工具,许多 APK 工具箱都集成了 apktool.它可以完整解包 APK,解包后你可以看到 APK 里面的声明文件.布局文件.图片资源文件. ...
- 把握这两点,抢占下一个电商风口|2016最新中国电商App排名&研究报告
序言 电商,是随着中国互联网经济的持续发展所成长起来的.淘宝.京东这些电商从交易额和影响力上看都位列中国最为成功.最具话题性的互联网企业之中.尽管近几年中国经济有所放缓,但中国消费市场的增长速度仍有望 ...
- centos 7.1开机/etc/rc.local脚本不执行的问题
Centos 7.1中,/etc/rc.local是一个软链接文件.指向的是/etc/rc.d/rc.local 在Centos之前的版本我们都会将一些开机需要执行的命令加入到/etc/rc.loca ...
- node path的几个路径问题
__dirname: 总是返回被执行的 js 所在文件夹的绝对路径 __filename: 总是返回被执行的 js 的绝对路径 process.cwd(): 总是返回运行 node 命令时所在的文件夹 ...
- adviser vs mentor
研究生或博士生提到自己导师的时候是说adviser呢?还是mentor呢? 至少我认识一个Berkeley的博士是说adviser的. 另外,我的导师也是说adviser. 那还是说adviser吧- ...