废话不多说,先贴代码
# -*- coding=utf-8 -*-
# software: components
# datetime:2020/1/19 12:33 下午
from keras.models import load_model
import numpy as np
from scipy import misc
from keras.applications.xception import preprocess_input
from config import IMG_SIZE, MODEL, LETTER_LIST
#IMG_SIZE = (60, 160)
#MODEL = 'weibo.h5'
#LETTER_LIST = [chr(i) for i in range(48, 58)] + [chr(i) for i in range(65, 91)]
img_size = IMG_SIZE
model = load_model(MODEL)
def get_img_data(img):
im = misc.imread(img)
im = im[:, :, :3]
im = misc.imresize(im, img_size)
x = preprocess_input(np.array([im]).astype(float))
return x
#img:本地图片路径
def predict(img):
x = get_img_data(img)
z = model.predict(x)
z = np.array([i.argmax(axis=1) for i in z]).T
result = z.tolist()
v = []
for i in range(len(result)):
for j in result[i]:
v.append(LETTER_LIST[j])
return ''.join(v)
使用该模型时,需要先将验证码下载到本地并保存,然后调用predict方法即可得到验证码字符
我在训练模型的时候使用了500张打标签的图片,最终最差的时候是每三张验证码成功一次,大部分时候是能识别的,有一些识别不到的验证码肉眼去识别其实也很麻烦,当然想要识别率更高的话,各位同学就多弄些微博验证码,这样训练出来的模型会更好。
好了,到这里微博验证码识别系列教程就已经全部完结,各位同学都可以去实际操作了
另外大家可以试试用这种办法去破解下其他网站的验证码(我还没试过)