现代互联网中,众多网站为了防止大规模的自动化访问行为,往往采取各种措施来检验操作是否属于人类实际指令,在这种背景下,各类验证码也就应运而生。最初阶段的验证码一般采用几个基本的数字和字母拼接而成,不过随着科学技术的日新月异以及图像识别技术性能的日益提升,验证码的复杂度和实现方法也在逐步改善和升级。
以下内容,我们将会以最为基础的文字图形验证码为例进行详细探讨,深度探索如何运用OCR(Optical Character Recognition)技术准确识别简易验证码。一般的文字图形校验码主要由数字和字母构成,思考到此特性,我们一般选用OCR技术以实现准确的图形识别功能。

OCR技术
准备工作
- 安装tesseract软件
这里我们使用tesserocr作为 OCR 识别工具,其是一款 Python 接口的 OCR 识别库,因此在使用之前需要安装 tesseract 的核心功能。下方为下载地址:
# tesseract 下载地址
https://digi.bib.uni-mannheim.de/tesseract/?C=M;O=A

下载列表
这里我们选择最新的版本20231005。
下载完成后即可双击运行安装,需要注意的是,如果需要识别除英文字母和数字外的其他文字内容,需要在安装过程中,点击 Additional language data 选项,然后勾选其他的文字才可以识别。

可以选择其他语言安装
- 配置环境变量
安装完成后需要配置环境变量,这里需要配置两个路径,一个 Tesseract-OCR 本身的目录,另一个是 tessdata 目录(以自己实际路径为准)。

配置环境变量
- 验证是否安装并配置成功
配置完成后在命令行窗口验证是否配置成功。

验证是否成功
- 安装tessact Python库
配置完 tesseract 后,还需要下载 Python 支持库,一个是 Pillow 库用于读取图片,一个是 pytesseract 库,用于和安装的 tesseract 连接。
pip install Pillow
pip install pytesseract
- 修改tessact变量
安装完 pytesseract 后,还需要修改一下 pytesseract.py 中的 tesseract_cmd 值,内容是安装的 tesseract.exe 的绝对路径(这里必须要修改,否则运行时会报找不到文件的错误)。

修改tesseract_cmd变量
到此,准备工作就算完成了,下一步就可以开始使用了。
开始使用
这里我们准备一张简单验证码图片,用于识别测试。

简单验证码
import pytesseract
from PIL import Image
# 读取图片
img = Image.open('img.png')
# 图片转字符串
code = pytesseract.image_to_string(img)
print(code)
#M8k2

识别结果
运行代码后可以看到,成功识别出了验证码字符串,而且整个代码超级简单
注意事项
tesseract 可识别的内容需要尽可能的整洁,字符串清晰,因此一些变种的字符串其识别成功率并不高。列如下方的,7364 验证码,就识别成了 1364。

识别错误的情况

2640 错误识别成了2B4D
尽管在识别变形验证码上存在识别不准的情况,但是反过来想,如果一个平整且清晰的文字图片岂不是可以超级规容易的识别吗?有什么好的用处呢?就需要发挥大家的想象了,应用到更多的场景。













暂无评论内容