最近在做身份证号码识别,在网上搜索的一番后发现目前开源的OCR中tesseract-ocr算是比较强大的了,它由HP于1985年到1995年间开发,后来由google直接负责,经过谷歌进一步开发后,目前的tesseract-ocr有了显著的改进。

tesseract-ocr和Leptonica图像库一起工作,它可以读取多种图像格式,并将其转换成超过60种语言的文本。可以工作在Linux,Windows,Mac OSX等系统上,并且可以在android和iphone平台上编译。

目前android版本在这个地址:https://code.google.com/p/tesseract-android-tools/, 这个版本需要自己下载很多关联的库文件,我在编译的时候出了很多问题,后来没办法又在网上找到了这个项目:https://github.com/rmtheis/tess-two,说是tesseract-ocr-tool的一个分支,这个版本的好处是很多相关的库都已经为我们配置好了,我们只要git clone下来编译下就行了,github上相关介绍说的很详细,编译的过程这里就不做介绍了,我在编译的时候出现了permission权限的问题,文件的权限用chmod 777  ./  这个命令修改下就Ok了。最后编译好的在libs下的so文件就是我们开发所需要的库文件。

android中tesseract-ocr的使用在tess-two这个项目中有例子程序,不过写的都比较简单,这里有个开源的识别项目,做的很好:https://github.com/rmtheis/android-ocr, 我借鉴的就是这个项目来开发的,但是用过后发现,对于身份证识别的效果并不好,识别率不是很高,而且经常识别不出来。OCR用到的识别库:https://code.google.com/p/tesseract-ocr/downloads/list,其实我们可以根据自己的需求来训练一套自己的识别库的,比方说我们要识别验证码,识别身份证号码等,我们就可以用下面的方法来训练一套识别库。

网上关于OCR训练的方法很多,http://my.oschina.net/lixinspace/blog/60124, http://blog.wudilabs.org/entry/f25efc5f/这两篇文章都是比较好的教程,我也是参照这两篇文章来训练的,下面结合我的操作经验来说下训练的过程。

首先我们需要下面几个工具:

tesseract-ocr-3.01, 最新版的3.02我在我机器上用了有点问题

jTessBoxEditor, 该工具是用java写的box编辑器

1、先新建一个trainocr文件夹,将上面两个文件拷贝进来,然后解压这两个文件,我们进入Tesseract-ocr文件夹下新建一个temp文件夹

2、接下来我们准备好我们需要训练的素材如下图

要想提高识别率,我们需要提供多张像上面这样的图片,我训练身份证号码识别库是用了50多张图片,等训练完了我眼睛也花了,图片格式需要为tiff格式的,可以通过windows自带的画图工具来另存为tiff格式,准备好多张图tiff图片后,打开jTessBoxEditor.jar,如下图

在此之前我们需要在第1步建立的temp文件夹下新建一个custom.tif的文件,接下来我们选择tool–>Merge TIFF 然后选择准备好的多张tiff图片,注意这里是全部选中,然后点击打开,然后选中我们刚刚建立的custom.tif文件,点击保存,这样我们就将多张tiff图片merge到了一个文件里面了。

3、接下来我们开始生成box文件了,cmd命令行进入temp文件夹下,然后输入如下命令

D:\Trainocr\Tesseract-ocr\temp>..\tesseract.exe custom.tif custom batch.nochop makebox

输入完后会在temp文件夹下多了个custom.box文件,该文件记录了识别出来的每个字和它对应的位置坐标。

4、接下来就开始矫正了,同样使用jTessBoxEditor工具,我们切换到Box Editor,然后open打开custom.tif,如图

通过右上角的X,Y,W,H对每个需要改正的字符进行调整,注意调整好后别忘记保存。

5、接下来是计算字符集,输入如下命令

D:\Trainocr\Tesseract-ocr\temp>..\unicharset_extractor.exe custom.box

6、接下来我们需要在temp文件夹下建一个font_properties文件,3.01版本的OCR需要这个文件,该文件的目的是提供输出时识别出来的字体样式信息,文件的格式为

<fontname> <italic> <bold> <fixed> <serif> <fraktur>

timesitalic 1 0 0 1 0

我们可以根据实际情况新建font_properties,我写的是

custom 0 0 0 0 0

意思是普通字体,没有任何格式。

然后执行以下命令

D:\Trainocr\Tesseract-ocr\temp>..\mftraining.exe -F font_properties -U unicharset custom.tr

7、Clustering,输入命令

D:\Trainocr\Tesseract-ocr\temp>..\cntraining.exe custom.tr

8、此时在temp文件夹下已经有很多文件了,需要把inttemp,Microfeat,normproto,pffmtable,unicharset这几个文件加上前缀custom. (注意有个点号),然后输入以下命令

D:\Trainocr\Tesseract-ocr\temp>..\combine_tessdata.exe custom.

出来的结果中我们需要确定type 1,type3, type4, type5对应的后面数据不能为-1,这样我们就可以用这个新字典来识别了,将生成的custom.traineddata文件拷贝到tessdata文件夹下,然后

tesseract test.jpg result | custom  就可以通过新的字典来识别,测试结果表明,识别率确实提高了。现实应用中我们需要使用多张图片来通过上面的步骤来生成我们需要的识别库,这样识别率才能提高。

Android ocr识别文字介绍(文字识别)相关推荐

  1. 人脸识别技术介绍和表情识别最新研究

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 一.人脸识别技术介绍 人脸识别作为一种生物特征识别技术,具有非侵扰性.非接触性.友好性和便捷性等优点 ...

  2. Android ocr识别文字介绍

    最近在做身份证号码识别,在网上搜索的一番后发现目前开源的OCR中tesseract-ocr算是比较强大的了,它由HP于1985年到1995年间开发,后来由google直接负责,经过谷歌进一步开发后,目 ...

  3. Android OCR文字识别 实时扫描手机号(极速扫描单行文本方案)

    更新: AI时代已经到了,各位小伙伴如果还有类似的需求,现在已经有很成熟的免费OCR库了,不用再挖古董文章了,钻研精神要保持,但也不用处处自己造轮子了哦 要做实时OCR扫描的可以参考 Google M ...

  4. Android Ocr文字识别 身份证识别 实时扫描

    遇到一个需求需要扫描身份证,识别身份证号并进行查询,在网上百度需要用到文字识别技术,ocr tess-two,看到网上有关于中英文实时扫描和手机号实时扫描的功能,于是在这两者的基础上进行了改进,感谢顾 ...

  5. 模板 字段_劲爆新功能:轻流文字识别(OCR)功能支持自定义识别模板啦

    Hi,又和大家见面啦- 前段时间我们的文字识别(OCR)功能推出后,由于只支持系统提供的固定识别模板,很多客户跟我们反馈说:希望可以自定义识别模板! 现应大家的要求,轻流「文字识别(OCR)」的「自定 ...

  6. horizon client 无法识别域_iText for Mac(OCR识别图中文字工具)

    itext mac中文特别版是一款从图片中识别文字的OCR(光学字符识别)工具.通过截图.拖拽图片,即可以从扫描版的PDF等任意图片中识字,并且可以很好的解决摘抄和批注需求.而且itext mac版使 ...

  7. Cisdem PDF Converter OCR for Mac(PDF文字识别转换工具)

    Cisdem PDF Converter OCR Mac特别版是Mac平台上一款功能非常强大的PDF文字识别转换工具,用户可以通过Cisdem PDF Converter OCR for Mac将任何 ...

  8. 票据识别android代码,Android 百度AI开放平台-文字识别-财务票据文字识别

    简单记录一下今天关于百度AI开放平台-文字识别-财务票据文字识别的实现过程 文字识别有对应的Android SDK集成及相关Demo,文档地址如下图: SDK目录图.png 但是SDK中的返回数据字段 ...

  9. 怎样用ocr软件识别图片中的文字

    现在文件格式越来越多,一个个处理起来也是很麻烦,想要有效快速的完成工作任务,我们就必须要利用一些辅助工具的帮助,比如说怎样用ocr软件识别图片中的文字?这个问题我们该如何处理,其实只要使用一个文字识别 ...

最新文章

  1. Dubbo:Spring Cloud 服务调用的新选择
  2. 制作liveusb实现centos6.2全自动无人职守安装
  3. 【AI不惑境】深度学习中的多尺度模型设计
  4. 数据预处理工具_数据预处理
  5. 你的代码是否按照高内聚、低耦合的原则来设计的?
  6. 含有js的英文单词_JavaScript 常用单词整理
  7. 服务器版Windows7系统,windows7服务器版本
  8. Apache中限制和允许特定IP访问
  9. 【LeetCode】剑指 Offer 53 - I. 在排序数组中查找数字 I
  10. 【ZJOI2009】【BZOJ1432】Function(找规律)
  11. hdmi 屏幕旋转 树莓派_使用树莓派的轻量级远征工具套装
  12. 薛定谔Maestro--LigPrep 准备配体
  13. win7打开win10共享计算机要凭据,win10打开共享文件夹后要求凭证怎么办
  14. 2019年Unity学习资源指南[精心整理]
  15. 2019 年第 27 周 DApp 影响力排行榜 | TokenInsight
  16. 一个C#版的多选题选项及判分设计方案
  17. 【C/C++】标准库之 numeric
  18. .NET Framework各个版本(1.0 - 2.0)
  19. VTK源码阅读--vtkObject类-观察者/命令模式
  20. 满口春日清爽 书亦烧仙草刺梨新品上市

热门文章

  1. 青龙面板运行·小米改步
  2. 线性dp——hdu6578经典dp
  3. [2019HDU多校第一场][HDU 6578][A. Blank]
  4. java拆分list_Java 8 stream 流 拆分list
  5. 取消Eclipse中的语法分析警告,去掉虫子 ,去掉红点报错方法
  6. 小小甜菜深度学习爬坑记
  7. Android 加固应用
  8. 7 年“键盘手”没在意!某程序员手疼查出骨肿瘤,已让骨头成了“豆腐渣”...
  9. 三种食物会让肿瘤疯长
  10. 使用huggingface的Transformers预训练自己的bert模型+FineTuning