利用Python轻松搞定数字英文验证码,搞定Python爬虫反爬

Tesseract-OCR图片识别为文字 1 场景 识别图片中的文字(识别图片中的电话号码、姓名等) 2 方案 使用Tesseract OCR软件来识别图片内容 官网:https://github.com/tesseract-ocr/tesseract 来自官方解释: 这个包包含一个OCR引擎- libtesseract和一个命令行程序- tesseract Tesseract支持各种输出格式:纯文本、hOCR (HTML)、PDF、不可见的纯文本PDF、TSV。主分支还实验性地支持ALTO (XML)输出。 3 windows下安装 3.1 阅读详情

Chapter15 | 验证码识别

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤
QQ群:961562169

验证码(CAPTCHA)的全程为全自动区分计算机和人类的公开图灵测试
从全程可以看出:验证码用于测试用户是否为真实人类
以识别知乎验证码为例,介绍简单的验证码处理

一、模拟登录知乎

  • 如果访问过于频繁,服务器要求输入验证码
  • 如果短时间内在知乎上频繁的登录退出,知乎就会要求输入验证码

对于比较简单的字符型验证码,可以尝试用pytesseract库识别这些验证码
pytesseract是一款用于光学字符识别的Python第三方库,可以从图片中识别出其中嵌入的文字
1
我们可以看到有些验证码是识别不出来的。

  • 随着计算能力和机器学习的发展,涌现出很多新型验证码,使得验证码处理越来越难。如下图:
    2
  • 验证码的识别是一个专门的研究领域,对于普通用户来说,要采用合适的抓取策略,尽量避免验证码的出现。

二、光学字符识别

光学字符识别(Optical Character Recognition,OCR) 用于从图像中抽取文本
我们使用开源的Tesseract OCR引擎,该引擎最初由惠普公司开发,目前由Google主导
在验证码识别中,使用Python的封装版本pytesseract

1、pytesseract

官网:https://pypi.python.org/pypi/pytesseract
函数:image_to_string()
用法:print(pytesseract.image_to_string(Image.open(“test.png”)))

  • pytesseract是一个基于Google‘s Tesseract-OCR的独立封装包
  • pytesseract功能是识别图片文件中文字,并作为返回参数返回识别结果
  • pytesseract默认支持tiff、bmp格式图片,只有在安装PIL之后,才能支持jpeg、gif、png等其他图片格式

PIL提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。
利用PIL中函数,我们可以从大多数图像格式的文件中读取数据,然后写入最常见的图像格式文件中
PIL中最重要的模块为Image

我们要先安装PIL:pip install Pillow-7.1.1-cp36-cp36m-win_amd64.whl
PIL的open()函数用于创建PIL图像对象
下面开始进行测试:

from PIL import Image
from PIL.ImageShow import show
# 读取图片
img = Image.open(".\\3.png")
# 显示图片
show(img)

下图为测试运行的图片

3

  • 输出图片格式 img.format
  • 输出图片尺寸 img.size
  • 输出图片类型 img.mode
# 输出图片的格式,尺寸以及图像类型
print(img.format,img.size,img.mode)

4

  • 生成缩略图img.thumbnail()
# 生成缩略图
img.thumbnail((128,128))
# 显示图片
show(img)

要旋转一张图片,可以使用逆时针方式表示旋转角度,然后调用rotate()函数
当旋转角度为90°,180°,270°的时候可以用img.transpose(Image.ROTATE_90)
其他角度用rotate()

# 逆时针旋转45°
rorate1 = img.rotate(45)
show(rorate1)
# 逆时针旋转90°
rorate1 = img.transpose(Image.ROTATE_90)
show(rorate2)

左右对换 img.transpose(Image.FLIP_LEFT_RIGHT)
上下翻转 img.transpose(Image.FLIP_TOP_BOTTOM)

# 左右对换
rorate3 =  img.transpose(Image.FLIP_LEFT_RIGHT)
show(rorate3)
# 上下翻转
rorate4 = img.transpose(Image.FLIP_TOP_BOTTOM)
show(rorate4)

图像的颜色转换可以使用convert()方法来实现。要读取一幅图像,并将其转换成灰色图像,只需要加上convert('L')

# 图像转换为灰度
grey = img.convert('L')
show(grey)

5
6

Python规定左上角为(0,0)的坐标点,box由一个4元组(左,上,右,下)定义,表示为坐标为:(left,upper,right,lower),最后的两个数字必须比前面两个要大

# 裁剪如片 box为裁剪图片的区域范围
box = (30,30,100,100)
region = img.crop(box)
show(region)

7

2、验证码的识别

from PIL import Image
from PIL.ImageShow import show
import pytesseract
# 读取图片
img = Image.open(".\\2.png")
# 显示图片
show(img)
print(pytesseract.image_to_string(img))

8

3、图像处理

在用pytesseract进行验证码识别之前,我们首先需要对验证码图片进行预处理,尽量取出噪声,而只保留有验证码信息的像素
pytesseract基本上无法识别那些没有经过预处理的验证码图片
下面为一些基本的验证码预处理方法:

  • 通常图像处理的流程如下图,验证码的完整预处理为步骤二
    9

在实际中,我们通常的预处理步骤为:
1、灰度化
2、二值化
3、去噪

  • 图像处理一般指数字图像处理。数字图像是指工业相机、摄像机、扫描仪等设备经过摄像得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值
  • 在计算机中,按照颜色和灰度的多少可以将图像分为二位图像,灰度图像、索引图像和真彩色RGB图像四种基本类型。大多数图像处理软件和python库都支持这四种类型的图像

3.1、二值图像

一幅二值图像的二维矩阵仅有0,1两个值构成。
“0”代表黑色,“1”代表白色
由于每一个像素(矩阵中每一个元素)取值仅有0,1两种可能,所以计算机中二值图像的数据类型通常为1个二进制位

3.2、灰度图像

灰度图像矩阵元素的取值范围通常为[0,255]。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像
0表示纯黑色,255表示纯白色,中间的数字从小到大表示由黑到白的过渡色
二值图像可以看成是灰度图像的一个特例

3.3、索引图像

索引图像的文件结构比较复杂,出去存放图像的二维矩阵外,还包括一个称之为颜色索引矩阵的MAP的二维数组
MAP的大小由存放图像的矩阵元素值域决定,如矩阵元素值域位[0,255],则MAP矩阵的大小为256x3,用MAP=[RGB]表示
MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值

3.4、处理实例

import time
import requests
from PIL import Image
from PIL.ImageShow import show
import pytesseract
# 读取图片
img = Image.open(".\\2.png")
show(img)
gray = img.convert('L')
show(gray)
for i in range(1,100,9):
    bw = gray.point(lambda x:0 if x<i else 255)
    show(bw)
    time.sleep(1)

10

识别验证码并显示

import time
import requests
from PIL import Image
from PIL.ImageShow import show
import pytesseract
# 读取图片
img = Image.open(".\\2.png")
# show(img)
gray = img.convert('L')
# show(gray)
for i in range(1,100,9):
    bw = gray.point(lambda x:0 if x<i else 255)
    # show(bw)
    # time.sleep(1)
print("验证码为:" + pytesseract.image_to_string(img))
print("验证码为:" + pytesseract.image_to_string(gray))
print("验证码为:"+ pytesseract.image_to_string(bw))

11

Tesseract-OCR:安装、训练自己数据库、Python调用字符数据(保姆级教程) 1、安装程序 2、配置系统环境 3、 打开CMD命令提示符(管理员) 输入:tesseract -v 显示版本号,安装成功 4、若使用python操作 输入:pip installpytesseract 下载pytesseract模块 阅读详情

相关推荐

Python爬虫开发实战,模拟登录与验证码处理

在Python爬虫开发实战中,模拟登录和验证码处理是两个重要的环节。通过模拟登录,我们可以获取需要用户身份认证才能访问的数据;通过处理验证码,我们可以绕过网站的反爬虫机制。在实际开发中,我们需要根据目标网站的具体情况选择合适的模拟登录方式和验证码处理方式,并结合实际情况不断优化和调整爬虫策略。

一个好知识的传播者 1448

pytesseract进行视频图像数字识别

这里包含两个部分,修改变量path的值->添加tesseract.exe所在的文件夹,添加一个名为TESSDATA_PREFIX的系统变量->变量值为tesseract.exe目录下tessdata文件夹的位置。如果安装成功,则会输出如下图所示的信息。测试是否安装成功,在命令行输入tesseract --help查看是否会返回一些提示信息。anaconda中已经集成了常用的库,可能还需要额外安装下列库。tesseract安装完成后,本步骤比较容易,pip安装即可。2)安装完成后配置环境变量,具体可参照。

weixin_47236464的博客 632

pytesseract-0.2.2.tar.gz

用于图片识别技术的实现,通过调用该库的内容可以实现相关功能。

快速入门网络爬虫系列 Chapter15 | 验证码识别

Chapter17 | 验证码识别

不温卜火 7191

[仿真实战]FDTD Solutions 8.0:从零搭建薄膜光谱分析模型

本文提供了一份基于FDTD Solutions 8.0的薄膜光谱分析模型从零搭建实战指南。通过详细步骤,手把手教你创建玻璃基底与硅薄膜的几何结构、设置仿真区域与边界条件、配置光源与监视器,并最终计算反射率与透射率光谱。内容涵盖参数扫描与优化,旨在帮助用户快速掌握FDTD仿真在纳米光子学与薄膜光学设计中的核心应用。

defi6farmer的博客 499

Android13配置selinux让system应用可读sys,proc,SN号

Android13预置的system应用,需要读/sys, /proc目录,读(SN)serial number号, 需要修改selinux配置,否则会报avc错.其修改方法会比Android11复杂一些.。

zmlovelx(帅得不敢出门 程序员群31843264) 2654

pytesseract,一个超强的 Python 库!

Python pytesseract 库是 Tesseract OCR 引擎的 Python 封装,它能够实现图像中文字的识别。Tesseract OCR 是一个开源的光学字符识别引擎,由 Google 开发并维护。通过 pytesseract 库,开发者可以轻松地将图像中的文字转换为文本,从而实现文字识别的自动化处理。Python pytesseract 库是一个强大的工具,可以帮助开发者实现图像中文字的自动识别和提取。

涛哥聊Python 1308

手把手教你用smarteye搭建免费GB28181监控平台(含海康设备接入避坑指南)

本文提供了一份基于SmartEye搭建免费GB28181视频监控平台的实战指南。详细介绍了从服务器部署、GB28181协议核心配置,到海康威视等主流设备接入的完整流程,并重点分享了设备注册失败、无法预览等常见问题的深度排错方法,旨在帮助中小企业及开发者低成本实现多品牌监控设备的统一管理。

pz89012345的博客 326

离线OCR验证码识别终极指南:ddddocr完全教程

还在为验证码识别而烦恼吗?每次遇到那些扭曲的文字、复杂的滑块验证码,是不是让你头疼不已?今天我要为你介绍一款革命性的工具——ddddocr(带带弟弟OCR),它能让你在本地轻松搞定各种验证码识别问题!😊 ## 为什么你需要本地OCR解决方案? 想象一下这些场景: - 自动化测试时被验证码卡住 - 数据采集项目因为验证码中断 - 担心使用在线服务泄露隐私数据 - 网络延迟导致识别失败影响效率

gitblog_00323的博客 693

docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp

docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp

m0_55333789的博客 1557

【ComfyUI】Wan2.2 Rapid-AIO-Mega 二次元文生视频

通过 SD3 采样体系与 Wan 系列专用的 **WanVaceToVideo** 视频生成节点,整个流程从模型加载、文案编码、潜空间采样到视频合成一气呵成,能够稳定输出画面精致、角色统一、光影氛围鲜明的动态画面。这套工作流重点整合了视频长度、帧率、分辨率等核心参数控制,并结合 KSampler 的细节生成能力,旨在让用户能在 ComfyUI 中快速生成高质量的二次元叙事视频。

Mr数据杨 1980

基于ddddocr与Playwright的验证码自动化破解实战指南

验证码是网站用于区分人类用户与自动化程序的核心安全机制,其原理是通过图像、行为交互等方式增加机器识别的难度。在自动化测试、数据采集等工程实践中,高效、准确地处理验证码是提升效率的关键技术。通过结合深度学习OCR与现代化浏览器自动化工具,可以构建稳定可靠的解决方案。ddddocr作为专为验证码优化的开源OCR库,凭借其开箱即用的高识别率,解决了图形与滑块验证码的“认知”难题;而Playwright作为新一代浏览器自动化框架,则以其卓越的稳定性和简洁的API,精准解决了模拟人类操作的“行为”问题。这套技术组合为

weixin_30540691的博客 572

AD18软件——捕捉栅格、电气栅格、可见栅格的意义及设置

本文介绍了PCB设计中的三种栅格功能:可视栅格用于辅助定位(快捷键Shift+Ctrl+G),捕捉栅格控制光标移动间距(快捷键G),电气栅格实现元件自动吸附(快捷键Shift+E)。同时提供了在Altium Designer中快速查找相同网络标号的两种实用方法:Alt+鼠标单击或双击网络。这些功能可显著提高PCB设计效率和准确性。

qq_37999850的博客 645

前端工程师实战验证码识别:基于PyTorch与CNN的机器学习入门指南

图像分类是计算机视觉的基础任务,其核心原理是通过卷积神经网络(CNN)等模型自动学习图像中的层次化特征,实现精准识别。这项技术具有极高的工程价值,广泛应用于安防、医疗影像、自动驾驶等领域。在Web开发场景中,验证码识别是典型的图像分类应用,传统上依赖后端或第三方API。本文以PyTorch框架和CNN模型为工具,详细解析从前端视角切入,完成数据预处理、模型训练到评估部署的完整机器学习流水线,为开发者拓展技能边界、实践AI工程化提供具体路径。

weixin_34413802的博客 369

LVGL(lv_canvas)

这篇文章介绍了LVGL图形库中的lv_canvas组件,主要内容包括: lv_canvas是一个绘图缓冲区对象,提供丰富的绘图API,可以理解为LVGL的"离屏画布"。 基本使用流程:创建缓冲区->创建canvas对象->设置缓存和尺寸->进行绘图操作。 详细列举了常用的绘图函数,如绘制线条、矩形、文字、图片等。 提供了示例代码展示如何创建画布并绘制一条红色线段。 介绍了canvas的典型应用场景,如动态波形绘制、自定义控件底图等。 对比了canvas与普通img的区别

m0_49476241的博客 1028

Matlab之App Designer 如何进行三维图形绘制教程

基于Matlab中的App Designer设计可视化界面并进行数据导入及3D绘图,可以直观的在可视化界面上展示分析结果,方便用户进行图形的操作。本文采用案例讲解的方式,详细介绍了如何采用Matlab App Designer建立数据3D绘图的GUI可视化界面的方法和详细的过程步骤,并介绍了导入数据进行计算时需要注意的相关事项,同时提供了详细的代码,以便读者进行学习和操作。

m0_59012156的博客 2066

并行分布式框架:Celery、rq、funboost

Celery是一个异步任务的调度工具,也可以叫做 "分布式任务队列(Distributed Task Queue)"。

freeking101的博客 5万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python爬虫高级技术之验证码篇开源免费(验证码识别之pytesseract(windows))

今天要做的是验证码识别中最简单的一种办法,采用pytesseract解决,它属于Python当中比较简单的OCR识别库 1.使用pytesseract之前,你需要通过pip 安装一下对应的模块 ,需要两个 pytesseract库还有图像处理的pillow库了 pip install pytesseract pip install pillow 2.github官网下载pytesseract安装包安装到电脑中,https://github.com/tesseract-ocr/tesseract/wi

yunfeng 1040

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

pyecharts的新旧版本用法区别

简介 Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。 特性 简洁的 API 设计,使用如丝滑般流畅,支持链式调用 囊括了 30+ 种常见图表,应有尽有 支持主流 Notebook 环境,Jupyter Notebook ...

梧桐凰的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

关于pyecharts的官方网站/官网的使用方法

以上操作一共打开4个网页,为什么这么做呢?因为个人经验,在学习和工作使用pyecharts时,这样的4个网页,可以同时查找不同的需求内容。可以使用不常用的浏览器打开,这样不影响使用主浏览器。有时间慢慢介绍画图方法案例。因为在网页或者B站上的视频看到的多数都是简单的案例讲解,但是一旦应用到工作中,发现真的没有大的作用,或者说能够达到辅助完成工作的左右。

weixin_48478939的博客 6696

10、python图像识别库tesseract下载及配置

''' 1、官网下载:https://github.com/tesseract-ocr/tessdata/tree/3.04.00,网上有相应的exe文件下载安装,安装完成后把安装目录加到环境变量中,需要重启电脑 。 可下载相应的语言训练包放到tessdata目录下chi_sim开头的是识别中文的训练包。eng开头的是识别英文及数字的包 2、cmd命令安装pytess...

weixin_30663391的博客 391

[AI测试]python文字图像识别tesseract

tesseract-OCR是一个开源的OCR引擎,能识别100多种语言,专门用于对图片文字进行识别,并获取文本。但是它的缺点是对手写的识别能力比较差。 Tesseract支持各种图像格式,包括PNG,JPEG和TIFF。

伤心的辣条 1810

Tesseract-OCR5.0软件安装和语言包安装(Windows系统)

原文链接:http://www.juzicode.com/image-tesseract-ocr5-install-on-windows Tesseract是一款优秀的开源OCR软件,目前由Google维护改进,已发展到5.0版本,从4.0版本起增加了基于LSTM神经网络的识别引擎。今天聊聊怎么安装Tesseract命令行软件和语言包,正确配置Tesseract是制作自定义字体和使用其Python接口pytesseract的基础。 1、下载软件安装包 首先下载安装包,进入tesseract的gith

桔子code 的博客 4万+

python ocr字符识别---pytesseract

使用python api的pytesseract,ocr字符识别包

qq_46381513的博客 395

【AI测试】python文字图像识别tesseract

OCR,即Optical Character Recognition,光学字符识别,是指通过扫描字符,然后通过其形状将其翻译成电子文本的过程。对于图形验证码来说,它们都是一些不规则的字符,这些字符确实是由字符稍加扭曲变换得到的内容。

qq_46158060的博客 742

Tesseract-ocr

Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包括中文)。 Tesseract最初由HP公司开发,后来由Google维护。地址为 https://github.com/tesseract-ocr/ 使用默认的语言库识别

梦想专栏 3131
上一篇: Python爬虫:手把手教你采集登陆后才能看到数据!
下一篇: 利用Python实现录音播放并翻译,真正的实时进行翻译
Python_sn
博客等级 码龄6年 324粉丝 290原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值