91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python如何生成驗證碼

發布時間:2021-10-19 09:19:00 來源:億速云 閱讀:146 作者:柒染 欄目:大數據

Python如何生成驗證碼,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

 

Python 生成驗證碼

 

文章無干貨

爬蟲和驗證碼就是天生的冤家,用 Python 生成驗證碼應該是用 Python 對抗驗證碼的第一步,所以今天先來研究研究如何用 Python 生成一個便于我們入手的驗證碼。

這里不是造輪子,只是踩踩坑,目前 Github 上關于驗證碼對抗的開源項目非常多,這里推薦兩個,有經驗的朋友直接跳過下面的內容,學習這兩個項目就好。

驗證碼訓練:(以下介紹內容來自官方的介紹)

https://github.com/kerlomz/captcha_trainer

基于深度學習的圖片驗證碼的解決方案 - 該項目能夠秒殺字符粘連重疊/透視變形/模糊/噪聲等各種干擾情況,足以解決市面上絕大多數復雜的驗證碼場景,目前也被用于其他OCR場景。

該項目基于 TensorFlow 1.14 開發,旨在幫助中小企業或個人用戶快速構建圖像分類模型并投入生產環境使用,降低技術應用門檻。

驗證碼部署:

https://github.com/kerlomz/captcha_platform

關于部署,大佬也提供了相應的文章:https://www.jianshu.com/p/80ef04b16efc

 

生成一張簡單的驗證碼

這里需要安裝captcha這個庫

pip install captcha
 

接下來使用下面這段代碼,就可以得到一個簡單的驗證碼圖片

from  captcha.image import  ImageCaptcha
import matplotlib.pyplot as plt
import random  
import string  

# 定義字符集是數字和字符
chs=string.digits+string.ascii_uppercase 
print(chs)
# 定義長度,寬度,字符個數,類別
width,height,n_len,n_class=170,80,4,len(chs) 
# 定義圖片寬度與高度
generator=ImageCaptcha(width=width,height=height)
# 生成一個4位隨機字符串
random_str="".join([random.choice(chs) for i  in range(4) ]) 
print(random_str)
# 生成隨機驗證碼
img=generator.generate_image(random_str) 
plt.imshow(img) 
plt.title(random_str)
plt.show()
 

這個時候可以得到下面這樣的圖片

Python如何生成驗證碼  
 

批量生成多張驗證碼

光光這樣一張圖片坑定是滿足不了我的需求的所以,改改上面的代碼,把他弄成一個生成多張圖片程序。

from captcha.image import ImageCaptcha
import matplotlib.pyplot as plt
import numpy as np 
import random  
import string  


chs = string.digits + string.ascii_uppercase
width, height, n_len, n_class = 170, 80, 4, len(chs) 


def createxy(batch_size=100):
    X = np.zeros((batch_size, height, width, 3), dtype=np.uint8) 
    Y = [np.zeros((batch_size, n_class), dtype=np.uint8) for i in range(n_len)]  
    generator = ImageCaptcha(width=width, height=height)  
    while True:
        for i in range(batch_size):
            # 隨機字符串
            random_str = "".join([random.choice(chs) for j in range(4)])  
            # 根據隨機字符串生成驗證碼
            X[i] = generator.generate_image(random_str)  
            for j, ch in enumerate(random_str):
                Y[j][i, :] = 0
                Y[j][i, chs.find(ch)] = 1
            yield X, Y


def getycode(y):
    # 降低維度,取出非0數據
    y = np.argmax(np.array(y), axis=2)[:, 0]  
    # 顯示等于1的取出字符
    return "".join([chs[x] for x in y])  


X, Y = next(createxy(1))
plt.imshow(X[0])
plt.title(getycode(Y))
plt.show()

弄完上面這些個就可以開始試著訓練了,但是我沒學會,所以下次再說。

關于Python如何生成驗證碼問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平塘县| 定日县| 裕民县| 志丹县| 普陀区| 绥棱县| 祁阳县| 铅山县| 高州市| 宝清县| 甘肃省| 石柱| 永顺县| 深泽县| 福泉市| 白城市| 定襄县| 沂水县| 千阳县| 大名县| 南安市| 德昌县| 施甸县| 扎鲁特旗| 三亚市| 大洼县| 文登市| 虞城县| 大邑县| 凤庆县| 延长县| 琼结县| 蓝山县| 桂阳县| 沭阳县| 庐江县| 鹿泉市| 和田市| 南阳市| 沽源县| 石河子市|