省略各种tesseract和各种包的安装,默认有python基础
需要有java环境以便操作训练工具jTessboxeditor,jdk和训练辅助工具的安装此处不讨论.
本人使用ubuntu18.04 环境,训练工具是在windows虚拟机上安装java后使用的
1. 得到验证码图片
发现安居客的验证码较为简单,这里借用安居客验证码接口下载验证码,代码仅供参考,验证接口也许以后会变,这里主要阐述方法
#num =你想获取的验证码数目
def gen_captcha_from_url(num):
# https://login.anjuke.com/general/captcha?timestamp=15580192349965467 安居客
if not os.path.exists('code_pic/'):
os.mkdir('code_pic/')
pic = []
for i in range(0, num):
fake_timestamp = get_random_string(8, 8, 0, 0)
url = 'https://login.anjuke.com/general/captcha?timestamp=' + fake_timestamp
print(url)
response = requests.get(url)
filename = 'code_pic/' + str(i) + '.jpg'
pic.append(filename)
with open(filename, 'wb')as f:
f.write(response.content)
return pic
2. 将图片二值化处理
由于得到的验证码图片为彩色内容,需要将其进行二值化处理,形成黑白影像,以便tesseract 识别
def two_value(pic):
img = Image.open(pic)
# 模式L”为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
Img = img.convert('L')
Img.save(pic)
# 自定义灰度界限,大于这个值为黑色,小于这个值为白色
threshold = 200
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
# 图片二值化
photo = Img.point(table, '1')
photo.save(pic)
3.先自己手动识别一遍,填入人工处理的结果(非必须,只是为了方便计算识别率)
4. 将其转换成tiff格式的文件,并调用tesseract进行识别
#