爬虫时遇到图形验证码的情况时,就需要识别验证码了,以下是识别简单的图形验证码的方法。threshold可以更改以提高准确率。
from PIL import Image
import tesserocr
import os
RIGHT_NUMBER = 0
images_list = os.listdir('./' + '图形验证码') # 从知网上下载验证码放在本地文件夹,取名‘图形验证码’。获取文件夹中图片列表
for index, image in enumerate(images_list):
img = Image.open('图形验证码/' + image) # 图形验证码下的图片文件
img = img.convert('L') # 转灰度
threshold = 129 # 阈值,可以更换,以提高准确率
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
img = img.point(table, '1') # 二值化处理
result = tesserocr.image_to_text(img) # xxxx\n 有个换行符
if result[:-1] == image[:-4]: # result[:-1] !'\n'是一个字符
print(index, image[:-4], '验证结果:', result[:-1], 'T')
RIGHT_NUMBER += 1
else:
print(index, image[:-4], '验证结果:', result[:-1], 'F')
print('准确率:{:.2%}'.format((RIGHT_NUMBER/len(images_list))))
总体来说,准确率不高。有哪位大神路过有高招的话,告知一声哈~
——————————————————————————————————————————————
微信关注号:python爬虫机器学习深度学习