需要识别的验证码图像,其中包含 4 个字符(数字字母)
思路
灰度化:将图像转为灰度图像,即一个像素只有一种色阶(有 256 种不同灰度),值为 0 表示像素最黑,值为 255 表示像素最白。
二值化:将图像转为黑白图像,即一个像素只有黑白两种状态,不是黑就是白,没有灰色,值为 0 表示像素最黑,值为 1 表示像素最白.
图像转字符串:利用工具将图像中的字符串识别出来
前面两步都是对图像进行识别前处理,目的是提高计算机识别的准确度,毕竟计算机本身不能理解图像,一个像素值的微小变化都有可能导致错误识别
代码
import tesserocr
from PIL import Image
image = Image.open("87FW.jpg")
# 灰度化
image = image.convert("L")
# 二值化,传入的是数字 1,默认阈值是 127。一般不推荐使用,因为不够灵活
# image = image.convert("1")
# 另一种二值化。自定义灰度,将灰度值在 115 以上的设置 1(白色),其它设为 0(黑色),相当于将阈值设置成了 115
table = [1] * 256
for i in range(256):
table[i] = 0
if i > 115:
break
image = image.point(table, "1")
print(tesserocr.image_to_text(image))
打