============================身份证识别===============================
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程
机器学习训练样本,-》 。tranindata
2006年google 开源Android 中 : Tess-twoOCR 文字识别
OCR jTessBoxEditor////////////////////////////////训练分类器//////////////////////////
/step1: 搭建环境 jTessBoxEditorjTessBoxEditor,google OCRhttps://sourceforge.net/projects/vietocr/files/jTessBoxEditor/下载好的里面的E:\NDK\OCR\jTessBoxEditorFX-2.0-Beta\jTessBoxEditorFX\tesseract-ocr\tessdata\eng.traineddata 就是官方提供先训练好的分类器1.2 测试 tesseract 0.tif y -| eng.traineddata 0.tif ,源图片 y , 结果保存的txt 的文件名 -| eng.traineddata ,训练的分类器,这个是google提供出来的不能直接使用于身份证识别,不然还是有很多问题备注执行的时候还是要到tesseract 的文件夹下,不然会有一些问题如:E:\NDK\OCR\jTessBoxEditorFX-2.0-Beta\jTessBoxEditorFX\tesseract-ocr>tesseract F:\NDK2017-2\Lsn36_IDcard识别_2017-10-20\Lsn36_IDcard识别_2017-10-20\训练例子\sample\sample\sample1.tif y -| E:\NDK\OCR\jTessBoxEditorFX-2.0-Beta\jTessBoxEditorFX\tesseract-ocr\tessdata\eng.traineddataTesseract Open Source OCR Engine v4.0.0-alpha.20170804 with LeptonicaPage 1
step2: 准备样本
2.1 身份证号码那一截就可以,直接用画板截图然后更改文件的后缀名字为tif,得到 .tif格式图片。
2.2 合并tif要执行一个工具文件E:\NDK\OCR\jTessBoxEditorFX-2.0-Beta\jTessBoxEditorFX java -jar jTessBoxEditorFX .jar jTessBoxEditorFX ->tools->merge tiff, 选择需要训练的tif 文件 , 然后出现save 界面,在这个 界面的命名的地方按照下面的规则命名 这个文件名必须是如下格式: [lang].[fontname].exp[num] lang:语言名(训练生成的示为语言) fontname:字体名 num:序号(无所谓) 于是可以得到一个命名为zh.song.exp0.tif 的文件
step3: 生成box 命令: tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox [lang].[fontname].exp[num] 2.2 给我们的结果, [lang].[fontname].exp[num] 名字与上面的相同,这个是保存box文件的名字(这个名字一定要和上面的相同) batch.nochop makebox
step4: 校正box 文件 ox文件记录的内容可能存在错误,比如 12345,在box中保存为1、2、34、5或者2、3、4、5或者1、a、5、4、5. 所以需要手动进行校正.jTessBoxEditor[Box Editor]点击open打开box记录的tif文件.对错误地方进行校正,注意多个tif合并而成的tif会有多个页面,完成之后Save. step5:训练 5.1 在训练的当前目录创建 font_properties 文件 文件内容为:内容:song 0 0 0 0 0
fontname:字体名
italic:斜体 0/1
bold:黑体 0/1
fixed:默认字体 0/1
serif:衬线字体 0/1
fraktur:德文黑字体 0/1
注意:5.2~ 5.6 都在step4.bat中,大家只需要修改bat 中的参数就可以了
5.2 产生字符特征文件
命令: tesseract number.song.exp0.tif number.song.exp0 box.train
number.song.exp0.tif 2.2 结果
number.song.exp0 对应的box
box.train
5.3 计算字符集
unicharset_extractor [lang].[fontname].exp[num].box
生成 unicharset 文件
命令:unicharset_extractor number.song.exp0.box
5.4 聚集字符特征
shapeclustering -F font_properties -U unicharset [lang].[fontname].exp[num].tr
[可以不运行] 生成 shapetable 文件
mftraining -F font_properties -U unicharset -O [lang].unicharset [lang].[fontname].exp[num].tr
生成 [lang].unicharset、inttemp(图形原型文件)、pffmtable(每个字符所对应的字符特征数文件)、shapetable(如果没有运行shapeclustering) 文件
命令:mftraining -F font_properties -U unicharset -O number.unicharset number.song.exp0.tr
5.5 生成字符形状正常化特征文件
cntraining [lang].[fontname].exp[num].tr
生成 normproto 文件
命令:cntraining number.song.exp0.tr
重命名shapetable, normproto, inttemp, pffmtable
[lang].shapetable
[lang].normproto
[lang].inttemp
[lang].pffmtable
名称:
number.shapetable
number.normproto
number.inttemp
number.pffmtable
5.6 生成tessdata文件
运行 combine_tessdata [lang].
得到 *.traineddata 结果