【验证码系列】利用深度学习构建字符型验证码自动识别模型与算法

文章目录

  • 1. 写在前面
  • 2. CSCI级设计决策
    • 2.1. 字符型验证码识别智能体流程关联
    • 2.2. 字符型验证码识别行为设计
  • 3. 字符型验证码识别智能体结构设计
    • 3.1. 智能体部件组成
    • 3.2. 智能体结构
  • 4. 接口设计
    • 4.1. 字符型验证码识别智能体交互
  • 5. 智能体算法设计细节
    • 5.1. 算法目标
    • 5.2. 字符型验证码算法数据
    • 5.3. 程序级模块交互流程
  • 6. 多类型验证码实测结果

1. 写在前面

  前些天我写了一篇关于Google验证码机器人自动识别算法构建的文章:

【验证码系列】Google验证码从数据训练到机器自动识别算法构建

传统字符型验证码识别在以前的处理流程:

图像预处理 ---- 二值化 ---- 去噪 ---- 识别

这套验证码识别解决方案放在六七年前,那个时候在整个爬虫领域是够用的

不过如今技术不断演变,验证码的识别基本上都采用深度学习、模型识别的方式,不仅提升了准确率还提升了通用性!也不再需要手动设计特定规则和特征提取过程

你只需要提供足够多的训练数据,这个模型就能够为你识别多种不同类型的验证码!

当然这也并不是容易达成的一件事,首先我们需要大量的标记数据来训练模型,而标记验证码数据通常需要人工操作,耗费时间和资源

然后就是需要选择合适的算法!这都是需要具备较深领域知识的,因为后续的模型调参也是一个复杂的过程!

这篇文章我们将再次利用数据集进行训练,实现针对字符验证码的自动识算法构建,涉及的验证码类所型覆盖的范围还是比较全的(正规型、扭曲型、粘连性等等),大致如下所示:

在这里插入图片描述
在这里插入图片描述

针对上图中所有情况字符的随机组合问题,我们将采用同一算法来解决!该算法采用类ResNet网络结构的深度学习算法,由6个多分类器组成,分别针对以上不同情况的字符型验证码进行识别,如下我在本地随机抽取了几张验证码进行了测试,如下所示:

在这里插入图片描述

文末会展示多样本类型的测试结果、准确率、耗时

2. CSCI级设计决策

2.1. 字符型验证码识别智能体流程关联

在这里插入图片描述

1、用户:字符型验证码突防软件使用者
2、接口服务器:接收用户数据并返回字符识别结果
3、字符型验证码识别算法:对待检测字符型验证码进行识别

2.2. 字符型验证码识别行为设计

  • 接口服务器主要完成数据传输任务,在用户和字符型验证码识别算法之间传输待识别字符型验证码的Base64数据和字符型验证码识别结果数据
  • 字符型验证码识别算法主要功能为:对接口服务器提供的待识别字符型验证码图像数据进行识别得到识别字符结果,并将字符识别结果数据返回接口服务器

在这里插入图片描述

3. 字符型验证码识别智能体结构设计

3.1. 智能体部件组成

在这里插入图片描述

  • FlaskServer
      该模块接收用户输入的url数据及id号返回验证识别结果
  • CCharCaptcha
      该模块,主要对待识别字符型验证码进行识别

3.2. 智能体结构

在这里插入图片描述

  • FlaskServer
      该模块主要包括两部分,一部分接受用户输入的url数据及id号,以此判断进行验证的类型,另一部分将验证突防结果返回给用户
  • CCharCaptcha
      该模块,主要对待识别字符型验证码数据进行缩放、裁剪等操作获得多张字符型验证码图像,对每一张字符型验证码图像进行识别。然后,对多个识别结果做处理选出最优结果,并返回识别字符结果

首先,FlaskServer模块为CCharCaptcha提供待识别字符型验证码图像数据。其次,CCharCaptcha对待识别字符型验证码图像数据进行算法运算。最后,CCharCaptcha将识别结果返回给FlaskServer

4. 接口设计

在这里插入图片描述

4.1. 字符型验证码识别智能体交互

在这里插入图片描述

字符型验证码突防软件接收到CharUser信息后,字符型验证码突防软件交互模块根据FlaskServer获取到的Base64数据转换为图像数据,然后将图像数据传递给CCharCaptcha模块进行字符型验证码识别,并返回识别结果到FlaskServer,FlaskServer将识别结果反馈给CharUser

对象
接口服务器FlaskServer
字符验证码识别算法CCharCaptcha

5. 智能体算法设计细节

5.1. 算法目标

  字符型验证码识别算法的工作目标是让机器人模拟人去识别网站提供的字符验证码,并反馈识别结果:

在这里插入图片描述

通过分析我们知道字符型验证码构成主要以下五种情况:

1、待识别字符位数分为4、5、6位
2、待识别字符分为多种字体,例宋体、黑体等
3、待识别字符由26个英文字母(包括大小写)和0-9数字随机组成
4、待识别字符背景有干扰图案,例如曲线、斑点等
5、待识别字符存在实心和空心两种字符

5.2. 字符型验证码算法数据

  采用PhotoShop生成多种类62字符(a-z,A-Z,0-9),包括各种字体、粗细、空心和实心,共计近4W张字符图片并混合实际采集的验证码数据。利用C++程序采用随机数量的字符图片,用各种角度、位置粘贴到各种背景图片上。背景图片的干扰信息由程序自动生成。共计生成字符型验证码训练图片500万张

5.3. 程序级模块交互流程

在这里插入图片描述

除了Python模块的话,算法模块是用C++实现的,当可执行程序运行时,Python模块提供图片文件到相应文件夹下。C++程序检查图片文件是否存在,若存在则对图片文件进行字符识别运算,并将识别结果记录到共享文件Result中

6. 多类型验证码实测结果

  • 数字曲线干扰型验证码:

在这里插入图片描述

  • 多位字符干扰型验证码:

在这里插入图片描述

  • 多色曲线干扰型验证码:

在这里插入图片描述

  • 字符旋转干扰型验证码:

在这里插入图片描述

  好了,到这里又到了跟大家说再见的时候了。创作不易,帮忙点个赞再走吧。你的支持是我创作的动力,希望能带给大家更多优质的文章

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

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

相关文章

使用表单登录方法模拟登录通信人家园,要求发送登录请求后打印出来的用户名下的用户组类别

目标网站:https://www.txrjy.com/forum.php 一、进入网页,右键“检查” 二、输入用户名和密码,点击“登录”,点击“Network”,上划加载项找到蓝色框中的内容 三、点击第一个加载项,找到URL 四、相关代码: …

苍穹外卖-day05

苍穹外卖-day05 课程内容 Redis入门Redis数据类型Redis常用命令在Java中操作Redis店铺营业状态设置 功能实现:营业状态设置 效果图: 选择营业中,客户可在小程序端下单: 选择打烊中,客户无法在小程序端下单&#xf…

git and svn 行尾风格配置强制为lf

git CLI配置: // 提交时转换为LF,检出时转换为CRLF git config --global core.autocrlf true // 提交时转换为LF,检出时不转换 git config --global core.autocrlf input // 提交检出均不转换 git config --global core.autocrlf f…

提升(Hoisting)和暂时死区(TDZ)在实践中的应用

变量提升 ● 首先我们先声明三个变量,并在声明之前去使用这个变量 console.log(me); console.log(job); console.log(year);var me IT知识一享; let job teacher; const year 1991;使用var声明变量,变量声明会被提升到作用域的顶部,但是…

EasyExcel实现动态表头功能

EasyExcel实现动态表头功能 开发过程中,大部分都会使用到导出报表功能,目前阶段会用得有 poi导出(暂无), easyexcel导出(官方文档,https://easyexcel.opensource.alibaba.com/docs/current/&am…

【C++】特殊类设计+类型转换+IO流

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

c语言实现http下载功能,显示进度条和下载速率

#include <stdio.h>//printf #include <string.h>//字符串处理 #include <sys/socket.h>//套接字 #include <arpa/inet.h>//ip地址处理 #include <fcntl.h>//open系统调用 #include <unistd.h>//write系统调用 #include <netdb.h>//…

机器学习实战:基于sklearn的工业蒸汽量预测

文章目录 写在前面工业蒸汽量预测1.基础代码2.模型训练3.模型正则化4.模型交叉验证5.模型超参空间及调参6.学习曲线和验证曲线 写在后面 写在前面 本期内容&#xff1a;基于机器学习的工业蒸汽量预测 实验环境&#xff1a; anaconda python sklearn 注&#xff1a;本专栏内所有…

K8s学习笔记——认识理解篇

1. K8s诞生背景 回顾应用的部署&#xff0c;经历了以下几个阶段&#xff1a; 传统部署&#xff1a;物理服务器上运行应用程序。虚拟机部署&#xff1a;物理服务器上安装虚拟机&#xff0c;在虚拟机上运行应用程序。容器部署&#xff1a;物理服务器上安装容器运行时&#xff0…

YB4554是一款经济高效、完全集成的高端输入电压单电池锂离子电池充电器。

YB4554 带OVP保护的高输入电压充电器 概述&#xff1a; YB4554是一款经济高效、完全集成的高端输入电压单电池锂离子电池充电器。这个充电器使用锂离子要求的CC/CV充电模式电池充电器可接受高达24V&#xff0c;但当输入电压超过OVP阈值&#xff0c;通常为6.8V&#xff0c;以防…

antdv使用a-cascader联级选择器实现自定义浮层样式

一般的使用组件库想要自定义样式都会使用深度选择器deep去实现 但是有的组件不管是deep还是!important还是写行内样式都改不掉 这里主要讲使用a-cascader联级选择器的浮层改变样式 一&#xff0c;使用组件 <a-cascader:options"regionOptions"change-on-selectv…

30道高频Vue面试题快问快答

面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过程中&#xff0c;面试官通常会使用快问快答的方式来快速评估面试者的基础知识、思维能力和反应速度。 这种情景下&#xff0c;面试官会提出一系列简短的问题&#xff0c;并期望面试者能够迅速做出回答或提供简洁明…

云计算实战项目之---学之思在线考试系统

简介&#xff1a; 学之思开源考试系统是一款 java vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序&#xff0c;能覆盖到pc机和手机等设备。 支持多种部署方式&#xff1a;集成部署、前后端分离部署、docker部…

初识rust

调试下rust 的执行流程 参考&#xff1a; 认识 Cargo - Rust语言圣经(Rust Course) 新建一个hello world 程序&#xff1a; fn main() {println!("Hello, world!"); }用IDA 打开exe&#xff0c;并加载符号&#xff1a; 根据字符串找到主程序入口&#xff1a; 双击…

SpringCloud 微服务全栈体系(十二)

第十一章 分布式搜索引擎 elasticsearch 一、初识 elasticsearch 1. 了解 ES 1.1 elasticsearch 的作用 elasticsearch 是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在 GitHub 搜…

【安全】Java幂等性校验解决重复点击(6种实现方式)

目录 一、简介1.1 什么是幂等&#xff1f;1.2 为什么需要幂等性&#xff1f;1.3 接口超时&#xff0c;应该如何处理&#xff1f;1.4 幂等性对系统的影响 二、Restful API 接口的幂等性三、实现方式3.1 数据库层面&#xff0c;主键/唯一索引冲突3.2 数据库层面&#xff0c;乐观锁…

亚马逊云科技产品测评』活动征文|通过使用Amazon Neptune来预测电影类型初体验

文章目录 福利来袭Amazon Neptune什么是图数据库为什么要使用图数据库什么是Amazon NeptuneNeptune 的特点 快速入门环境搭建notebook 图神经网络快速构建加载数据配置端点Gremlin 查询清理 删除环境S3 存储桶删除 授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转…

chatgpt升级啦,训练数据时间更新到2023年4月,支持tools(升级functionCall),128k上下文

&#xff08;2023年11月7日&#xff09; gpt-4-1106-preview https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo 训练数据日期升级到2023年四月 上线文增加到128k 调用一次chatgpt接口&#xff0c;可以得到多次函数调用 import OpenAI from "openai"…

水利部加快推进小型水库除险加固,大坝安全监测是重点

国务院常务会议明确到2025年前&#xff0c;完成新出现病险水库的除险加固&#xff0c;配套完善重点小型水库雨水情和安全监测设施&#xff0c;实现水库安全鉴定和除险加固常态化。 为加快推进小型水库除险加固前期工作&#xff0c;水利部协调财政部提前下达了2023年度中央补助…

网络流量分类概述

1. 什么是网络流量&#xff1f; 一条网络流量是指在一段特定的时间间隔之内&#xff0c;通过网络中某一个观测点的所有具有相同五元组(源IP地址、目的IP地址、传输层协议、源端口和目的端口)的分组的集合。 比如(10.134.113.77&#xff0c;47.98.43.47&#xff0c;TLSv1.2&…