Python实现验证码识别

1,033 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 28 天,点击查看活动详情

验证码的主要目的是强制人机交互以抵抗机器自动化攻击。大多数验证码设计者都不理解图像处理、机器视觉、模式识别和人工智能的基本概念。 你可以通过使用验证码来赚钱。当然,你必须犯罪:例如,招商银行的密码只有6位,验证码没有用。电脑可以快速破解一个丰富的账户,许多账户可以在网上交易。也有一些设计良好的公司,如雅虎,谷歌,微软等。虽然国内腾讯的中国验证码很难,但并不好。 过程知识 具备人工智能、模式识别、机器视觉和图像处理等方面的基本知识 主要工艺流程 例如,我们需要从一张图片中识别验证码;例如,我们需要从一张图片中检测和识别一张人脸。 1.图像捕获:对于验证码,直接通过HTTP抓取HTML,分析图像的URL,然后下载并保存。在进行人脸检测和识别时,通常通过视频采集设备进行采集,并通过A/D转换操作保存为数字图片或视频。 2.预处理:检测正确的图像格式,转换为适当的格式,压缩,切割ROI,去除噪声,灰度,并转换颜色空间。 3.检测:车牌检测识别系统首先找到车牌的近似位置,面部检测系统查找图片中所有面孔(包括可疑面孔),验证码识别主要是找出文本所在的主要区域。 4.预处理:人脸检测和识别会在识别前对人脸进行纠正,如平面内、平面外旋转、失真等。对于这里的验证码识别,“一般需要”被削减。 5.训练:通过各种模式识别和机器学习算法,选择和训练适当数量的训练集。这并不是说训练样本越多越好。在学习后,这里可能会出现泛化能力较差的问题。这个步骤是不必要的。有些识别算法不需要训练。 6.识别:输入待识别的处理图像,将其转换为分类器所需的输入格式,然后根据输出类别和置信度确定可能的字母。识别本质上是分类。

之前有个爬虫需求,但每次请求都需要进行验证码识别,故需要ocr识别,推荐一个Python免费的验证码识别-ddddocr(谐音带带弟弟OCR)

安装

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

图片

参数说明

图片

验证

随便找了一个验证码图片,使用这个库来实战一下。

图片

import ddddocr
ocr = ddddocr.DdddOcr()
with open('1.png', 'rb') as f:    img_bytes = f.read()
res = ocr.classification(img_bytes)print(res)

图片

成功识别出来了验证码文字!而且优点也非常明显:首先代码非常精简,不需要额外设置环境变量等等,5行代码即可轻松识别验证码图片。如果你需要进行验证码识别,且对精度要求不是过高。那么,带带弟弟OCR(ddddocr)这个库是一个不错的选择~