验证码自动识别

在很多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。

转载于:https://www.cnblogs.com/tinghai8/p/9219724.html

web网站验证码自动识别相关推荐

  1. web网站验证码重要性和验证码注意事项

    一.前言 一直以来我对于验证码这个事情很不理解,直接登录挺好的,为何要添加个验证码,增加用户操作的冗余性,直到前两天,第三方安全扫描的公司给出我们现在的web网站的安全报告,我才意识到:验证码的本质属 ...

  2. WEB页面验证码自动识别并填充

    2019独角兽企业重金招聘Python工程师标准>>> 现在许多页面在登陆的时候都需要根据验证码图片输入验证码,你是否经常碰到类似的想法:我能否自动识别该验证码并自动填充到对应的验证 ...

  3. [ 浅谈web网站验证码生成方案之一 ]

    1.前言 web系统注册登录界面存在验证码验证信息已不再是新鲜事,现在的验证码生成策略有很多种,以往有单纯数字.单纯字母.字母数字组合.现在出现一些中文验证和图片验证. 要想了解中文验证和图片验证是如 ...

  4. Web 攻防之业务安全:验证码自动识别 测试.

    Web 攻防之业务安全:不安全验证码 测试 验证码安全 也可以叫<全自动区分计算机和人类的图灵测试>,是一种区分用户是计算机还是人的共全自动程序.可以防止:恶意破解密码.刷票.论坛灌水.可 ...

  5. WEB自动化(5)获取网站验证码即从验证码截图中获取图片中的字符串

    WEB自动化(1)环境安装及打开浏览器实例 WEB自动化(2)常用的元素定位方法之xpath详解 WEB自动化(3)PO设计模式原理与实现 WEB自动化(4)使用selenium将网站验证码截图保存为 ...

  6. WEB自动化(4)使用selenium将网站验证码截图保存为本地图片

    WEB自动化(1)环境安装及打开浏览器实例 WEB自动化(2)常用的元素定位方法之xpath详解 WEB自动化(3)PO设计模式原理与实现 WEB自动化(4)使用selenium将网站验证码截图保存为 ...

  7. Python基于TensorFlow深度学习卷积神经网络自动识别网站验证码设计

    开发环境: Pycharm + Python3.7 + Django2.2 + sqlite数据库 + TensorFlow深度学习框架 + selenium自动化测试 "基于深度网络的网站 ...

  8. Python自动打码,DdddOcr通用验证码自动识别库

    在Python爬虫中,或者使用POST提交的过程中,往往需要提交验证码来验证,除了人工打码,付费的api接口(打码接口),深度学习识别验证码,当然还有适合新人使用的OCR验证码识别库,简单的验证码是可 ...

  9. php验证码百度ocr识别,利用百度OCR实现验证码自动识别

    在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money.但对于仅仅爬取点数据而接入打码平台实属浪费.所以百度免费ocr正好可以 ...

最新文章

  1. Go基础知识学习(6) 接口
  2. matlab微分方程组边值,matlab求解常微分方程边值问题的方法
  3. python解释器可以使用什么命令_python解释器用什么写的
  4. J2EE的经常使用十三规范——java菜鸟成长记
  5. 音视频技术开发周刊 74期
  6. 总结libevent安装方法
  7. eclipse弃坑记第一篇之在idea上配置Tomcat环境并创建Javaweb项目的详细步骤原创
  8. DotNetBar 6.2
  9. spark DataSet与DataFrame的区别
  10. 记录贴,计算器改良,税收与补贴,一元三次方程解法,最大公约数最小公倍数
  11. 分区助手扩大c盘后自动修复_分区助手扩大c盘的详细操作步骤
  12. 智能RFID电动车防盗管理系统解决方案
  13. 企业实施PDM能解决这些问题
  14. 阿里云应用防火墙WAF部署和使用
  15. TCP缓冲区大小及限制
  16. Windows7双系统卸载Ubuntu
  17. Resin 3.0.14 和 IIS6 整合
  18. 老杨说运维 | 智能化告警在全面可观测性中的重要性
  19. 【备忘】PROFILE
  20. Android开发本地及网络Mp3音乐播放器(十四)网络音乐下载功能实现

热门文章

  1. 优化AWS使用成本系列之预留实例(RI)为您提供大幅折扣
  2. Kaptcha:验证码生成
  3. 7. Laravel5学习笔记:如何定义自己的视图组件
  4. [日推荐]『拉了吗』出门必备
  5. java创始人现在在哪里直播,三年败光120亿,他曾是某电商巨头创始人,如今却靠直播度日!...
  6. 数学建模:插值与拟合—插值问题的python求解
  7. 鼠标垫测试软件,延伸阅读:鼠标垫测试+配重系统
  8. 智能合约编写之Solidity的设计模式 | FISCO BCOS超话区块链专场(篇4)
  9. 如何使用Xshell连接阿里云服务器
  10. Windchill介绍