[机器视觉] 使用python自动识别验证码

本文介绍如何利用机器视觉和Python识别验证码。通过图像预处理、特征提取、生成训练集和定义分类模型,实现高准确率的验证码识别。尽管简单的验证码可以被这种方法识别,但对于复杂验证码,需要更高级的视觉技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  • CAPTCHA全称Completely Automated Public Turing Test to Tell Computers and Humans Apart,即全自动区分人机的图灵测试。这也是验证码诞生的主要任务。但是随着近年来大数据运算和机器视觉的发展,用机器视觉识别图像已经变得非常容易,过去用于区分人机的验证码也开始变得不再安全。
  • 接下来就让我们从零开始,深入图像处理和算法构建,来看看使用机器视觉来识别过时的验证码( 如下所示 )究竟可以有多简单。




载入需要的程序包 & 设置全局变量

import requests
import time
from io import BytesIO
from PIL import Image
import os
import numpy as np

# 获取验证码的网址
CAPT_URL = "http://xxxxxxxxxxxx.cn/servlet/ImageServlet"

# 验证码的保存路径
CAPT_PATH = "capt/"
if not os.path.exists(CAPT_PATH):
    os.mkdir(CAPT_PATH)

# 将验证码转为灰度图时用到的"lookup table"
THRESHOLD = 165
LUT = [0]*THRESHOLD + [1]*(256 - THRESHOLD)


从网站获取验证码

  • capt_fetch()方法非常简单,我们直接从网站获取验证码,将其转换为Image对象,等待被训练和测试等环节调用。
def capt_fetch():
    """
    从网站获取验证码,将验证码转为Image对象

    :require requests: import requests
    :require time: import time
    :require BytesIO: from io import BytesIO
    :require Image: from PIL import Image

    :param:
    :return capt: 一个Image对象
    """
    # 从网站获取验证码
    capt_raw = requests.get(CAPT_URL)

    # 将二进制的验证码图片写入IO流
    f = BytesIO(capt_raw.content)

    # 将验证码转换为Image对象
    capt = Image.open(f)

    return capt


保存验证码到本地

  • 一个强大的机器学习模型,是离不开强大的训练集作支持的。这里我们也必须先有一个预先打好标签(预分类)
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值