图形验证码一般是4位字母或者数字。这类验证码利用OCR识别技术识别。需要python库为tesserocr,其需要tesseract的支持,后者下载链接:https://github.com/tesseract-ocr/tesseract
下载完成后,安装过程中,需要注意,要勾选:Additional language data download 选项来安装 OCR 识别支持的语言包。
接下来,可以使用pip安装tesserocr:pip install tesserocr pillow
检验安装:
import tesserocr
from PIL import Image
image = Image.open('test.png')
print(tesserocr.image_to_text(image))
识别测试:
import tesserocr
from PIL import Image
image = Image.open('code.jpg') #建立Image对象
result=tesserocr.image_to_text(image) #调用image_to_text方法,传入image对象
print(result)
# 简便方法如下,但效果不如上面的
import tesserocr
print(tesserocr.file_to_text('code.jpg'))
遇到验证码图片中存在多余的线条,会对识别结果产生干扰,所以要对图片进行转灰度、二值化等操作。
就如上面这个验证码:
import tesserocr
from PIL import Image
image=image.convert('L') # 传参L,图像转化为灰度图像
threshold = 80 # 设置二值化阈值为80;如若不设置,默认为127,
table=[]
for i in range(256):
if i<threshold:
table.append(0)
else:
table.append(1)
# 类似于数组,大于阈值者,标为1;否则标为0
image=ima