全国协议5人面授小班,企业级独立开发考核,转业者的IT软件工程师基地 登录/注册 | 如何报名
当前位置: Python   >  使用 Pytesseract 进行简单的验证码识别
admin · 更新于 2021-08-06

1. 安装 pytesseract

pytesseract 是 Python 的一个 OCR 识别库,可以通过安装这个模块,然后调用相应的方法进行验证码识别。我们只是使用这个模块的一些常用的 API,关于这个模块的其他用途,读者可以根据自己的兴趣爱好自行研究。

pytesseract 是第三方模块,所以需要提前安装才能使用,安装命令如下:

pip install pytesseract
代码块
  • 1

安装过程如下:

2. 第一个例子

我们先使用 pytesseract 进行简单的图片识别。

我们通过调用 image_to_string 方法来进行识别图片中的文字。

# 引进Image和pytesseract模块try:
    from PIL import Imageexcept ImportError:
    import Imageimport pytesseract# 将图片转化成文字print(pytesseract.image_to_string(Image.open('test.bmp')))
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

运行结果:


可以看出,pytesseract 能够准确的识别图片的文字。

3. 识别验证码

接下来,我们来尝试使用它来验证验证码。验证码图片如下所示:

代码如下:

import pytesseractfrom PIL import Image

im=Image.open('test.jpeg')#灰度处理im=im.convert('L')#设置二值化的阈值threshold=170t=[]for i in range(256):
    if i<threshold:
        t.append(0)
    else:
        t.append(1)#通过表格转换成二进制图片,1的作用是白色,0就是黑色im=im.point(t,"1")im.show()print(pytesseract.image_to_string(im))#删除冗余字符print(pytesseract.image_to_string(im)[0:-1])
代码块
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

运行结果:

从运行结果,我们可以看出,虽然我们使用了二值化进行了灰度处理,但是程序仍然不能 100% 的识别验证码,所以,后面我们删除了识别错误产生的小数点,才是最后的结果。

4. 小结

使用 pytesseract 只能识别一些简单的验证码,识别率也不高,需要导入训练好的各种语言包才能提高识别率。另外,如果熟悉机器学习的知识化,根据 pytesseract 提供的方法,可以通过深度学习的算法自己训练一个模型,然后进行识别,可以提高识别的准确度。


为什么选择汉码未来