Tesseract-OCR训练实现对模糊身份证号码的识别

      根据公司项目需求,需要通过扫描实现身份证号码的提取,使用官方提供的识别库,在正常情况下都能够正确提取出身份证号码,但是在身份证拍摄模糊的情况下,识别效果并不理想。根据需求,我接触了解到Tesseract,它是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本。接着通过进一步学习,训练了一些模糊的身份证号码样本,提高了对模糊身份证号的识别准确度。

下面,我们将在Windows环境下安装Tesseract实现对身份证号的识别及训练工作。


1、Tesseract使用官方库识别身份证号

  1.1  安装Tesseract-OCR

    通过下载地址:http://code.google.com/p/tesseract-ocr/,下载安装tesseract-ocr-setup-3.02.02.exe。安装成功后会生成如下目录:

            

  1.2  使用官方库识别

    准备一张待识别的身份证号图片test.jpg


    打开cmd.exe,进入到test.jpg文件目录,执行:tesseract  test.jpg  output_test -l eng

【语法】:  tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile…]

 imagename为目标图片文件名,需加格式后缀;outputbase是转换结果文件名;lang是语言名称(在Tesseract-OCR中  tessdata文件夹可看到以eng开头的语言文件eng.traineddata),如不标-l eng则默认为eng。

    在当前目录下会生成output_test.txt文件

   

  对比发现,通过官方库识别的结果并不理想,因此训练自己的库来完成识别。

2、Tesseract训练自己的身份证号识别库

  2.1 安装jTessBoxEditor

  下载jTessBoxEditor,地址为:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,解压后放到Tesseract-OCR目录下。这里需要事先安装了JRE。

  2.2 制作训练样本文件

  这里制作了十张模糊化后的身份证号图片,图片格式为tif/tiff格式


  2.3 合并样本文件

  打开jTessBoxEditor,Tools->Merge TIFF,将上述样本全部选上,合并保存为num.font.exp0.tif。这里通过这种方式合并可能会出现Couldn't Seek错误,可以通过下载TIF/TIFF合并工具进行合并。下载地址:http://download.csdn.net/download/u010782875/10033600

合并后的文件如下:


  2.4 字符矫正

  打开jTessBoxEditor,Box Editor ->Open,打开num.font.exp0.tif,各页上字符值和相应的坐标信息


  2.5 生成box文件

  将num.font.exp0.tif放入到一指定目录,打开命令行切换到num.font.exp0.tif所在目录,执行:tesseract  num.font.exp0.tif  num.font.exp0 batch.nochop makebox

【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox  

 lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式。

  

  2.6 配置font_properties文件

  在上述文件夹中新建一个名为font_properties的文本文件,内容为:


【语法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>  

fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用。

  2.7 生成.tr训练文件

  在上述命令行界面执行:tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train

  

  生成num.font.exp0.tr文件

  2.8 生成unicharset字符集文件

  接着执行:unicharset_extractor.exe num.font.exp0.box 

  

  生成unicharset文件

  2.9 生成shape文件

  执行:shapeclustering.exe -F font_properties.txt -U unicharset num.font.exp0.tr

  

  生成shapetable文件

  2.10 生成聚集字符特征文件

  执行:mftraining.exe -F font_properties.txt -U unicharset -O unicharset num.font.exp0.tr

  

  生成inttemp、pffmtable文件

  2.11 生成字符正常化特征文件

  执行:cntraining.exe num.font.exp0.tr 

  

  生成normproto文件

  2.12 更改文件名

  手动将生成的inttemp、normproto、pffmtable、shapetable、unicharset五个文件更改成如下文件名:

  

  2.13 合并训练文件

  执行:combine_tessdata.exe num.

  

  生成num.traineddata文件(不要忘记指令后面的那个“.”),将该文件放到../Tesseract-OCR/tessdata目录下进行接下来的测试

3、使用自己训练的字符库识别身份证号

 还是使用上面的测试图片进行对比测试,在命令窗口执行如下指令:tesseract test.jpg output_test -l num

  

 这里-l num就是使用了自己训练的字符库,打开生成的output_test.txt文件:

  

  

参考博客:http://www.cnblogs.com/cnlian/p/5765871.html

                    http://blog.csdn.net/yasi_xi/article/details/8763385

                    http://blog.csdn.net/gx_489587482/article/details/52686156

                    http://blog.csdn.net/why200981317/article/details/48265621


  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值