教务系统现在使用了验证码,原来的抢课脚本不能用了,于是最近写了一个新的抢课脚本
本文是关于如何对验证码进行识别,具体抢课的功能代码请点击上面的链接查看
环境
1 2 3
| python3 tesseract pytesseract
|
验证码特点

- 宽 68px
- 高 21px
- 有边框
- 有噪点
- 字体颜色不一
思路
- 直接用 pytesseract 进行识别的话效果非常差
- 对于噪点和颜色不一,采用像素二值化的方法,即将灰度值高的点变为黑色,灰度值低的点变为白色
具体代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| im = Image.open('code.jpg') im = im.convert('L')
im = im.point(lambda x:255 if x > 128 else x)
im = im.point(lambda x:0 if x < 255 else 255)
box = (2, 2, im.size[0] - 2, im.size[1] - 2) im = im.crop(box)
verify_code = pytesseract.image_to_string(im, lang="eng", config="-psm 7").replace(']', 'J')
|
效果


链接
tesseract
pytesseract