Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

验证码处理之后就需要对处理的验证码进行识别训练,这里用Tesseract-ocr工具进行识别,用jTessBoxeditor进行训练生成模板。

一,对图片进行处理

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 

 

 利用上一篇代码对图片进行降噪处理,得到较为清晰地图片。Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 

 

这里需要你在需要登入的网站中提取大量的验证码图片,在获取图片时,查看网站的登入框是否在iframe标签中,已经图片是否有需要点击输入框才会出现,若是如此,可以用selenium中driver来跳转iframe标签,用点击事件来显示验证码,然后再获取src属性进行下载。

 

二,生成tif文件

 

在获取一定数量验证码后(储存在images中),打开jTessBoxeditor,Tools>Merge TIFF

 

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

选择之前保存图片的文件,shift将文件全选,注意文件显示的格式

 

 

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 

之后选择生成fift路径以及设置名称此处名称要设置为这样的格式[lang].[fontname].exp[num].tif

其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义。

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 三,生成box文件

 这样遍将多个jpg文件合成一个tif文件(可能显示的是一个验证码),然后我们需要利用tif文件来生成box文件。

再打开jTessBoxEditor(如果之前有其他好点的模板就选择其他的,这样自动识别的会多一点,省之后的人力)。Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 这一步之后就会在 tif 文件目录下生成一个box文件,在jTessBoxEditor中打开(如图 ↓ )

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

四,调整位置

如果模板较好的话会出现这样的文件(也许位置可能没有识别的这么准,那个就需要人工调节,记得保存,下面可以翻页)

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 

 也有可能是这样

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 

 如果是这样的话,你需要用文本方式打开box文件(六列分别对应,值,位置*4,页码值-1),我们需要创建的1~7页的那四行,随便找四行复制一下,然后改一下页码,没有框的几个验证码有了,然后再调整位置。(注意最后的一列为  页码数-1 )

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 

 在调整完所有验证码后,在tif文件目录下建立一个新建名为下xxx.font_properties的文本文件(xxx与自定义语言名称相同)内容为 font 0 0 0 0 0
之后再去txt后缀

五,训练

这样 tif,box,font_properties文件都有了,就可以生成模板了

Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)

 

 训练完之后就在tif文件下生成了tessdata文件夹,里面便是训练完成模板mob.traineddata,将模板移动到Tesseract—ocr>tessdata目录下,这样便可以用Tesseract-ocr识别验证码了

 

查阅过的博客:

  《Python Tesseract识别验证码》:https://blog.csdn.net/u011457798/article/details/84063963

  《使用Tesseract破解验证码并训练字库的方法》:https://blog.csdn.net/makesibushuohua/article/details/52058310

上一篇:交换机如何实现单向访问控制


下一篇:论文记载: Deep Reinforcement Learning for Traffic LightControl in Vehicular Networks