Python3 +scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

感謝做者分享-http://bjbsair.com/2020-04-07/tech-info/30740.htmlhtml

圖片驗證碼基本上是有數字和字母或者數字或者字母組成的字符串,而後經過一些干擾線的繪製而造成圖片驗證碼。app

例如:知網的註冊就有圖片驗證碼scrapy

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

首先咱們須要獲取驗證碼圖片,經過開發者工具咱們能夠獲得驗證碼url連接工具

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

其次就是經過Pillow類庫和tesserocr進行識別,代碼以下:學習

# -*- coding:utf-8 -*-  
import tesserocr  
from PIL import Image  
import requests  
  
# 經過url連接獲取驗證碼圖片,並寫入本地文件夾裏  
def get_image(path,url):  
    """  
    :param path: 文件夾路徑  
    :param url:  驗證碼url連接  
    """  
    respon = requests.get(url=url)      # 請求驗證碼url  
    with open(path,"wb") as file:  
        file.write(respon.content)      # 將驗證碼寫到本地  
  
  
# 因爲驗證碼圖片過小,須要對驗證碼圖片放大處理,以便識別  
def reset_image_size(image_path):  
    """  
    :param image_path: 圖片所在的路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)   # 打開圖片  
    pic_resize = 5                      # 設置圖片放大或者縮小倍數  
    (x, y) = image.size                 # 獲取圖片的大小  
    x_s = int(x * pic_resize)           # 放大5倍(可調)  
    y_s = int(y * pic_resize)           # 放大5倍(可調)  
    out = image.resize((x_s, y_s), Image.ANTIALIAS)     # ANTIALIAS表示高質量圖片  
    out.save(image_path)  
  
  
# 讀取驗證碼圖片文本  
def read_image(image_path):  
    """  
    :param image_path: 驗證碼圖片路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)       # 打開驗證碼圖片  
    image = image.convert('L')              # 將驗證碼圖片轉換爲灰度圖(L表示灰度圖)  
    threshold = 127                         # 設置灰度圖二值化閾值  
    table = []  
    for i in range(256):                    # 像素爲256  
        if i < threshold:  
            table.append(0)  
        else:  
            table.append(1)  
    image = image.point(table, '1')         # 二值化處理後的副本(1表示二值化)  
    image.show()  
    result = tesserocr.image_to_text(image) # 驗證碼圖片轉換爲文本  
    return result  
  
  
# 驗證碼識別信息髒數據處理  
def VerifInfo(result):  
    """  
    :param result: 驗證碼圖片經過初步識別後獲得的髒數據  
    :return:  
    """  
    verif_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"  
    verif_list = []  
    for i in result:  
        if i in verif_str:  
            verif_list.append(i)  
    return "".join(verif_list)  
  
  
  
if __name__ == '__main__':  
    img_path = "D:\photo\image"                                 # 文件夾目錄  
    img_path = img_path + "\VerificationCode.png"               # 驗證碼圖片所在的目錄及名稱  
    img_url = "http://my.cnki.net/elibregister/CheckCode.aspx"  # 驗證碼url  
    get_image(img_path,img_url)                                 # 獲取驗證碼圖片  
    reset_image_size(img_path)                                  # 調整驗證碼圖片大小  
    result = read_image(img_path)                               # 讀取驗證碼圖片內容  
    verif_info = VerifInfo(result)                              # 驗證碼內容數據處理  
    verif_len  = len(verif_info)                                # 驗證碼識別長度  
    if verif_len == 4 and verif_info:  
        print(verif_info)  
    else:  
        pass

最後就是看看識別的效果吧。前者爲原始驗證碼圖片,後者是通過二值化處理的圖片。url

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

輸出的結果爲:FZug.net

顯然使用tesserocr識別仍是有偏差的,之後能夠用深度學習的方式訓練處一個模型,能夠提升識別效率,後期會跟進實現的。感謝做者分享-http://bjbsair.com/2020-04-07/tech-info/30740.htmlcode

圖片驗證碼基本上是有數字和字母或者數字或者字母組成的字符串,而後經過一些干擾線的繪製而造成圖片驗證碼。htm

例如:知網的註冊就有圖片驗證碼blog

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

首先咱們須要獲取驗證碼圖片,經過開發者工具咱們能夠獲得驗證碼url連接

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

其次就是經過Pillow類庫和tesserocr進行識別,代碼以下:

# -*- coding:utf-8 -*-  
import tesserocr  
from PIL import Image  
import requests  
  
# 經過url連接獲取驗證碼圖片,並寫入本地文件夾裏  
def get_image(path,url):  
    """  
    :param path: 文件夾路徑  
    :param url:  驗證碼url連接  
    """  
    respon = requests.get(url=url)      # 請求驗證碼url  
    with open(path,"wb") as file:  
        file.write(respon.content)      # 將驗證碼寫到本地  
  
  
# 因爲驗證碼圖片過小,須要對驗證碼圖片放大處理,以便識別  
def reset_image_size(image_path):  
    """  
    :param image_path: 圖片所在的路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)   # 打開圖片  
    pic_resize = 5                      # 設置圖片放大或者縮小倍數  
    (x, y) = image.size                 # 獲取圖片的大小  
    x_s = int(x * pic_resize)           # 放大5倍(可調)  
    y_s = int(y * pic_resize)           # 放大5倍(可調)  
    out = image.resize((x_s, y_s), Image.ANTIALIAS)     # ANTIALIAS表示高質量圖片  
    out.save(image_path)  
  
  
# 讀取驗證碼圖片文本  
def read_image(image_path):  
    """  
    :param image_path: 驗證碼圖片路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)       # 打開驗證碼圖片  
    image = image.convert('L')              # 將驗證碼圖片轉換爲灰度圖(L表示灰度圖)  
    threshold = 127                         # 設置灰度圖二值化閾值  
    table = []  
    for i in range(256):                    # 像素爲256  
        if i < threshold:  
            table.append(0)  
        else:  
            table.append(1)  
    image = image.point(table, '1')         # 二值化處理後的副本(1表示二值化)  
    image.show()  
    result = tesserocr.image_to_text(image) # 驗證碼圖片轉換爲文本  
    return result  
  
  
# 驗證碼識別信息髒數據處理  
def VerifInfo(result):  
    """  
    :param result: 驗證碼圖片經過初步識別後獲得的髒數據  
    :return:  
    """  
    verif_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"  
    verif_list = []  
    for i in result:  
        if i in verif_str:  
            verif_list.append(i)  
    return "".join(verif_list)  
  
  
  
if __name__ == '__main__':  
    img_path = "D:\photo\image"                                 # 文件夾目錄  
    img_path = img_path + "\VerificationCode.png"               # 驗證碼圖片所在的目錄及名稱  
    img_url = "http://my.cnki.net/elibregister/CheckCode.aspx"  # 驗證碼url  
    get_image(img_path,img_url)                                 # 獲取驗證碼圖片  
    reset_image_size(img_path)                                  # 調整驗證碼圖片大小  
    result = read_image(img_path)                               # 讀取驗證碼圖片內容  
    verif_info = VerifInfo(result)                              # 驗證碼內容數據處理  
    verif_len  = len(verif_info)                                # 驗證碼識別長度  
    if verif_len == 4 and verif_info:  
        print(verif_info)  
    else:  
        pass

最後就是看看識別的效果吧。前者爲原始驗證碼圖片,後者是通過二值化處理的圖片。

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

輸出的結果爲:FZug

顯然使用tesserocr識別仍是有偏差的,之後能夠用深度學習的方式訓練處一個模型,能夠提升識別效率,後期會跟進實現的。感謝做者分享-http://bjbsair.com/2020-04-07/tech-info/30740.html

圖片驗證碼基本上是有數字和字母或者數字或者字母組成的字符串,而後經過一些干擾線的繪製而造成圖片驗證碼。

例如:知網的註冊就有圖片驗證碼

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

首先咱們須要獲取驗證碼圖片,經過開發者工具咱們能夠獲得驗證碼url連接

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

其次就是經過Pillow類庫和tesserocr進行識別,代碼以下:

# -*- coding:utf-8 -*-  
import tesserocr  
from PIL import Image  
import requests  
  
# 經過url連接獲取驗證碼圖片,並寫入本地文件夾裏  
def get_image(path,url):  
    """  
    :param path: 文件夾路徑  
    :param url:  驗證碼url連接  
    """  
    respon = requests.get(url=url)      # 請求驗證碼url  
    with open(path,"wb") as file:  
        file.write(respon.content)      # 將驗證碼寫到本地  
  
  
# 因爲驗證碼圖片過小,須要對驗證碼圖片放大處理,以便識別  
def reset_image_size(image_path):  
    """  
    :param image_path: 圖片所在的路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)   # 打開圖片  
    pic_resize = 5                      # 設置圖片放大或者縮小倍數  
    (x, y) = image.size                 # 獲取圖片的大小  
    x_s = int(x * pic_resize)           # 放大5倍(可調)  
    y_s = int(y * pic_resize)           # 放大5倍(可調)  
    out = image.resize((x_s, y_s), Image.ANTIALIAS)     # ANTIALIAS表示高質量圖片  
    out.save(image_path)  
  
  
# 讀取驗證碼圖片文本  
def read_image(image_path):  
    """  
    :param image_path: 驗證碼圖片路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)       # 打開驗證碼圖片  
    image = image.convert('L')              # 將驗證碼圖片轉換爲灰度圖(L表示灰度圖)  
    threshold = 127                         # 設置灰度圖二值化閾值  
    table = []  
    for i in range(256):                    # 像素爲256  
        if i < threshold:  
            table.append(0)  
        else:  
            table.append(1)  
    image = image.point(table, '1')         # 二值化處理後的副本(1表示二值化)  
    image.show()  
    result = tesserocr.image_to_text(image) # 驗證碼圖片轉換爲文本  
    return result  
  
  
# 驗證碼識別信息髒數據處理  
def VerifInfo(result):  
    """  
    :param result: 驗證碼圖片經過初步識別後獲得的髒數據  
    :return:  
    """  
    verif_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"  
    verif_list = []  
    for i in result:  
        if i in verif_str:  
            verif_list.append(i)  
    return "".join(verif_list)  
  
  
  
if __name__ == '__main__':  
    img_path = "D:\photo\image"                                 # 文件夾目錄  
    img_path = img_path + "\VerificationCode.png"               # 驗證碼圖片所在的目錄及名稱  
    img_url = "http://my.cnki.net/elibregister/CheckCode.aspx"  # 驗證碼url  
    get_image(img_path,img_url)                                 # 獲取驗證碼圖片  
    reset_image_size(img_path)                                  # 調整驗證碼圖片大小  
    result = read_image(img_path)                               # 讀取驗證碼圖片內容  
    verif_info = VerifInfo(result)                              # 驗證碼內容數據處理  
    verif_len  = len(verif_info)                                # 驗證碼識別長度  
    if verif_len == 4 and verif_info:  
        print(verif_info)  
    else:  
        pass

最後就是看看識別的效果吧。前者爲原始驗證碼圖片,後者是通過二值化處理的圖片。

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

輸出的結果爲:FZug

顯然使用tesserocr識別仍是有偏差的,之後能夠用深度學習的方式訓練處一個模型,能夠提升識別效率,後期會跟進實現的。感謝做者分享-http://bjbsair.com/2020-04-07/tech-info/30740.html

圖片驗證碼基本上是有數字和字母或者數字或者字母組成的字符串,而後經過一些干擾線的繪製而造成圖片驗證碼。

例如:知網的註冊就有圖片驗證碼

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

首先咱們須要獲取驗證碼圖片,經過開發者工具咱們能夠獲得驗證碼url連接

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

其次就是經過Pillow類庫和tesserocr進行識別,代碼以下:

# -*- coding:utf-8 -*-  
import tesserocr  
from PIL import Image  
import requests  
  
# 經過url連接獲取驗證碼圖片,並寫入本地文件夾裏  
def get_image(path,url):  
    """  
    :param path: 文件夾路徑  
    :param url:  驗證碼url連接  
    """  
    respon = requests.get(url=url)      # 請求驗證碼url  
    with open(path,"wb") as file:  
        file.write(respon.content)      # 將驗證碼寫到本地  
  
  
# 因爲驗證碼圖片過小,須要對驗證碼圖片放大處理,以便識別  
def reset_image_size(image_path):  
    """  
    :param image_path: 圖片所在的路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)   # 打開圖片  
    pic_resize = 5                      # 設置圖片放大或者縮小倍數  
    (x, y) = image.size                 # 獲取圖片的大小  
    x_s = int(x * pic_resize)           # 放大5倍(可調)  
    y_s = int(y * pic_resize)           # 放大5倍(可調)  
    out = image.resize((x_s, y_s), Image.ANTIALIAS)     # ANTIALIAS表示高質量圖片  
    out.save(image_path)  
  
  
# 讀取驗證碼圖片文本  
def read_image(image_path):  
    """  
    :param image_path: 驗證碼圖片路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)       # 打開驗證碼圖片  
    image = image.convert('L')              # 將驗證碼圖片轉換爲灰度圖(L表示灰度圖)  
    threshold = 127                         # 設置灰度圖二值化閾值  
    table = []  
    for i in range(256):                    # 像素爲256  
        if i < threshold:  
            table.append(0)  
        else:  
            table.append(1)  
    image = image.point(table, '1')         # 二值化處理後的副本(1表示二值化)  
    image.show()  
    result = tesserocr.image_to_text(image) # 驗證碼圖片轉換爲文本  
    return result  
  
  
# 驗證碼識別信息髒數據處理  
def VerifInfo(result):  
    """  
    :param result: 驗證碼圖片經過初步識別後獲得的髒數據  
    :return:  
    """  
    verif_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"  
    verif_list = []  
    for i in result:  
        if i in verif_str:  
            verif_list.append(i)  
    return "".join(verif_list)  
  
  
  
if __name__ == '__main__':  
    img_path = "D:\photo\image"                                 # 文件夾目錄  
    img_path = img_path + "\VerificationCode.png"               # 驗證碼圖片所在的目錄及名稱  
    img_url = "http://my.cnki.net/elibregister/CheckCode.aspx"  # 驗證碼url  
    get_image(img_path,img_url)                                 # 獲取驗證碼圖片  
    reset_image_size(img_path)                                  # 調整驗證碼圖片大小  
    result = read_image(img_path)                               # 讀取驗證碼圖片內容  
    verif_info = VerifInfo(result)                              # 驗證碼內容數據處理  
    verif_len  = len(verif_info)                                # 驗證碼識別長度  
    if verif_len == 4 and verif_info:  
        print(verif_info)  
    else:  
        pass

最後就是看看識別的效果吧。前者爲原始驗證碼圖片,後者是通過二值化處理的圖片。

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

輸出的結果爲:FZug

顯然使用tesserocr識別仍是有偏差的,之後能夠用深度學習的方式訓練處一個模型,能夠提升識別效率,後期會跟進實現的。感謝做者分享-http://bjbsair.com/2020-04-07/tech-info/30740.html

圖片驗證碼基本上是有數字和字母或者數字或者字母組成的字符串,而後經過一些干擾線的繪製而造成圖片驗證碼。

例如:知網的註冊就有圖片驗證碼

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

首先咱們須要獲取驗證碼圖片,經過開發者工具咱們能夠獲得驗證碼url連接

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

其次就是經過Pillow類庫和tesserocr進行識別,代碼以下:

# -*- coding:utf-8 -*-  
import tesserocr  
from PIL import Image  
import requests  
  
# 經過url連接獲取驗證碼圖片,並寫入本地文件夾裏  
def get_image(path,url):  
    """  
    :param path: 文件夾路徑  
    :param url:  驗證碼url連接  
    """  
    respon = requests.get(url=url)      # 請求驗證碼url  
    with open(path,"wb") as file:  
        file.write(respon.content)      # 將驗證碼寫到本地  
  
  
# 因爲驗證碼圖片過小,須要對驗證碼圖片放大處理,以便識別  
def reset_image_size(image_path):  
    """  
    :param image_path: 圖片所在的路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)   # 打開圖片  
    pic_resize = 5                      # 設置圖片放大或者縮小倍數  
    (x, y) = image.size                 # 獲取圖片的大小  
    x_s = int(x * pic_resize)           # 放大5倍(可調)  
    y_s = int(y * pic_resize)           # 放大5倍(可調)  
    out = image.resize((x_s, y_s), Image.ANTIALIAS)     # ANTIALIAS表示高質量圖片  
    out.save(image_path)  
  
  
# 讀取驗證碼圖片文本  
def read_image(image_path):  
    """  
    :param image_path: 驗證碼圖片路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)       # 打開驗證碼圖片  
    image = image.convert('L')              # 將驗證碼圖片轉換爲灰度圖(L表示灰度圖)  
    threshold = 127                         # 設置灰度圖二值化閾值  
    table = []  
    for i in range(256):                    # 像素爲256  
        if i < threshold:  
            table.append(0)  
        else:  
            table.append(1)  
    image = image.point(table, '1')         # 二值化處理後的副本(1表示二值化)  
    image.show()  
    result = tesserocr.image_to_text(image) # 驗證碼圖片轉換爲文本  
    return result  
  
  
# 驗證碼識別信息髒數據處理  
def VerifInfo(result):  
    """  
    :param result: 驗證碼圖片經過初步識別後獲得的髒數據  
    :return:  
    """  
    verif_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"  
    verif_list = []  
    for i in result:  
        if i in verif_str:  
            verif_list.append(i)  
    return "".join(verif_list)  
  
  
  
if __name__ == '__main__':  
    img_path = "D:\photo\image"                                 # 文件夾目錄  
    img_path = img_path + "\VerificationCode.png"               # 驗證碼圖片所在的目錄及名稱  
    img_url = "http://my.cnki.net/elibregister/CheckCode.aspx"  # 驗證碼url  
    get_image(img_path,img_url)                                 # 獲取驗證碼圖片  
    reset_image_size(img_path)                                  # 調整驗證碼圖片大小  
    result = read_image(img_path)                               # 讀取驗證碼圖片內容  
    verif_info = VerifInfo(result)                              # 驗證碼內容數據處理  
    verif_len  = len(verif_info)                                # 驗證碼識別長度  
    if verif_len == 4 and verif_info:  
        print(verif_info)  
    else:  
        pass

最後就是看看識別的效果吧。前者爲原始驗證碼圖片,後者是通過二值化處理的圖片。

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

輸出的結果爲:FZug

顯然使用tesserocr識別仍是有偏差的,之後能夠用深度學習的方式訓練處一個模型,能夠提升識別效率,後期會跟進實現的。感謝做者分享-http://bjbsair.com/2020-04-07/tech-info/30740.html

圖片驗證碼基本上是有數字和字母或者數字或者字母組成的字符串,而後經過一些干擾線的繪製而造成圖片驗證碼。

例如:知網的註冊就有圖片驗證碼

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

首先咱們須要獲取驗證碼圖片,經過開發者工具咱們能夠獲得驗證碼url連接

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

其次就是經過Pillow類庫和tesserocr進行識別,代碼以下:

# -*- coding:utf-8 -*-  
import tesserocr  
from PIL import Image  
import requests  
  
# 經過url連接獲取驗證碼圖片,並寫入本地文件夾裏  
def get_image(path,url):  
    """  
    :param path: 文件夾路徑  
    :param url:  驗證碼url連接  
    """  
    respon = requests.get(url=url)      # 請求驗證碼url  
    with open(path,"wb") as file:  
        file.write(respon.content)      # 將驗證碼寫到本地  
  
  
# 因爲驗證碼圖片過小,須要對驗證碼圖片放大處理,以便識別  
def reset_image_size(image_path):  
    """  
    :param image_path: 圖片所在的路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)   # 打開圖片  
    pic_resize = 5                      # 設置圖片放大或者縮小倍數  
    (x, y) = image.size                 # 獲取圖片的大小  
    x_s = int(x * pic_resize)           # 放大5倍(可調)  
    y_s = int(y * pic_resize)           # 放大5倍(可調)  
    out = image.resize((x_s, y_s), Image.ANTIALIAS)     # ANTIALIAS表示高質量圖片  
    out.save(image_path)  
  
  
# 讀取驗證碼圖片文本  
def read_image(image_path):  
    """  
    :param image_path: 驗證碼圖片路徑  
    :return:  
    """  
    image = Image.open(fp=image_path)       # 打開驗證碼圖片  
    image = image.convert('L')              # 將驗證碼圖片轉換爲灰度圖(L表示灰度圖)  
    threshold = 127                         # 設置灰度圖二值化閾值  
    table = []  
    for i in range(256):                    # 像素爲256  
        if i < threshold:  
            table.append(0)  
        else:  
            table.append(1)  
    image = image.point(table, '1')         # 二值化處理後的副本(1表示二值化)  
    image.show()  
    result = tesserocr.image_to_text(image) # 驗證碼圖片轉換爲文本  
    return result  
  
  
# 驗證碼識別信息髒數據處理  
def VerifInfo(result):  
    """  
    :param result: 驗證碼圖片經過初步識別後獲得的髒數據  
    :return:  
    """  
    verif_str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"  
    verif_list = []  
    for i in result:  
        if i in verif_str:  
            verif_list.append(i)  
    return "".join(verif_list)  
  
  
  
if __name__ == '__main__':  
    img_path = "D:\photo\image"                                 # 文件夾目錄  
    img_path = img_path + "\VerificationCode.png"               # 驗證碼圖片所在的目錄及名稱  
    img_url = "http://my.cnki.net/elibregister/CheckCode.aspx"  # 驗證碼url  
    get_image(img_path,img_url)                                 # 獲取驗證碼圖片  
    reset_image_size(img_path)                                  # 調整驗證碼圖片大小  
    result = read_image(img_path)                               # 讀取驗證碼圖片內容  
    verif_info = VerifInfo(result)                              # 驗證碼內容數據處理  
    verif_len  = len(verif_info)                                # 驗證碼識別長度  
    if verif_len == 4 and verif_info:  
        print(verif_info)  
    else:  
        pass

最後就是看看識別的效果吧。前者爲原始驗證碼圖片,後者是通過二值化處理的圖片。

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

Python+scrapy爬蟲識別驗證碼(一)字母數字組合驗證碼識別

輸出的結果爲:FZug

顯然使用tesserocr識別仍是有偏差的,之後能夠用深度學習的方式訓練處一個模型,能夠提升識別效率,後期會跟進實現的。

相關文章
相關標籤/搜索