android利用tesseract-ocr自己训练身份证号码识别库,并使用识别库识别身份证号码

最近因为要用到扫描身份证号码这个功能,找了找网上的资料,发现用tesseract-ocr可以识别出需要的文字和数字,但是识别率是太低了,拍的很好地照片也不能准确识别,所以打算自己训练一个字库文件。借鉴了下面这两个博文的资料,http://www.longdw.com/android-tesseract-ocr/和http://www.cnblogs.com/wzben/p/5930538.html。完全按照这两个文章的操作总是失败,所以自己尝试结合了下,总结出了一个训练的方法,最后成功了,比原先的字库文件要好很多。前提是已经下载好tesseract-ocr-3.01 和jTessBoxEditor,这俩工具。tesseract-ocr-3.02的版本我的电脑也是不支持,不知道为什么。这俩工具和android demo 都在下面的连接打包好了,下载下来解压就行。

训练步骤:

1.我们进入Tesseract-ocr文件夹下新建一个temp文件夹
2.在此之前我们需要在第1步建立的temp文件夹下新建一个mjorcen.normal.exp0.tif的文件,接下来我们选择tool–>Merge TIFF 然后选择准备好的多张tiff图片,
注意这里是全部选中,然后点击打开,然后选中我们刚刚建立的mjorcen.normal.exp0.tif文件,点击保存,这样我们就将多张tiff图片merge到了一个文件里面了。
3.接下来我们开始生成box文件了 
C:\Program Files (x86)\Tesseract-OCR\temp> tesseract.exe mjorcen.normal.exp0.tif mjorcen.normal.exp0 batch.nochop makebox
输入完后会在temp文件夹下多了个custom.box文件,该文件记录了识别出来的每个字和它对应的位置坐标。
4.接下来就开始矫正了,同样使用jTessBoxEditor工具,我们切换到Box Editor,然后open打开mjorcen.normal.exp0.tif ,通过右上角的X,Y,W,H对每个需要改正的字符进行调整,注意调整好后别忘记保存
5.tesseract  mjorcen.normal.exp0.tif mjorcen.normal.exp0  nobatch box.train
6.unicharset_extractor mjorcen.normal.exp0.box
7.新建一个font_properties文件,里面内容写入 normal 0 0 0 0 0 表示默认普通字体
8.mftraining -F font_properties -U unicharset -O unicharset mjorcen.normal.exp0.tr
9.cntraining mjorcen.normal.exp0.tr
10.最后会生成五个文件,把目录下的unicharset、inttemp、pffmtable、Microfeat、normproto这五个文件前面都加上"normal."
11."combine_tessdata normal."
12.得到训练好的字库--normal.traineddata

注意事项:

1. tif文面命名格式[lang].[fontname].exp[num].tif
lang是语言 fontname是字体 
比如我们要训练自定义字库 mjorcen字体名normal
那么我们把图片文件重命名 mjorcen.normal.exp0.jpg在转tif。(关系到训练成功与否,很重要)
2. box文件和对应的tif一定要在相同的目录下,不然后面打不开。
3.找的图片各式各样的越多,识别率越高。不看你找的图片多少,只看你图片的样式。因为我发现10张图片和50张一般的图片没啥很大区别。该识别出来的还是能识别出来,不能识别出来的还是识别不出来。
所以尽可能的人为去造一些影响识别的图片。


资源包下载地址:http://download.csdn.net/detail/w304970865rui/9677165

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值