python识别登录验证码图片中字符

news2024/9/27 17:35:01

应用场景:在测试接口时,需要先自动执行登录接口,登录接口需要输入图片中的字符验证码。

 实现的步骤主要有以下几步:

一、执行/captcha接口,从接口响应中提取图形验证码的base64编码值;

 二、去掉base64编码值中的格式部分,data:image\/png;base64,截取到图片的编码值;

三、对的base64编码转成验证图片;

四、利用ddddocr识别验证码上的字符;

实现的代码如下:

import base64
import ddddocr
import requests
from PIL import Image

def get_code():
    """识别出登录接口中图像验证码上的字符"""

    # 请求接口,解析响应中的base64编码数据
    url = "https://xxxxxxx/api/captcha"
    res = requests.request("post", url).json()
    res_data = res['data']['url']
    # key = res_data['key']    # 解析响应中的key
    base64_data = res_data['img']    # 解析验证码的base64编码数据

    # 对的base64编码转换成图片
    data = base64_data.split(',')[1]  # 去掉编码数据中的data:image\/png;base64
    # print(data)
    img_data = base64.b64decode(data)   # 解码
    with open('./img.png', 'wb') as png:  # 打开图片
        png.write(img_data)     # 保存图片

    # 利用ddddocr识别验证码图片上的字符
    ocr = ddddocr.DdddOcr()  # 实例化对象
    with open('./img.png', 'rb') as f:
        img_bytes = f.read()  # 读取图片
    code = ocr.classification(img_data)  # 识别图片上的字符
    print('验证码: ', code)

if __name__ == '__main__':
    get_code()

遇到的问题:

1、 报错: AttributeError: module 'PIL.Image' has no attribute 'ANTIALIAS' 

解决方法:

# 修改ddddocr的_init_.py文件,将其中的ANTIALIAS替换为LANCZOS:
# image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.ANTIALIAS).convert('L')
image = image.resize((int(image.size[0] * (64 / image.size[1])), 64), Image.LANCZOS).convert('L')

2、代码执行后报:"欢迎使用ddddocr,本项目专注带动行业内卷,个人博客:wenanzhe.com......"

解决方法:

# 修改ddddocr的_init_.py文件,将show_ad修改成False:
class DdddOcr(object):
    def __init__(self, ocr: bool = True, det: bool = False, old: bool = False, beta: bool = False, use_gpu: bool = False,
                 device_id: int = 0, show_ad=False, import_onnx_path: str = "", charsets_path: str = ""):
        if show_ad:
            print("欢迎使用ddddocr,本项目专注带动行业内卷,个人博客:wenanzhe.com")
            print("训练数据支持来源于:http://146.56.204.113:19199/preview")
            print("爬虫框架feapder可快速一键接入,快速开启爬虫之旅:https://github.com/Boris-code/feapder")
            print("谷歌reCaptcha验证码 / hCaptcha验证码 / funCaptcha验证码商业级识别接口:https://yescaptcha.com/i/NSwk7i")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/738211.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32CubeIDE使用示例(STM32CubeMX+STM32CubeIDE+Gcc+JLINK+STM32G030C8T6)

本文简单记录下STM32CubeIDE的使用方法,整体的环境是STM32CubeMXSTM32CubeIDEGccJLINKSTM32G030C8T6,实现的简单测试功能是让STM32G030C8T6板子上的LED闪烁,以STM32G030C8T6 PB4 脚做LED 输出闪烁为例,外部8MHZ 晶振,系统主频64MH…

word 目录创建与提取

前言 word实际上一直在用,但是笔者在写文档都没关注目录的概念,实际上目录就是富文本或markdown编辑器的标题,可以起到跳转的作用。笔者的毕业论文的目录居然还是手打的。 目录创建 实际上word书写的时候就需要设置标题,最近的…

雅思单词量要达到多少才能达到要求?

对于刚开始备考雅思的同学来说,雅思单词是考好雅思的基础,雅思单词量要达到多少才能过关呢?下面为大家介绍一下雅思词汇量的要求。 一、雅思词汇量要求 雅思听力词汇 3000~5000左右,雅思听力是以场景展开的&#xff…

51单片机--定时器与按键控制流水灯模式

文章目录 定时器定时器的介绍定时器的作用定时器框图定时器的工作模式计数器原理图: 中断系统中断程序流程STC89C52的中断资源定时器和中断系统 定时器的相关寄存器TCONTMODTH与TL有关中断的寄存器 按键控制流水灯模式 定时器 定时器的介绍 51单片机上的定时器是一…

率先布局 RWA 赛道,PoseiSwap 成为最具先进性的 DEX

RWA 全称为现实资产通证化,比如股票、期货、美债甚至房产等传统资产。RWA 正在成为加密行业发展的一个全新叙事方向,除了传统商业巨头比如高盛、西门子等开始向该领域深入布局外,以 MakerDAO、Binance、Aave、Maple Finance 等为代表的 Web3 …

MySQL_2

目录 一、函数 1、字符串函数 2、数值函数 3、日期函数 4、流程控制函数 二、约束 1、概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 2、目的:保证数据库中数据的正确、有效性和完整性。 3、分类 4、外键约束 4…

命名管道使用示例

用命名管道实现client和server端进行通信 【实现步骤】 创建两个没有关系的进程--》编写client和server源文件,并分别编译成可执行程序;创建命名管道文件,用函数int mkfifo(const char *filename,mode_t mode);client端以写的方式打开管道文…

日志消息直接发送到kafka设计

背景: 日常工作中,我们一般都有需要分析业务日志的需求,有些业务日志记录了用户点击或者用户购买行为等有用的信息,所以我们一般都需要基于这些日志进行分析,本文我们就来看一下这种日志消息的流转图 技术方案&#…

阿里云ECS扩容硬盘空间及文件系统

一.通过阿里云控制台扩容硬盘 前往ECS实例详情页面的云盘页签。 登录ECS管理控制台。在左侧导航栏,选择实例与镜像 > 实例。在顶部菜单栏处,选择目标ECS实例所在地域。找到待扩容云盘所在的实例,单击实例ID。在实例详情页面,单…

一起来探索录音转文字哪个软件好用

在数字时代,录音转文字技术成为了一种不可或缺的工具,通过将语音内容转化为可编辑和搜索的文字,从而为我们带来了许多便利。那本文将探讨录音转文字的好处,并分享一些实际案例以及录音转文字软件。那么如果你还不知道录音转文字哪…

想做软件测试工程师,这7件事你必须先知道

目录 一、“开发者测试” 就是“开发者来测试” 二、没有什么测试不可以“自动化测试” 三、开发者测试”利在当下“,”赢得未来“ 四、TDD不是必须先写测试代码 五、UT覆盖率100%真的很不好 六、用测试来驱动架构和代码质量 七、从“我要写测试依赖代码”到“…

在iPad上轻松做笔记和绘画,西圣Pencil上手

触控笔是一种提高工作学习效率的方便工具,尤其是和平板搭配使用。但是iPad的Apple Pencil价格昂贵,不适合学生等经济条件有限的用户,所以他们需要寻找一些性价比高的国产替代品。我最近用了一支国产的电容触控笔,叫做西圣Pencil触…

[C++] C++11新特性分析介绍(1): 列表初始化、右值引用、完美转发、移动语义...

文章目录 [toc] C11介绍统一的列表初始化 {}initializer_list新的声明autodecltypenullptr 范围for智能指针STL 新容器**右值引用 ****容器中 另外的右值引用 **万能引用与完美转发 ****新的类功能新默认成员函数强制生成默认函数的关键字 default禁止生成默认函数的关键字 del…

【网络安全】带你了解什么是【黑客】

文章目录 背景定义分类白帽黑客(White Hat Hacker)黑帽黑客(Black Hat Hacker)灰帽黑客(Gray Hat Hacker) 黑客文化伦理问题黑客常用的攻击手段黑客攻击用户的常用策略有以下这些:防御黑客攻击的…

[Android 13]Binder系列--获取服务

获取服务 hongxi.zhu 2023-7-8 一、客户端发起获取服务 以SurfaceFlinger进程中获取InputFlinger服务为例 frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp sp<IBinder> input(defaultServiceManager()->getService(String16("inputflinger"…

Redis+IDEA极速了解和实现单机锁和分布式锁

单机下&#xff1a; 只适用于单机环境下&#xff08;单个JVM&#xff09;&#xff0c;多个客户端访问同一个服务器 1.synchronized package com.cloud.SR.controller;import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.cor…

跟我一起从零开始学python(六)数据库编程:MongoDB数据库

前言 回顾之前讲了python语法编程 &#xff0c;必修入门基础和网络编程&#xff0c;多线程/多进程/协程等方面的内容&#xff0c;昨天和今天讲到了数据库编程篇MySQL&#xff0c;Redis今天第三篇MongoDB篇&#xff0c;前面没看的也不用往前翻&#xff0c;系列文已经整理好了&a…

多线程与并发编程【线程对象锁、死锁及解决方案、线程并发协作、生产者与消费者模式】(四)-全面详解(学习总结---从入门到深化)

目录 使用Class作为线程对象锁 使用自定义对象作为线程对象锁 死锁及解决方案 线程并发协作(生产者/消费者模式) 实现生产者与消费者模式 使用Class作为线程对象锁 语法结构&#xff1a; synchronized(XX.class){//同步代码} 或 synchronized public static void access…

【大语言模型】LLM应用程序的新兴体系结构

LLM应用程序的新兴体系结构 LLM应用栈设计模式&#xff1a;In-context learningData Preprocessing/EmbeddingPrompt Construction/RetrievalPrompt Execution/Inference What about agents?展望参考资料 大型语言模型是构建软件的强大新基元。但由于它们非常新颖且与常规计算…

css写法、颜色显示方式

一、什么是css 二、css的几种写法 1、行内样式 css写在标签的style属性上&#xff0c;优先级非常高&#xff0c;但是有多个标签具有相同样式代码重复高 2、页面样式 此时写在head&#xff08;不可见&#xff09;中&#xff0c;用style标签 3、外联样式 css样式也可以导入 一…