验证码
全自动区分计算机和人类的公开图灵测试 (Completely Automated Public Turing test to tell Computers and Humans Apart),简称 CAPTCHA,俗称 验证码。
由于这个测试是由计算机来考人类,而不是标准图灵测试中那样由人类来考计算机,所以也被称为反向图灵测试。
验证码可以有效防止恶意注册,刷票,论坛“灌水” 等有损网站利益的行为。验证码的原理很简单:人类有主观意识,能够根据要求执行操作,而计算机却不能。
最初,验证码是一张带有字符的图片,用户只需要将图片中的字符输入到文本框中即可,但这种简单的验证码很快就被绕过了。于是人们向图片中加入了一些混淆的元素,如斜线,彩色斑点等。接着出现了一些基于用户操作的验证码,也就是行为验证码。常见的有滑动验证码,拼图验证码和文字点选验证码等。
字符验证码
字符验证码是指用数字,字母,汉字和标点符号等字符作为元素的图片验证码。字符验证码是常见的验证码类型。它将人类视觉和计算机视觉的差异作为区分用户身份的依据。

OCR识别
我们曾在前边的文章中使用 百度AI开放平台文字识别 成功地从图片中识别电话号码,那么是否可以用来识别验证码图片中的文字呢? 将网站中的验证码保存到本地,然后调用 百度OCR 进行识别:

相较于之前的电话号码来说,本次所面对的验证码是带有彩色背景斜线和噪点,而且图片中字符颜色和背景色并没有强烈反差,这些因素都会影响识别效果。
要想提高识别的成功率,我们必须对图片进行处理,例如降低斜线和噪点对文字的干扰,增强背景色与字符颜色的反差。
也就是说,我们需要对图片进行灰度处理(去掉彩色)和二值化处理(降低干扰,增强颜色反差)。
灰度处理
from PIL import Image
im = Image.open(r"C:\Users\Administrator\Desktop\code.png")
im = im.convert(<

本文介绍了验证码的概念、作用及类型,重点探讨字符验证码的识别方法。先尝试用百度OCR识别,因验证码有彩色背景、斜线和噪点等影响识别效果,需进行灰度和二值化处理。处理后识别效果仍不佳,又介绍了打码平台,还提及可借助深度学习识别复杂验证码。
&spm=1001.2101.3001.5002&articleId=110329707&d=1&t=3&u=ecd979e0719e4ecaa4abbd60e60db28a)
356

被折叠的 条评论
为什么被折叠?



