基于机器学习的验证码识别平台设计与实现

本文围绕验证码识别程序展开,分析了需求,包括功能性与非功能性需求。采用结构化设计,涵盖验证码生成、图像处理、神经网络训练及识别等模块。使用Python、Tensorflow和CNN算法搭建模型,经测试有一定准确率。还介绍了安装使用方法,总结了项目困难、水平提升及升级方向。

1、需求分析

1.1 需求背景

随着人工智能技术的发展, 信息技术行业与软件行业对人工智能的需求也越来越大, 而 对于爬虫或者数据挖掘软件来说,最头疼的莫过于程序卡在验证码上,这样既无法爬取到数 据,也很容易降低效率。因此验证码识别对于数据分析师或者爬虫程序员来说是非常需要的。 同时,通俗来说,验证码识别不仅仅只可以识别验证码。由于验证码噪点多,干扰线粗长, 字符形状不固定, 其识别难度是非常大的, 而一旦能识别验证码, 大部分可读性字符,例如 交通摄像头拍摄车牌识别, 文章书籍识别, 场景标题监测, 工厂流水线货物产品检测等等都 可以实现。
并且人工智能技术融入当代互联网技术、自动化电子技术, 信息技术这些已经是大势所 趋, 难以逆反,将其接受, 容纳,转化为生产技术的一部分是至关重要的。验证码分析识别 同样如此, 在自动获取网络数据, 分析信息数据等等过程中, 都需要绕过验证码进行大量识 别,因此验证码识别是生产过程中虽然毫不起眼当时也非常重要的一环。

1.2 功能性需求

1.2.1 验证码生成性功能与标准验证码库

鉴于目前并没有找到官方统一的验证码标准库, 并且经过大量调查, 不少网站验证码生 成都基于 Captcha 库, 因此将 Captcha 验证码生成算法(即第三方库)作为理论与实践的数 据标准。由于在制作时考虑到日后神经网络训练所需配置高低的问题, 所以验证码生成的数 据只由数字组成,这能降低开发和训练所带来的高昂成本。
验证码生成不仅需要带有噪点、干扰线、以及形状变化等特点,同时在同一张图片中还 需要具备不同的颜色, 以保证其真实性和难度, 做到能人眼识别的同时也能让机器识别其字 符码,并且尽可能具有标准化和通用化。

1.2.2 图像处理

图像处理应当具有可展示性,并且能够具备不同的处理进度和算法展示,包括灰度化、 模糊化、二值化等算法处理, 在处理识别的过程中应当展示出来, 以便供提供处理进展数据 和方便人员进行分析, 图像处理还应当在之后的识别同时在图形界面中逐张展示, 提供即时 性的处理和让人员进行分析。

1.2.3 神经网络训练和识别

神经网络应当符合现阶段的技术发展,在图像识别上应当使用有比较优良技术价值的算 法, 例如 CNN 内部的卷积层、池化层等, 并在确保验证码数据足够庞大的同时能够让神经

网络具有长时间不间断的训练, 以便能确保能达到良好的准确率。而神经网络的识别应体现 在模型的识别上, 具体为神经网络在训练后输出带有接口的模型, 并且模型能够在后期进行 函数调用。

1.2.4 图形界面—交互特性需求

图形界面是用户与程序交互的主要方式, 这能有效降低用户操作程序的成本。并且能直 观展现程序处理结果和过程。图形界面因具有打开数据, 输入数据,处理数据, 展现数据等 核心功能以及一些别的辅助性功能。在用户输入图片,并开始测试之后, 图形界面应当调用 并显示处理过程中的图片和处理结果, 如果作为网络接口, 可以在不要求图形界面显示处理 结果的同时要通过通信端返回结果。

1.3 非功能性需求

1.3.1 输出监控日志以及处理时间计算

程序处理以及模型识别过程中, 可能需要逐模块分析其运作形式, 因此需要具备监控日 志的功能, 在需要完成识别和测试的时候, 通过查看日志可以了解程序运行的行为, 运行方 式,以及判断可能出现的错误等。
需要展示程序运行时间, 以便能判断神经网络训练出来模型的优良好坏, 模型的好坏不 仅取决于其准确率,还取决于运行的效率,程序也同样如此。程序/模型处理时间应该展现 在图形界面上, 方便进行分析。作为程序,运行时间应当具备: 响应时间快,能及时反馈结 果和过程

1.3.2 通讯传输数据

通讯传输数据可以作为测试性需求进行开发,将程序应用到实际场合中需要程序将识别 出来的结果进行 C/S 或者 B/S 传输。这样可以进行远程自主识别和结果返回。

1.4 设计定位

鉴于开发平台为微软windows10 系统,因此运行平台也必须为windows10 后者windows7 系列平台,以便能展现最佳效果。 程序编程语言为 python,并指定为主要编程语言,能在 python==3.7 的环境中运行,由于开发 IDE 为 PyCharm,因此推荐运行环境也为 PyCharm, 并导入附录中的第三方库,即可有效运行。
运行功能定位为验证码自动识别,包括手动识别, 挂载在服务器上识别以及作为测试功 能的自动抓取识别和传输结果。
该程序平台主要通过极限编程的模式进行开发,主体或者说唯一编程语言为 python,主 要编程平台框架为 Anaconda,人工智能训练框架为 Tensorflow2.1 版本,并采用 CNN 卷积 神经网络算法进行搭建。

2、概要设计

程序主要采用结构化设计, 通过仅有的参数传递尽可能降低每个模块之间的耦合, 并尽 可能将功能划分成模块以提高模块内聚性,各个模块以及其中的关系如图 2- 1 所示:
在这里插入图片描述
图 2-1 模块结构图

图像处理模块针对验证码图像进行各种处理,包括灰度化、模糊化、二值化, 梯度化等, 神经网络识别模块针对处理后的图像进行识别。图像文件管理模块针对用户打开验证码, 和 随机挑选验证码进行管理和调用,通讯传输模块是针对识别结果进行本地传送通讯的测试模 块。
打开图形界面后, 用户可以打开验证码图像导入到程序中, 开始测试之后, 用户通过打 开主函数直接调用 GUI 图形界面,而图形界面本身也有三个模块组成, 各自通过函数调用 组成 GUI 。进入 GUI 后可以在菜单栏打开图片、打开随机图片、进行测试、查询帮助和版 本。然后再进行测试中,再主函数内部进行各个模块的调用,依次为处理图像, 图像识别, 生成结

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

辣椒种子

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值