验证码识别
在python爬虫的使用过程中,有可能会遇到界面需要登陆并输入图片验证码的情况
在这种情况下,可以人工进行识别,但是步骤太过繁琐,所以可以采用机器识别
在之前的文章python爬虫系列——开始入土(三)中也提到过有关遇到验证码的情况
使用JavaScript去进行图片文字识别时也有使用:JavaScript 图片转文字,文字转语音
本文章主要介绍使用pytesseract
如何对验证码图片中的文字进行识别
pytesseract安装
使用pip install pytesseract
语句可以对pytesseract进行安装
Pillow库
光是安装pytesseract库还不足够,还需要安装Pillow库
- 安装命令:
pip install pillow
- 导入py:
from PIL import Image
Pillow 是 PIL 的替代版本,PIL 软件包提供了基本的图像处理功能,如:改变图像大小,旋转图像,图像格式转换,色场空间转换,图像增强,直方图处理,插值和滤波等等。尽管Pillow是PIL的一个派生分支,但如今已经发展成为比PIL本身更具活力的图像处理库。pillow可以说已经取代了PIL,将其封装成python的库
tesseract-ocr
OCR(Optical Character Recognition):光学字符识别,是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。
tesseract-ocr属于比较老的开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后由Google进行改进、修改bug、优化,重新发布。
目前tesseract-ocr识别效率可能较低一些,但是由于是开源并且可以进行训练,市场上使用tesseract-ocr还是较为广泛的。
推荐的一些下载地址:
- https://digi.bib.uni-mannheim.de/tesseract/
- https://gitee.com/mirrors/Tesseract-OCR?_from=gitee_search
- https://github.com/tesseract-ocr/tesseract
- https://download.csdn.net/download/qq_36171287/15713568
安装方式
点击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
来对验证码图片进行识别的效率较低,可能经过训练后的集会好一些
参考:
- https://blog.csdn.net/weixin_44750991/article/details/105660646
- https://www.cnblogs.com/fppblog/p/11804196.html
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)