用tesseract-ocr 识别率不高,想要自己训练字体
这里用的是中国知网注册页面的验证码
实现思路,图片二值化后,遍历每一个像素点找到起始像素,向上下左右寻找相邻像素直至结束。有个问题就是若两个字符挨着就会把全部相邻的字符都找到
加了个简单的判断,限制字体长度
然而效果不是很好,如果是两个长度较短的字符相邻还是没有用,w字符容易丢失像素,没有太好的解决办法。另一个解决方法把像素点过多的图片去除,剩下的图片可以用来训练字体
# 下载验证码
import requests
import os
path = os.path.dirname(__file__)
for i in range(10):
url = 'https://my.cnki.net/Register/CheckCode.aspx?id=1605429917005'
response = requests.get(url)
file_path = path + '/jpg/{}.jpg'.format(i)
with open(file_path,'wb') as f:
f.write(response.content)
图片处理
from PIL import Image
import sys
import os
sys.setrecursionlimit(1000000)
pixel_list = []
all_pixel_list = []
#二值化
def Binarization(image):
threshold = 160
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
image = image.point(table, '1'