神器!使用Python 轻松识别验证码(python自动化如何获取验证码)
off999 2024-10-23 12:51 33 浏览 0 评论
前言
在我们进行自动化测试的过程中,免不了要在登录时遇到验证码,很多时候我们都是只能找开发要万能验证码或者暂时关闭验证码这个功能,但是有时候我们必须要验证码是否能够正常生成,所以在这个时候,我们需要做的就是输入验证码,但是验证码这个东西是随机生成的,不是每一次都一样,所以我们还是需要识别然后输入,脚本是没有眼睛的,只能通过代码来进行识别,所以本文就来给大家介绍一下如何使用Python来轻松识别数字验证码。
安装Python库和软件环境
验证码识别需要用到一些Python库和软件环境,下面将介绍它们的安装步骤。
- 安装Tesseract OCR
它是一个开源的光学字符识别引擎,用于识别验证码中的文本内容,能够识别70多种语言的文本,并为开发者提供简单易用的API。可以通过以下链接下载和安装:https://github.com/tesseract-ocr/tesseract 。在Windows系统下可以下载exe文件进行安装。
注:Tesseract安装完成后需要将tesseract.exe文件路径加入系统的环境变量,否则无法在Python脚本中调用。
- 所需Python库
验证码识别需要使用的Python库包括:pillow(PIL)、pytesseract和opencv-python。pillow为Python自带的标准库,其它库可以使用pip命令自动安装:
pythonpip install pytesseract
pip install opencv-python
识别简单的数字验证码
- 准备验证码图片
首先,我们需要准备一些验证码图片。可以在网络上搜索验证码图片进行下载,或者使用Python的爬虫程序去爬取目标网站的验证码。这里我们先手动下载一个简单的数字验证码图片,保存为“test.jpg”。
- 加载验证码图片
我们可以使用Pillow库(Python Imaging Library)加载验证码图片。Pillow库可以读取和处理不同类别的图片格式,如jpg、png、bmp等等。代码如下:
pythonfrom PIL import Image
img = Image.open('test.jpg')
img.show()
- 识别验证码
使用pytesseract库,我们可以很容易地把图片中的数字识别出来。pytesseract库依赖于Tesseract OCR引擎,能够处理各种难度的验证码,如数字、字母、汉字、倾斜、变形等等。代码如下:
pythonimport pytesseract
text = pytesseract.image_to_string(Image.open('test.jpg'), lang='eng')
print(text)
这段代码的意思是用pytesseract库将图片中的字符串转换为字符。lang参数可以指定识别的语言类型,这里我们使用了eng,表示英文。如果验证码是汉字,设置为chi_sim即可。
识别数字字母混合的验证码
当验证码中既包含数字又包含字母时,需要对识别的方法进行修改,下面介绍一种简单的处理方法,即通过二值化和降噪处理来增加识别率。
二值化处理
二值化处理就是将图片中的所有像素转换为黑白两种颜色。对于验证码图片,我们可以将其转换为黑白灰度图像,便于后续的处理。代码如下:
pythonimport cv2
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('Image', threshold)
cv2.waitKey(0)
cv2.destroyAllWindows()
这段代码用OpenCV库将图片读取为灰度图像,并进行二值化处理。其中,127是阈值,值越小,黑色部分就越多,白色部分就越少。运行后可以得到二值化后的图片。
降噪处理
在二值化后,图片中仍有一些噪点和干扰线条。如果不处理这些噪声,将会影响后续的字符识别,因此需要进行降噪处理,将图片中的噪点和干扰线条消除。代码如下:
pythonimport cv2
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
blur = cv2.GaussianBlur(threshold,(5,5),0)
cv2.imshow('Image', blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
这段代码使用高斯滤波函数对图片进行平滑处理,消除噪声和干扰线条。其中(5,5)指定核的大小,值越大,平滑效果越明显。运行后可以得到处理后的图片。
识别验证码
对于数字和字母混合的验证码,我们需要对每个字符进行识别。可以采用字符分割的方法,将验证码图片分割成单个字符图片,再进行字符识别。代码如下:
pythonimport pytesseract
import cv2
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
retval, threshold = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
blur = cv2.GaussianBlur(threshold, (5,5), 0)
contours, hierarchy = cv2.findContours(blur, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
count = 0
for contour in contours:
(x,y,w,h) = cv2.boundingRect(contour)
if w > 10 and h > 10:
roi = blur[y:y+h, x:x+w]
cv2.imwrite(str(count)+'.jpg', roi)
text = pytesseract.image_to_string(roi, lang='eng')
print(text)
count += 1
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
这段代码先对图片进行二值化和降噪处理,然后使用findContours函数找到并分割出每个字符的边缘轮廓。再使用boundingRect函数得到每个字符的位置和大小,并使用image_to_string函数对每个字符进行字符识别。运行代码后,可以看到输出结果为分割出的每个字符及其识别结果。
总结
本文介绍了如何使用 Python 和相关库来识别数字验证码。通过这种方法,我们可以实现验证码的自动识别,用于自动化测试、爬虫程序或其他需要验证码处理的场景。在实际应用中,可以根据具体的需求对识别方法进行进一步优化和调整,以获得更好的识别效果。
相关推荐
- 键盘的win键在哪里(电脑键盘的win键在哪里)
-
win键就是电脑键盘上显示WINDOWS标志的按键。位于CTRL键与ALT键两个键之间,win键的具体位置一般电脑键盘上有左右两个。Windows键是一种特殊的键,通常位于键盘的左下角。它的图案是一个...
- ghost全盘备份步骤图(用ghost怎么进行全盘备份)
-
可以用手动备份到指定分区。一、用一键Ghost还原中的“中文向导”备份开始-程序-一键Ghost-选出“中文向导”,Ghost中文向导-1、备份文件默认是“第1硬盘第1分区”,如果不是,将鼠标指针移...
-
- 键盘的windows键是哪一个(键盘上windows键是哪个键)
-
windows键就是电脑键盘上ctrl键和alt键之间的按键,位于左下角。它带着微软的徽标,跟开始菜单一样的图标,它属于辅助按键,主要与其它按键组合使用,实现一些特定的功能,组合成多种快捷操作方式。这里上面所知的Win键其实就是键盘上的Wi...
-
2025-12-31 10:51 off999
- win10打开设置快捷键(win10打开设置快捷键是什么)
-
1、首先打开电脑,在任务栏的语言地方点击一下再点击语言首选项。2、然后在新的界面里点击选择左侧“高级设置”按钮。3、之后在新的界面里点击选择“更改语言栏热键”按钮。4、然后在新的界面里点击选择“更改热...
- flash插件下载手机版下载安装
-
华为手机的最新系统版本已经不再支持FlashPlayer,这是由于Adobe已于2020年底停止更新和支持FlashPlayer。因此,如果您使用最新的华为手机系统,可能无法安装和使用Flash...
- 官方应用商店下载(小米官方应用商店下载)
-
1.审核和验证:应用商店会对应用进行审核和验证,确保其质量和可靠性。开发者需要满足一定的要求才能在应用商店上架应用。而官网下载的应用没有经过此类审核和验证,因此用户需要自行评估其质量和可信度。2....
- 主题软件免费(主题软件免费推荐)
-
下载主题方法:一、打开手机找到APPStore应用软件,二、点击进去在下面找到有个搜索,点击它查找主题壁纸,三、弹出来很多主题壁纸,根据下载量和个人喜欢的应用主题选择下载相应的主题,四、下载成功后即...
- 一芯fc1178bc盘量产教程(一芯量产工具使用教程)
-
fc1178bc量产工具没有显示u盘拔下U盘,关闭量产工具,再插上U盘(先要确认卸载了安国的驱动,如果不能确认,运行LoadDriver.exe卸载),然后插上U盘,右键我的电脑---属性---硬件-...
- u盘内文件损坏怎么办(u盘内文件损坏怎么办解决)
-
以下是8种修复U盘文件损坏的方法:1.风险自担型:试图直接复制文件如果U盘的部分文件损坏,您可能可以使用此方法。请复制文件您能打开的所有文件,并尝试将它们粘贴到桌面或其他文件夹中。但是请...
- internet explorer怎么更新(22号天蝎座的运势)
-
1、打开IE浏览器。2、点击位于浏览器窗口的右上角的功能按钮。3、点击关于InternetExplorer。它位于下拉菜单的底部。4、勾选“自动安装新版本”复选框。它位于“关于Internet...
- snapseed(snapseed手机修图软件免费版)
-
Snapseed是一款非常流行的手机修图工具,下面是Snapseed工具最全教程:1.打开照片:打开Snapseed,点击左上角的“打开”按钮,选择需要修图的照片。2.自动增强:点击屏幕左下角的“...
- canon佳能打印机驱动下载(下载佳能打印机驱动程序)
-
打开开始菜单,选择运行。输入gpedit.msc,并确定。选择左边“windows设置”,右边鼠标左键双击“安全设置”。选择策略在选择安全选项再鼠标左键双击“设备:防止用户安装打印机驱动程序”。选择已...
- 爱思助手安卓版下载(爱思助手安卓版下载v1.21.03)
-
容易造成系统的崩溃在爱思助手中安装的软件都打不开或者发生闪退,很容易造成系统的崩溃需要重新刷机,所以一般不太推荐使用爱思助手。爱思助手上下载正版软件不需要AppleID,这是为了方便不会注册的用户,但...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
