图形验证码识别
介绍
- 图形验证码最早使用,现在也很常见,一般是由4位字母或数字组成
- 例:
代码实现
# -*- coding:utf-8 -*-
import tesserocr
from PIL import Image
image = Image.open("imgs/CheckCode5.jpg")
result = tesserocr.image_to_text(image)
print(result)
结果:
- 从结果来看,得出的结果和实际结果有偏差,这是因为验证码内的多余线条干扰图片识别。对于这种情况,需要对验证码图片做一些额外的处理,如转灰度,二值化等操作。
转灰度,二值化操作
# -*- coding:utf-8 -*-
from PIL import Image
image = Image.open("imgs/CheckCode5.jpg")
# 图片转化为灰度图像
image = image.convert("L")
# 设置阈值
threshold = 130
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
# 图片二值化
image = image.point(table, "1")
image.save("imgs/aa.jpg")
图片转化为:
- 对新生成的图片重新识别验证码
代码:
# -*- coding:utf-8 -*-
import tesserocr
from PIL import Image
image = Image.open("imgs/aa.jpg")
result = tesserocr.image_to_text(image)
print(result)
运行结果: