VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Python验证码自动识别(6)

 

切割粘连字符代码:

1
2
3
4
5
6
7
8
9
10
11
12
def cutting_img(im,im_position,img,xoffset = 1,yoffset = 1):
  filename =  './out_img/' + img.split('.')[0]
  # 识别出的字符个数
  im_number = len(im_position[1])
  # 切割字符
  for in range(im_number):
    im_start_X = im_position[1][i][0- xoffset
    im_end_X = im_position[1][i][1+ xoffset
    im_start_Y = im_position[2][i][0- yoffset
    im_end_Y = im_position[2][i][1+ yoffset
    cropped = im[im_start_Y:im_end_Y, im_start_X:im_end_X]
    cv2.imwrite(filename + '-cutting-' + str(i) + '.jpg',cropped)

效果:

识别

识别用的是typesseract库,主要识别一行字符和单个字符时的参数设置,识别中英文的参数设置,代码很简单就一行,我这里大多是filter文件的操作

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 识别验证码
cutting_img_num = 0
for file in os.listdir('./out_img'):
    str_img = ''
    if fnmatch(file'%s-cutting-*.jpg' % img_name.split('.')[0]):
      cutting_img_num += 1
for in range(cutting_img_num):
    try:
      file = './out_img/%s-cutting-%s.jpg' % (img_name.split('.')[0], i)
      # 识别字符
      str_img = str_img + image_to_string(Image.open(file),lang = 'eng', config='-psm 10'#单个字符是10,一行文本是7
    except Exception as err:
      pass
print('切图:%s' % cutting_img_num)
print('识别为:%s' % str_img)

相关教程