爬虫从入门到精通(15) | 使用Python-OCR识别库对图形验证码进行识别

本文介绍tesseract和muggle_ocr两种验证码识别方法。tesseract适用于文本识别,需下载安装并配置环境变量;muggle_ocr体积小,模型轻,支持简单英文字母验证码和普通印刷文本识别,通过pip安装。此外,还提供了其他验证码识别库的参考。

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

在这里插入图片描述

一、tesseract破解验证码

1.下载安装tesseract

①下载地址

下载地址:https://digi.bib.uni-mannheim.de/tesseract/
在这里插入图片描述
选择合适的版本安装即可(其中文件名中带有dev的为开发版本,不带dev的为稳定版本,可以选择下载不带dev的版本,例如可以选择下载tesseract-ocr-setup-3.05.02.exe)

②一路next安装即可

在这里插入图片描述
我安装在d盘

③配置环境变量

系统变量
在这里插入图片描述
path变量
在这里插入图片描述

④验证是否安装成功

在这里插入图片描述

2.python安装tesseract模块及其配置

①下载安装

pip install pytesseract

在这里插入图片描述

②进入pycharm,按两次shift搜索tesseract修改源码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.demo测试

在这里插入图片描述

import pytesseract
from PIL import Image

image = Image.open('CheckCode.png')
# 把一个彩色图变成灰度图
image = image.convert('L')
tessdata_dir_config = '--tessdata-dir "D:\\Tesseract-OCR\\tessdata"'

# 去除干扰线
threshold = 128
table = []
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)
image = image.point(table,'1')
image_str = pytesseract.image_to_string(image,config=tessdata_dir_config)
print(image_str)

二、muggle_ocr破解和识别验证码

1.介绍

在2020不平凡的一年,6月1日,在pypi仓库中偷偷潜入一位新同学,他就是MuggleOCR,他有多厉害呢?
作为一个本地识别的模块,他的体积居然小于10MB,模型分别有2个。
OCR模型仅为4MB,验证码模型仅为2MB。

在这里插入图片描述

2.安装

pip install muggle_ocr -i https://pypi.tuna.tsinghua.edu.cn/simple

3.demo测试

测试图片
在这里插入图片描述
demo.py

# 导入包
import muggle_ocr


def return_ocr_by_muggle(image_path, mode=1):
    """
        :param  image_path  待测试的文件名称 最好绝对路径
        :param  mode = 1 默认  即 ModelType.Captcha 表示识别4-6位简单英输验证码
                其他情况  即 ModelType.OCR 表示识别普通印刷文本

        官方网站: https://pypi.org/project/muggle-ocr/
        :return: 返回这个验证码的识别结果 如果错误 可以多次调用
    """
    # 确定识别物品
    if mode == 1:
        sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
    else:
        sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)

    with open(image_path, 'rb') as fr:
        captcha_bytes = fr.read()
        result = sdk.predict(image_bytes=captcha_bytes)
        return result.strip()


if __name__ == '__main__':
    image_path = 'timg.jpg'
    result = return_ocr_by_muggle(image_path)
    print(result)

在这里插入图片描述

三、其他识别验证码的常用库

参考这篇文章:https://blog.youkuaiyun.com/qq_38017966/article/details/118724459

四、高难度图片验证码

针对于难度过高的验证码识别,我们推荐使用打码网站的付费接口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张烫麻辣亮。

谢谢老板,祝你生8个儿子!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值