tesseract-ocr验证码识别

原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL
原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL
原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL

OCR安装工具

下载安装tesseract-ocr-setup-3.02.02
训练工具jTessBoxEditor-2.3.0
下载地址

https://download.csdn.net/download/u011356878/12639109

OCR文字识别实现

参考
https://www.cnblogs.com/cnlian/articles/5765871.html

环境的安装及卸载

安装ocr比较简单,一直next下一步就行了。
需要java环境,所以需要安装jdk8。

注意如果要卸载的话,要注意环境变量有没有删除,不然重新安装不起来
TESSDATA_PREFIX和path
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZKZhoaf-1595561724196)(/upload/QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcODY2MjM5MDBfdjJcSW1hZ2VGaWxlc1wxNTk0MTAyMzg3NjQxXzEwNUQwQTQ0LTU4RkYtNDE4My04RUVELTJGMjNGNUI4MzE2NC5wbmc=.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KcXT1q8P-1595561724204)(/upload/QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcODY2MjM5MDBfdjJcSW1hZ2VGaWxlc1wxNTk0MTAyNDUwODEyXzM2RDcxMDYzLTNBREItNGJkNy04NDJGLTZBMTQ3QzMzQUVFQS5wbmc=.png)]
安装完成测试一下
打开命令行窗口,进入安装目录,输入如下命令
tesseract test.png output_1 –l eng
output_1是将识别的结果写入这个文件(文件会自己创建)
-l end 指定使用的语言库,,eng是英语

这里我使用的是亚马逊的验证码图片去识别,发现识别效果比较差。所以我们需要训练来提高我们的识别率。

jTessBoxEditor训练

1、我们将要训练的图片(样本)放在一个统一的文件夹

2、打开jTessBoxEditor,Tools->Merge TIFF,将样本文件全部选上,并将合并文件保存为 was.font.exp0.tif
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cGsKhmkK-1595561724206)(/upload/QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcODY2MjM5MDBfdjJcSW1hZ2VGaWxlc1wxNTk0MTAxOTQxNjkxX0FDRUU1N0Q2LTg5QzktNGE1Yy1CRTc1LUU2QTRFODc5NDYyOC5wbmc=.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b3pPpfo7-1595561724208)(/upload/QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcODY2MjM5MDBfdjJcSW1hZ2VGaWxlc1wxNTk0MTAyMDAxNDE5XzI5ODQxNzVBLUQ0RDUtNGI3OC1CQ0Q3LUVFQzIxNjIwRDk0MC5wbmc=.png)]

3、生成BOX文件
tesseract was.font.exp0.tif num.font.exp0 batch.nochop makebox
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLTwTJyp-1595561724209)(/upload/QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcODY2MjM5MDBfdjJcSW1hZ2VGaWxlc1wxNTk0MTAxODg5MzIxX0E5QUJFOUE2LTRERUYtNDM0Ni1CMjQ0LUIxQzVGRDg4MTY1NS5wbmc=.png)]
【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式。

ps: 如果前3个步骤报错,可以下来下面这样处理

样本图像文件格式必须为tif\tiff格式,否则在Merge样本文件的过程中会出现 Couldn’t Seek 的错误。
如果报错,使用下来方式
1、我们先用程序将图片转成tif\tiff格式
2、手动将第一步生成的图片,后缀改成tiff
打开jTessBoxEditor,Tools->Merge TIFF,将样本文件全部选上,并将合并文件保存为 was.font.exp0.tif

4、定义字符配置文件
在目标文件夹内生成一个名为font_properties的文本文件,内容为

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

5、字符矫正
打开jTessBoxEditor,BOX Editor -> Open,打开num.font.exp0.tif;矫正上的字符,记得有好多页噢!,记得点save保存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O2KCNUXY-1595561724210)(/upload/QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcODY2MjM5MDBfdjJcSW1hZ2VGaWxlc1wxNTk0MTAxMDQ3ODIwXzU1OUU0RkMyLTFGNjMtNGQyNy1BQUNCLTc5RjY3MTAxM0MyOS5wbmc=.png)]
6、新建was.bat,并且双击执行

rem 执行改批处理前先要目录下创建font_properties文件 
echo Run Tesseract for Training.. 
tesseract.exe was.font.exp0.tif was.font.exp0 nobatch box.train 
 
echo Compute the Character Set.. 
unicharset_extractor.exe was.font.exp0.box 
mftraining -F font_properties -U unicharset -O was.unicharset was.font.exp0.tr 


echo Clustering.. 
cntraining.exe was.font.exp0.tr 

echo Rename Files.. 
rename normproto was.normproto 
rename inttemp was.inttemp 
rename pffmtable was.pffmtable 
rename shapetable was.shapetable  

echo Create Tessdata.. 
combine_tessdata.exe was. 
echo. & pause

测试
tesseract test.png output_2 -l num

合并训练库

我们昨天天训练了一个字体库,发现不够精确,今天又训练一个,可以将昨天和今天的合并起来
参考 https://www.jianshu.com/p/ea06f02195af

合并训练库 (合并需要tif文件和box文件)

一、先生成相对应的 .tr 文件(如果你之前训练的.tr 有的话,可以忽略这步)
tesseract test.font.exp0.tif test.font.exp0 nobatch box.train
tesseract was.font.exp0.tif was.font.exp0 nobatch box.train

二、从所有文件中提取字符
unicharset_extractor was.font.exp0.box test.font.exp0.box

三、生成字体特征文件(was.font.exp0.box font是第二部分)
3.1
新建的font_properties文件,内容如下
font 0 0 0 0 0
font 0 0 0 0 0

3.2
mftraining -F font_properties -U unicharset was.font.exp0.tr test.font.exp0.tr

四、聚集所有.tr 文件
cntraining was.font.exp0.tr test.font.exp0.tr

五、重命名文件,把unicharset, inttemp, normproto, pfftable,shapetable 这几个文件加了前缀aws. (目的是为了后面的聚集合并)
rename normproto aws.normproto

rename inttemp aws.inttemp

rename pffmtable aws.pffmtable

rename shapetable aws.shapetable

rename unicharset aws.unicharset

六、合并所有文件 生成一个大的字库文件
combine_tessdata aws.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qIsOqRBI-1595561724210)(/upload/QzpcVXNlcnNcQWRtaW5pc3RyYXRvclxBcHBEYXRhXFJvYW1pbmdcRGluZ1RhbGtcODY2MjM5MDBfdjJcSW1hZ2VGaWxlc1wxNTk0MTAyMTg4MTg5XzAyQTFDNDIwLTlENEMtNDUwZi04MDE4LTJBMUFFRDM4MUJGRS5wbmc=.png)]

七、最后文件夹中就可以看到生成的.traineddata训练库
然后将aws.traineddata 拷贝到安装ocr的tessdata目录下
C:\Program Files (x86)\Tesseract-OCR\tessdata

测试
tesseract test1.jpg output_2 -l aws

原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL
原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL
原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL
原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL
原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL
原文地址有图 https://xujd.top/article/view.do?SUMnF0tjG1NJE14mRg7CvVdL

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值