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

文章目录

  • 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. 多类型验证码实测结果

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

梳理一名Go后端程序员日常用的软件~

大家好,我是豆小匠。 这期分享下我日常工作用到的软件和工具! 省流版图片↓↓↓ 工具分为四类:编码软件、笔记/文档软件、开发工具和日常软件等。 1. 编码软件 1.1. Goland 出自JetBrain家族,IDE的王者,作为我的…

操作系统 应用题 例题+参考答案(考研真题)

1.(考研真题)一个多道批处理系统中仅有P1和P2两个作业,P2比P1晚5ms到达,它们的计算和I/O操作顺序如下。 P1:计算60ms,I/O 80ms,计算20ms。 P2:计算120ms,I/O 40ms&…

Redis下载和安装(Windows系统)

通过 GitHub 来下载 Windows 版 Redis 安装包,下载地址:点击前往。 打开上述的下载链接,Redis 支持 32 位和 64 位的 Window 系统,大家根据个人情况自行下载,如图 1 所示: 下载完成后,打开相应的文件夹&a…

wincc定时器功能介绍

1定时器功能介绍 WinCC中定时器的使用可以使WinCC按照指定的周期或者时间点去执行任务,比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。WinCC已经提供了一些简单的定时器,可以满足大部分定时功能。但是在有些情况下&#xff0c…

智能座舱架构与芯片 - (2) 架构篇

一、定义 1.1 智能座舱定义 按照百度百科的定义,智能座舱(intelligent cabin)旨在集成多种IT和人工智能技术,打造全新的车内一体化数字平台,为驾驶员提供智能体验,促进行车安全。目前国内外已经有很多研究…

Ubuntu18 Opencv3.4.12 viz 3D显示安装、编译、移植

Opencv3.*主模块默认包括两个3D库 calib3d用于相机校准和三维重建 ,viz用于三维图像显示,其中viz是cmake选配。 参考: https://docs.opencv.org/3.4.12/index.html 下载linux版本的源码 sources。 查看cmake apt list --installed | grep…

基于鹰栖息算法优化概率神经网络PNN的分类预测 - 附代码

基于鹰栖息算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于鹰栖息算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于鹰栖息优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络…

SV-7042VP sip广播4G无线网络号角

SV-7042VP sip广播4G无线网络号角 1. 采用防水一体化设计,整合了音频解码、数字功放及音柱 2. 提供配置软件,支持SIP标准协议,通过SIP服务器能够接入现有综合通信调度平台系统,接受sip通信调度平台。融合第三方sip协议及sip服务器…

2023亚太杯数学建模思路 - 案例:最短时间生产计划安排

文章目录 0 赛题思路1 模型描述2 实例2.1 问题描述2.2 数学模型2.2.1 模型流程2.2.2 符号约定2.2.3 求解模型 2.3 相关代码2.4 模型求解结果 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 最短时…

六、Big Data Tools安装

1、安装 在Jetbrains的任意一款产品中,均可安装Big Data Tools这个插件。 2、示例 下面以DadaGrip为例: (1)打开插件中心 (2)搜索Big Data Tools,下载 3、链接hdfs (1&#xff0…

将kali系统放在U盘中插入电脑直接进入kali系统

首先准备一个空白的 U 盘。 Kali Linux | Penetration Testing and Ethical Hacking Linux Distribution 在 Windows 上制作 Kali 可启动 USB 驱动器 Making a Kali Bootable USB Drive on Windows | Kali Linux Documentation 1. 首先下载 .iso 镜像 Index of /kali-images…

Logstash同步MySQL数据到ES

简介 1.1 什么是Logstash? Logstash作为一个具备实时流水线功能的开源数据收集引擎,拥有强大的能力。它能够从不同来源收集数据,并将其动态地汇聚,进而根据我们定义的规范进行转换或者输出到我们定义的目标地址。 1.2 Logstash的…

【数据结构-零基础学习】线索二叉树(代码+图示+解析)

【数据结构-零基础学习】线索二叉树(代码图示解析) 文章目录 【数据结构-零基础学习】线索二叉树(代码图示解析)[toc]定义产生背景种类示意图1)未加入线索的普通二叉树示意图1.12)线索添加的规则3)中序线索二叉树示意图1.24)中序线索二叉树分析示意图1.3 设计代码逻辑(重点)代码…

2023年软件团队的六款最佳API文档工具

API开发的增长导致了大量的API文档工具的出现,这一点在使用谷歌搜索“API文档工具”时可以明显看到很多的搜索结果。这些工具的激增与全球API开发的扩张和对准确文档的需求增加相一致。值得关注的是,不仅小型创业公司进入了API市场,许多成熟企…

磐舟CI使用说明及案例

整体介绍 磐舟作为一个devops产品,它具备基础的CI流水线功能。同时磐舟的流水线是完全基于云原生架构设计的,在使用时会有一些注意事项。这里首先我们要了解磐舟整体的流水线打包逻辑。 文档结构说明 一般来说,磐舟推荐单个业务的标准git库…

外卖小程序系统:数字化餐饮的编码之道

在当今数字化时代,外卖小程序系统成为了餐饮业的一项技术巨制。这个系统不仅提供了便捷的点餐体验,更通过先进的技术手段,实现了高效订单处理、实时配送追踪以及个性化推荐。让我们深入了解外卖小程序系统的技术魔法,一起揭秘数字…

初识JVM(简单易懂),解开JVM神秘的面纱

目录 一、什么是JVM(Java虚拟机)? 二、JVM的功能 三、JVM的功能-即时编译 四、常见的JVM 五、JVM的组成 五、JVM的工作流程 参考资料 一、什么是JVM(Java虚拟机)? 在Java的世界里,Java虚…

维纳滤波器小结

维纳滤波器小结 一、问题概述 1.1 维纳滤波器简介 维纳滤波器是在最小均方误差(mmse)准则下的线性最优滤波器,其利用平稳随机过程的相关特性和频谱特性,对混有噪声的信号进行滤波。 其输入信号为 u ( n ) d ( n ) v ( n ) u…

适合您的iPhone手机的 8 款最佳手机数据恢复软件

当谈到恢复已删除或丢失的 iPhone 文件时,您通常有两种解决方案:从备份恢复、使用 iPhone 数据恢复软件。 虽然前者听起来很简单,但您可能已经检查过并且没有备份。那么您的下一个选择是尝试 iPhone 数据恢复工具。 市场上有许多软件工具都…

搭个网页应用,让ChatGPT帮我写SQL

大家好,我是凌览。 开门见山,我搭了一个网页应用名字叫sql-translate。访问链接挂在我的个人博客(https://linglan01.cn/about)导航栏,也可以访问https://www.linglan01.cn/c/sql-translate/直达sql-translate。 它的主要功能有:…