码迷,mamicode.com
首页 > Web开发 > 详细

web网站验证码自动识别

时间:2018-06-24 11:32:05      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:结果   登录   git   4.0   信息   text   界面   ORC   txt文本   

验证码自动识别

在很多WEB网站登录的时候,都需要输入验证码,Python提供了一些库(例如常用的OCR库)来识别和使用在线图片中的文字。

将图像翻译成文字一般被称为光学文字识别(Optical Character Recognition, OCR)。可以实现OCR的底层库并不多,目前很多库都是使用共同的几个底层 OCR 库,或者是在上面 进行定制。

1.1   ORC库概述

在读取和处理图像、图像相关的机器学习以及创建图像等任务中,Python 一直都是非常出色的语言。虽然有很多库可以进行图像处理,但在这里我们只重点介绍:Tesseract

1.2   Tesseract

Tesseract 是一个 OCR 库,目前由 Google 赞助(Google 也是一家以 OCR 和机器学习技术闻名于世的公司)。Tesseract 是目前公认最优秀、最精确的开源 OCR 系统。 除了极高的精确度,Tesseract 也具有很高的灵活性。它可以通过训练识别出任何字体,也可以识别出任何 Unicode 字符。

1.3   tesseract-ocr4.0安装

tesseract-ocr4.0安装步骤如下:

1.软件下载。

软件下载网址:https://github.com/tesseract-ocr/tesseract/wiki/4.0-with-LSTM#400-alpha-for-windows

 技术分享图片

选择4.0.0-alpha for Windows下面 Windows Installer made with MinGW-w64 from UB Mannheim,点击UB Mannheim 进入另一网页。

 技术分享图片

进入得网址为 https://github.com/UB-Mannheim/tesseract/wiki

 技术分享图片

点击tesseract-ocr-w64-setup-v4.0.0-beta.1.20180608.exe,下载4.0版本的软件。

备注:Window系统的版本不一样下载对应的版本。

 技术分享图片

 

2. 双击安装软件,安装过程按照下面的图片指示进行。

注意:选择安装语言包,包含英文(默认安装)、中文、数学公式等,可以根据需要自己下载。

 技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

技术分享图片

安装完后打开软件安装的目录。

 技术分享图片

备注:

如果不是做英文的图文识别,还需要下载其他语言的识别包https://github.com/tesseract-ocr/tesseract/wiki/Data-Files。

简体字识别包:https://raw.githubusercontent.com/tesseract-ocr/tessdata/4.00/chi_sim.traineddata

1.4   tesseract-ocr 的环境变量配置

安装完成之后,只能在软件所在的目录中才能够使用该软件,为了能将该软件在cmd下任意目录中调用,需要把 C:\Tesseract-OCR\tessdata 配置到系统环境变量中。

我的计算机->右键属性打开界面->点击高级系统设置->在打开的系统属性界面,点击"环境变量"->在环境变量界面选择"系统变量"中选中path,然后点下面的编辑,打开编辑环境变量界面,把 C:\Tesseract-OCR 添加到变量中,点"确定"。

 技术分享图片

配置完成,打开命令终端,输入:tesseract -v,可以看到版本信息。

 技术分享图片

如果出现报错,估计是环境变量没配置好。

到这里,我们就算安装完成了,但是,我们的系统还是无法识别中文的,我们要去下载简体汉字、繁体汉字语言包(上面提供了下载地址),下载好之后放到安装目录的tessconfigs目录下即可。

注意:因为没有配置全局变量,无法跨盘执行数据转换,这里我们在环境变量那增加一个配置信息。

在系统变量下面点击“新建”,变量名TESSDATA_PREFIX,变量值 C:\Tesseract-OCR\tessdata,然后点击确定,之后界面依次点击确定,完成设置。

 技术分享图片

1.5   tesseract-ocr 的使用

tesseract-ocr没有窗口界面,只能通过命令调用,调用需要 cmd 或 powershell。

Cmd 打开可以通过,开始->Windows系统->命令提示符或者按快捷键 win+r 输入cmd 后回车调用。

1.先制作2张图片。T_jpg1 和 T_png1。

技术分享图片

 

2.在cmd命令行里面输入:

格式: tesseract 图片名称 生成的结果文件的名称  字库

例子:

tesseract C:\image\T_jpg1.jpg C:\image\T_jpg.txt -l chi_sim

然后回车。

【T_jpg1】是 C:\image目录下的T_jpg1图片。

【T_jpg.txt】是指定结果输出到C:\image\T_jpg.txt文本文件中。

-l是指定使用的包。

【chi_sim】是中文识别包。

技术分享图片

回车后,稍等运行结果,运行完成后,在目录C:\image中看到T_jpg.txt文件,打开如图。

 技术分享图片

1.6   安装pytesseract

如果需要在Python上识别图片,需要安装Python版本的pytesseract库,安装pytesseract库之前,需要先 Pillow 库,使用命令:pip install Pillow。

 技术分享图片

接着再安装 pip install pytesseract,安装成功。

 技术分享图片

如果不安装Pillow库,就会报如下错误。

 技术分享图片

1.7   处理规范文字案例

新建一个test.png图片,保存在当前程序目录下。

 技术分享图片

例子:

import pytesseract

from PIL import Image

#如果不修改pytesseract.py文件,可以在程序中指定tesseract_cmd的运行文件

#tesseract_cmd = ‘C:/Tesseract-OCR/tesseract.exe‘

image = Image.open(‘test.png‘)

text = pytesseract.image_to_string(image)

print(text)

报错:

 技术分享图片

需要修改 C:\Python35\Lib\site-packages\pytesseract下的 pytesseract.py 文件。

 技术分享图片

修改pytesseract.py文件里的tesseract_cmd 值。

 技术分享图片

tesseract_cmd = ‘C:\Tesseract-OCR\tesseract.exe‘

 技术分享图片

修改完之后,运行程序,如下:

 技术分享图片

 

1.8   识别简易的登录验证码

大多数网站生成的验证码图片都具有以下属性:

1.它们是服务器端的程序动态生成的图片。验证码图片的 src 属性可能和普通图片不太一 样,比如 <img src="WebForm.aspx?id=8AP85CQKE9TJ">,但是可以和其他图片一样进行下载和处理。

2.图片的答案存储在服务器端的数据库里。

3.很多验证码都有时间限制,如果你太长时间没解决就会失效。

4.常用的处理方法就是,首先把验证码图片下载到硬盘里,清理干净,然后用 Tesseract 处理图片,最后返回符合网站要求的识别结果。

例子:登录验证码图片

 技术分享图片

程序:

import pytesseract

from PIL import Image

#如果不修改pytesseract.py文件,可以在程序中指定tesseract_cmd的运行文件

#tesseract_cmd = ‘C:/Tesseract-OCR/tesseract.exe‘

image = Image.open(‘yzm1.png‘)

text = pytesseract.image_to_string(image)

print(text)

 

运行结果:

 技术分享图片

通过例子,可以看出,识别是有误差的,这就需要机器的自我学习,需要我们训练Tesseract。

 

 

web网站验证码自动识别

标签:结果   登录   git   4.0   信息   text   界面   ORC   txt文本   

原文地址:https://www.cnblogs.com/tinghai8/p/9219724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!