python验证码的识别

Posted 智科顾某

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python验证码的识别相关的知识,希望对你有一定的参考价值。

 

 

 

 

 可以看到基本上是三种颜色,背景占比最多,其次就是验证码

我们可以把图片灰度化 去除最多的背景颜色 剩下最多的就是想得到的验证码了


灰度化

file = r"D:/photo/8.png"
image = Image.open(file)
img = image.convert('L')   # 灰度化


查找灰度图片最多的灰度

先将图片像素放入数组中

im2=[]

cols,rows = img.size # 图像大小

for x in range(0,rows):

    for y in range(0,cols):

        img_array = np.array(img)

        v = img_array[x,y] # 获取该点像素值

        im2.append(v)#加入数组

a=max(im2, key=im2.count)


完整代码

import pytesseract

from PIL import Image

import numpy as np

import cv2 as cv

import cv2

import pytesseract

file = r"D:/photo/8.png"

image = Image.open(file)

img = image.convert('L') # 灰度化

im2=[]

cols,rows = img.size 

for x in range(0,rows):

    for y in range(0,cols):

        img_array = np.array(img)

        v = img_array[x,y] # 获取该点像素值

        im2.append(v)#加入数组

 

while 0 in im2:

    im2.remove(0)#删除灰度0

 

a=max(im2, key=im2.count)#出现最多的数字 背景颜色

while a in im2:

    im2.remove(a)

print(im2)

a=max(im2, key=im2.count)

print(a)

table = []

for i in range(256):

    if i ==a:

        table.append(1)

    else:

        table.append(0)

photo = img.point(table, '1') #图片二值化

 

 

photo.save('02.jpg')

image = Image.open('02.jpg')

# 解析图片,lang='chi_sim'表示识别简体中文,默认为English

# 如果是只识别数字,可再加上参数config='--psm 6 --oem 3 -c tessedit_char_whitelist=0123456789'

content = pytesseract.image_to_string(image,config='--psm 6 --oem 3 -c tessedit_char_whitelist=0123456789')

print(content)

 

小白第一次写 有更好的方法请大佬指教😳

以上是关于python验证码的识别的主要内容,如果未能解决你的问题,请参考以下文章

python对动态验证码滑动验证码的降噪和识别

python对动态验证码滑动验证码的降噪和识别

python爬虫中图形验证码的处理

python验证码的识别

Python3网络爬虫实战-44点触点选验证码的识别

验证码的爬取和识别详解