中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Python怎么實現圖形驗證碼識別

發布時間:2023-02-24 17:41:13 來源:億速云 閱讀:137 作者:iii 欄目:開發技術

這篇文章主要介紹了Python怎么實現圖形驗證碼識別的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python怎么實現圖形驗證碼識別文章都會有所收獲,下面我們一起來看看吧。

    環境使用

    • python 3.9

    • pycharm

    圖形驗證碼的識別

    我們首先識別最簡單的一種驗證碼,即圖形驗證碼。這種驗證碼最早出現,現在也很常見,一般由 4 位字母或者數字組成。例如,某某網站的注冊頁面有類似的驗證碼。

    一般來說,表單的最后一項就是圖形驗證碼,我們必須完全正確輸入圖中的字符才可以完成注冊和登錄。

    1. 本節目標

    以某網站的驗證碼為例,講解利用 OCR 技術識別圖形驗證碼的方法。

    2. 準備工作

    識別圖形驗證碼需要庫 tesserocr。本文文末有安裝教程。

    3. 獲取驗證碼

    為了便于我們的實驗測試,我們先將驗證碼的圖片保存到本地。

    打開開發者工具,找到驗證碼元素。驗證碼元素是一張圖片,它的 src 屬性是 CheckCode.aspx。可以看到一個驗證碼,右鍵保存即可,將其命名為 yzm.jpg。

    Python怎么實現圖形驗證碼識別

    這樣我們就可以得到一張驗證碼圖片,以供測試識別使用。

    4. 識別測試

    接下來新建一個項目,將驗證碼圖片放到項目根目錄下,用 tesserocr 庫識別該驗證碼,代碼如下所示:

    import tesserocr
    from PIL import Image
    image = Image.open('yzm.jpg')
    result = tesserocr.image_to_text(image)
    print(result)

    在這里我們新建了一個 Image 對象,調用了 tesserocr 的 image_to_text() 方法。傳入該 Image 對象即可完成識別,實現過程非常簡單,結果如下所示:JR42。是不是很神奇。

    5. 驗證碼處理

    接下來我們換一個驗證碼,將其命名為 code2.jpg

    Python怎么實現圖形驗證碼識別

    重新運行上面的代碼,輸出FFKT。

    這次識別和實際結果有偏差,這是因為驗證碼內的多余線條干擾了圖片的識別。

    對于這種情況,我們還需要做一下額外的處理,如轉灰度、二值化等操作。我們可以利用 Image 對象的 convert() 方法參數傳入 L,即可將圖片轉化為灰度圖像,代碼如下所示:

    image = image.convert('L')
    image = image.convert('1')
    image.show()

    我們還可以指定二值化的閾值。上面的方法采用的是默認閾值 127。不過我們不能直接轉化原圖,要將原圖先轉為灰度圖像,然后再指定二值化閾值,代碼如下所示:

    image = image.convert('L')
    threshold = 80
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    image = image.point(table, '1')
    image.show()

    運行之后就會得到我們想要的處理結果。而且我們發現原來驗證碼中的線條已經去除,整個驗證碼變得黑白分明。這時重新識別驗證碼,再次運行上面的代碼就可以得到我們要的驗證碼。

    那么,針對一些有干擾的圖片,我們做一些灰度和二值化處理,這會提高圖片識別的正確率。

    tesserocr庫安裝

    在這里我和大家簡單介紹一下,這個庫的安裝教程。

    1. tesseract軟件的安裝

    在win10下,安裝tesseract可以進入該網址進行下載 https://digi.bib.uni-mannheim.de/tesseract/

    Python怎么實現圖形驗證碼識別

    其中,文件名中帶有dev的為開發版本,不帶dev的為穩定版本,可以選擇下載不帶dev的版本。例如可以選擇下載tesseract-ocr-win64-setup-v5.3.0.20221214.exe。

    下載完成后,打開下載文件,其中可以勾選Additional language data(download)選項來安裝OCR識別支持的語言包,以便OCR識別多國語言。(也可以在選項中只勾選chinese)

    2. 環境配置

    在系統變量里,修改path,添加你安裝tesserocr的路徑。在系統變量里,創建一個新的變量名為:TESSDATA_PREFIX,值為:D:\Program Files(X86)\Tesseract-OCR\tessdata(根據自己安裝的tesserocr安裝路徑為準)。

    3. 安裝tesseracr包

    - 嘗試pip安裝:

    pip install tesserocr

    - 如果不成功,則嘗試通過.whl文件安裝。

    TIP

    tesserocr也只是識別手段的一種,如果需要高精度的識別,可以嘗試TensorFlow實現深度學習模型,通過訓練模型來識別圖形驗證碼。

    關于“Python怎么實現圖形驗證碼識別”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Python怎么實現圖形驗證碼識別”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    尉氏县| 师宗县| 房产| 万源市| 女性| 班玛县| 门头沟区| 应用必备| 页游| 东平县| 温州市| 榆中县| 堆龙德庆县| 资源县| 大兴区| 奉新县| 正安县| 白城市| 楚雄市| 洛浦县| 南宫市| 无极县| 讷河市| 枣强县| 象山县| 扎鲁特旗| 淳安县| 连平县| 平乐县| 峨眉山市| 景谷| 汉中市| 巴中市| 青阳县| 长治县| 盐津县| 桂林市| 满洲里市| 科技| 沅江市| 梅河口市|