python爬虫系列——开始入土(六)

验证码识别

在python爬虫的使用过程中,有可能会遇到界面需要登陆并输入图片验证码的情况
在这种情况下,可以人工进行识别,但是步骤太过繁琐,所以可以采用机器识别

在之前的文章python爬虫系列——开始入土(三)中也提到过有关遇到验证码的情况
使用JavaScript去进行图片文字识别时也有使用:JavaScript 图片转文字,文字转语音

本文章主要介绍使用pytesseract如何对验证码图片中的文字进行识别

pytesseract安装

使用pip install pytesseract语句可以对pytesseract进行安装

pytesseract介绍

Pillow库

光是安装pytesseract库还不足够,还需要安装Pillow库

  • 安装命令:pip install pillow
  • 导入py:from PIL import Image

Pillow 是 PIL 的替代版本,PIL 软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。尽管Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。pillow可以说已经取代了PIL,将其封装成python的库

Pillow介绍

tesseract-ocr

OCR(Optical Character Recognition):光学字符识别,是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。

tesseract-ocr属于比较老的开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后由Google进行改进、修改bug、优化,重新发布。

目前tesseract-ocr识别效率可能较低一些,但是由于是开源并且可以进行训练,市场上使用tesseract-ocr还是较为广泛的。

推荐的一些下载地址:

安装方式

点击tesseract-ocr-w64-setup-v5.0.0-alpha.20200328.exe安装程序
在这里插入图片描述
之后点击下一步,到安装完毕
在这里插入图片描述
在这里插入图片描述
安装的程序文件夹中就会出现Tesseract-OCR
在这里插入图片描述
将Tesseract-OCR文件夹添加到系统环境变量path当中
我的安装位置是G:\python\Tesseract-OCR,打开系统环境变量,在path中添加地址。在cmd中输入tesseract -v,看能否看到tesseract的版本号
在这里插入图片描述
在这里插入图片描述

代码测试

简单测试代码

from PIL import Image
import pytesseract

image = Image.open('img/4.png')
result = pytesseract.image_to_string(image)

print(result)

需要识别的图片:
在这里插入图片描述
运行结果:
在这里插入图片描述



验证码识别效率

经过测试后,使用pytesseract来对验证码图片进行识别的效率较低,可能经过训练后的集会好一些
参考:

image = Image.open('img/5.png')
image = image.convert('L')   #转化为灰度图
threshold = 200    #设定的二值化阈值

table = []      #table是设定的一个表,下面的for循环可以理解为一个规则,小于阈值的,就设定为0,大于阈值的,就设定为1
for i in range(256):
    if i < threshold:
        table.append(0)
    else:
        table.append(1)

image = image.point(table,'1')  #对灰度图进行二值化处理,按照table的规则(也就是上面的for循环)
image.show()

result = pytesseract.image_to_string(image)

print(result)

猜你喜欢

转载自blog.csdn.net/qq_36171287/article/details/114634098