破解验证码(1) 数字英文验证码

前言

做爬虫时,难免会遇到需要通过验证码才能访问网址进行爬取内容,所以需要额外掌握破解验证码的技巧才行。
本文将讲解一个简单的验证码示例来进行演示(由数字或英文组成的验证码

安装环境

  • pip install Pillow
  • pip install tesserocr
  • 如果用 pip install tesserocr 安装 tesserocr模块失败出现报错,那么换作安装该模块对应的 “whl文件” ,下载地址:https://github.com/simonflueckiger/tesserocr-windows_build/releases (根据tesseract-ocr(客户端) 的版本下载对应的文件)
  • 安装命令如下:pip install xxx.whl (后面跟上所下载的whl文件路径)

修改环境变量

安装完 tesseract-ocr(客户端) 后,到计算机环境变量中添加该软件所在的文件夹,例如:
① “ F:\Tesseract-OCR ” 为该软件的所在文件夹位置
在这里插入图片描述
②增加一个 TESSDATA_PREFIX 变量名,变量值还是刚刚的安装路径 “F:\Tesseract-OCR\tessdata” 这是将语言字库文件夹添加到变量中
在这里插入图片描述

实例

解析如下图的验证码:
在这里插入图片描述
步骤:
》另存图片
》借助图片处理工具PIL模块,进行图片处理(灰度图片)
》设置阈值,默认阈值为127(根据情况而改)
》借助图片处理工具PIL模块,进行图片处理(二值化处理)
》再用tesserocr模块进行解析

代码如下:

from PIL import Image
import tesserocr

image = Image.open("1.png")
image = image.convert("L")      # 转化为灰度图片
threshold = 130     # 设置阈值

my = []
for i in range(256):
    if i < threshold:
        my.append(0)
    else:
        my.append(1)

image = image.point(my, "1")    # 二值化处理
# image.show()  #可以打印出图片,供预览
result = tesserocr.image_to_text(image)
print(result)

解析:
》使用灰度图片,设置阈值,进行二值化处理,最终显示的图片效果如下:
在这里插入图片描述
定义:图像的二值化,就是将图像上的像素点的灰度值设置为 0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果 [用0和1表示,0为白,1为黑]

一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群 和 小于T的像素群。这是研究灰度变换的最特殊的方法,称为图像的二值化(Binarization)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值