最近接触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的一些测试的更多相关文章

  1. C++ primer学习记录(个人猜想未测试版本)

    学习版本:第五版. 本博文主要记录个人曾经并不知晓知识细节. 因为linux下的编译环境还未进行学习.所以实际代码测试将在今后完成. 红色:需确认. 蓝色:重点. 1)const对象设定为仅在文件内有 ...

  2. 学习使用TestNG进行数据驱动测试

    转自: https://mp.weixin.qq.com/s/8Bd8LEhiC2pu2VMcyNMGlQ 学习使用TestNG进行数据驱动测试 赵吃饭 51Testing软件测试网 前天   学习使 ...

  3. 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 ...

  4. 转 Python3 错误和异常/ Python学习之错误调试和测试

    ########sample 0 https://www.cnblogs.com/Simon-xm/p/4073028.html except: #捕获所有异常 except: <异常名> ...

  5. Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!

    Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!

  6. 学习使用Jmeter做压力测试(一)--压力测试基本概念

    学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...

  7. 【转】OCR识别引擎tesseract使用方法——安装leptonica和libtiff

    原文来自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c4224 ...

  8. 开源OCR识别库-Tesseract介绍

    最近在github上面看到一个开源的ocr文字识别库,感觉效果还可以,所以在这里介绍一下,这个项目的原地址在:https://github.com/tesseract-ocr/tesseract. t ...

  9. [机器学习] 深度学习之caffe1——软件配置与测试

    caffe的编译配置真的是很让人头疼啊,不知道试过多少次了~~~ 重装系统了七八次,搞得linux的一些常用命令倒是很熟悉了~~~ 我有洁癖~~~某一个点上出了错,我一定要把它搞好了,再重新来一次,我 ...

随机推荐

  1. 【POJ2154】Color Pólya定理+欧拉函数

    [POJ2154]Color 题意:求用$n$种颜色染$n$个珠子的项链的方案数.在旋转后相同的方案算作一种.答案对$P$取模. 询问次数$\le 3500$,$n\le 10^9,P\le 3000 ...

  2. [转][darkbaby]任天堂传——失落的泰坦王朝(中)

    TV游戏产业历史上曾有过太多表里不一的外交辞令,然而当年SQUARE和任天堂分道扬镳的真正原因确实如坂口博信在1996年2月29日的PS版 <FFVII>发表会上宣称的那样:“虽然之前有过 ...

  3. 推荐一款不错的TP5开源是CMS

    这是最近在使用的一套CMS,拟进行二次开发作为企业CMS来使用. http://www.cltphp.com/index.html git地址: https://gitee.com/chichu/cl ...

  4. thinkphp结合layui上传图片

    简单示例: <script type="text/javascript"> layui.use(['form', 'layedit','element', 'layda ...

  5. 高斯混合模型Gaussian Mixture Model (GMM)

    混合高斯模型GMM是指对样本的概率密度分布进行估计,而估计采用的模型(训练模型)是几个高斯模型的加权和(具体是几个要在模型训练前建立好).每个高斯模型就代表了一个类(一个Cluster).对样本中的数 ...

  6. Elasticsearch-mapper 基于注解方式生成mapping(2.0以上)

    Elasticsearch生成mapping的方式上有多种方式,我们可以把mapping做成配置文件,也可以用spring-data-elasticsearch基于注解生成. 在基于注解生成这种方式上 ...

  7. 纯CSS绘制的三角形箭头图案【原创】

    参考:http://www.webhek.com/css-triangles/ 使用上下左右的三角形箭头标志,直接用css即可完成,直接附上代码. css: div#up { width: 0px; ...

  8. Python实现KNN算法及手写程序识别

    1.Python实现KNN算法 输入:inX:与现有数据集(1xN)进行比较的向量   dataSet:已知向量的大小m数据集(NxM)   个标签:数据集标签(1xM矢量)   k:用于比较的邻居数 ...

  9. CodeForces - 55C Pie or die 想法题(猜程序)

    http://codeforces.com/problemset/problem/55/C 题意:一个博弈. 题解:瞎猜,目前不清楚原理 #include<iostream> #inclu ...

  10. tcpdump 学习

    简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的 ...