最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Python3实现的简单验证码识别功能示例

来源:动视网 责编:小采 时间:2020-11-27 14:21:50
文档

Python3实现的简单验证码识别功能示例

Python3实现的简单验证码识别功能示例:这篇文章主要介绍了Python3实现的简单验证码识别功能,涉及Python针对验证码图片识别处理相关操作技巧,需要的朋友可以参考下本文实例讲述了Python3实现的简单验证码识别功能。分享给大家供大家参考,具体如下:这次的需求是自动登录某机构网站, 其验证码很具
推荐度:
导读Python3实现的简单验证码识别功能示例:这篇文章主要介绍了Python3实现的简单验证码识别功能,涉及Python针对验证码图片识别处理相关操作技巧,需要的朋友可以参考下本文实例讲述了Python3实现的简单验证码识别功能。分享给大家供大家参考,具体如下:这次的需求是自动登录某机构网站, 其验证码很具


这篇文章主要介绍了Python3实现的简单验证码识别功能,涉及Python针对验证码图片识别处理相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python3实现的简单验证码识别功能。分享给大家供大家参考,具体如下:

这次的需求是自动登录某机构网站, 其验证码很具特色, 很适合做验证码识别入门demo, 先贴主要代码, 其中图片对比使用了编辑距离算法, 脚本使用了pillow库

from PIL import Image
import requests
import re
splitter = re.compile(r'd{30}') # 分割二值化后的图片
# distance('11110000', '00000000')
# 比较两个字符串有多少位不同, 返回不同的位数
def distance(string1, string2):
 d_str1 = len(string1)
 d_str2 = len(string2)
 d_arr = [[0] * d_str2 for i in range(d_str1)]
 for i in range(d_str1):
 for j in range(d_str2):
 if string1[i] == string2[j]:
 if i == 0 and j == 0:
 d_arr[i][j] = 0
 elif i != 0 and j == 0:
 d_arr[i][j] = d_arr[i - 1][j]
 elif i == 0 and j != 0:
 d_arr[i][j] = d_arr[i][j - 1]
 else:
 d_arr[i][j] = d_arr[i - 1][j - 1]
 else:
 if i == 0 and j == 0:
 d_arr[i][j] = 1
 elif i != 0 and j == 0:
 d_arr[i][j] = d_arr[i - 1][j] + 1
 elif i == 0 and j != 0:
 d_arr[i][j] = d_arr[i][j - 1] + 1
 else:
 d_arr[i][j] = min(d_arr[i][j - 1], d_arr[i - 1][j], d_arr[i - 1][j - 1]) + 1
 current = max(d_arr[d_str1 - 1][d_str2 - 1], abs(d_str2 - d_str1))
 # print("Levenshtein Distance is",current)
 # print(current)
 return current
# 去除字符串里面连续的1
def no_one(string):
 n_arr = splitter.findall(string)
 n_arr = filter(lambda each_str: each_str != '111111111111111111111111111111', n_arr)
 n_result = ''
 for n_each in n_arr:
 n_result += str(n_each)
 return n_result
opener = requests.session()
res = opener.get('http://60.211.254.236:8402/Ajax/ValidCodeImg.ashx').content
with open('verify.gif', 'wb') as v:
 v.write(res)
img = Image.open('verify.gif')
img = img.convert('L')
size = img.size
# img = img.point(table, '1')
img_arr = img.load()
# for x in range(size[0]):
# for y in range(size[1]):
# if img_arr[x, y] > 210:
# img_arr[x, y] = 1
# else:
# img_arr[x, y] = 0
# img.save('after.gif')
inc = 0
str1 = ''
str2 = ''
str3 = ''
cur_str = ''
for x in range(size[0]):
 for y in range(size[1]):
 if img_arr[x, y] > 210:
 cur_str += '1'
 else:
 cur_str += '0'
 # print(img_arr[i, j], end='')
 # cur_str += str(img_arr[x, y])
 inc += 1
 # if inc % 18 == 0:
 # print('
----')
 # else:
 # print('')
 if inc == 18:
 str1 = cur_str
 cur_str = ''
 elif inc == 36:
 str2 = cur_str
 cur_str = ''
 elif inc == 54:
 str3 = cur_str
 cur_str = ''
str1 = str1[:-60]
str2 = str2[:-60]
str3 = str3[:-60]
str1 = no_one(str1)
str2 = no_one(str2)
str3 = no_one(str3)
str1 = str1.strip('1')
str2 = str2.strip('1')
str3 = str3.strip('1')
# print(str1)
# print(str3)
with open('./dict/plus') as plus:
 with open('./dict/minus') as minus:
 p = plus.read()
 m = minus.read()
 is_add = 1 if distance(p, str2) < distance(m, str2) else 0
arr1 = []
arr3 = []
for each in range(1, 10):
 with open('./dict/{}'.format(each)) as f:
 ff = f.read()
 arr1.append([each, distance(ff, str1)])
 arr3.append([each, distance(ff, str3)])
arr1 = sorted(arr1, key=lambda item: item[1])
arr3 = sorted(arr3, key=lambda item: item[1])
result = arr1[0][0] + arr3[0][0] if is_add else arr1[0][0] - arr3[0][0]
print(result)
# login_url = 'http://60.211.254.236:8402/Ajax/Login.ashx?Method=G3_Login'
# login_data = {
# 'loginname': usn,
# 'password': pwd,
# 'validcode': result,
#
# }
# opener.get(login_url, login_data)

文档

Python3实现的简单验证码识别功能示例

Python3实现的简单验证码识别功能示例:这篇文章主要介绍了Python3实现的简单验证码识别功能,涉及Python针对验证码图片识别处理相关操作技巧,需要的朋友可以参考下本文实例讲述了Python3实现的简单验证码识别功能。分享给大家供大家参考,具体如下:这次的需求是自动登录某机构网站, 其验证码很具
推荐度:
标签: 验证 识别 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top