用Python識別簡單驗證碼

2021-08-14 16:32:50 字數 1993 閱讀 2412

簡單介紹下:

1. pil (python imaging library)是 python 中最常用的影象處理庫;

2. tesseract-oc是hp的乙個文字識別專案,後來交給google做了開源;

3. pytesseract是基於tesseract-oc的python封裝。

pytesseract的使用十分簡單,當然tesseract-oc本身的命令列呼叫也很簡單,基於它的封裝用起來也只有一行**:

執行後不出意外會報錯:filenotfounderror: [winerror 2] 系統找不到指定的檔案方法1: 將tesseract.exe的安裝目錄新增到path環境變數中;

方法2: 修改pytesseract.py檔案,指定tesseract.exe安裝路徑tesseract_cmd = 'd:\\tesseract-ocr\\tesseract

方法3: 在實際執行**中指定pytesseract.pytesseract.tesseract_cmd = 'd:\\tesseract-ocr\\tesseract.exe'

當你覺得萬事俱備,信心滿滿再次執行**後,它報了另外乙個錯:

pytesseract.pytesseract.tesseracterror: (1, 'error opening data file \\tesseract-ocr\\tessdata/eng.traineddata')

方法1: 將/tesseract-ocr/tessdata目錄新增到tessdata_prefix環境變數中;

方法2: 指定tessdata-dir:tessdata_dir_config = '--tessdata-dir "d:\\tesseract-ocr\\tessdata"'

所以,最後**變成了這樣:

執行成功!

我採用的驗證碼是來自直播平台鬥魚的舉報系統,這個神奇的舉報系統永遠都輸不對驗證碼,大概是鬥魚壓根就不讓你們舉報,只是做做樣子忽悠忽悠屁民罷了。

附:request url:

{887

唔,不是很令人滿意的結果。

其實,這也在情理之中。tesseract-oc是做文字識別的,鬥魚這個驗證碼帶了一點噪點,識別容易出誤差。實際上也沒有人直接用tesseract-oc來破解驗證碼,一般都需要做二值化、降噪、分割的處理。這樣一套流程下來,識別的成功率就會變地非常高。

就會像這樣3061

本來寫這篇文章,是起源於在知乎看到一篇教程以及在實驗樓的乙個課程,用python的基本庫pil來實現驗證碼的識別。實操下來因本人對影象處理的認識比較淺薄,一些顏色直方圖、調色盤類的概念不是特別明確,並且教程裡有討巧的成分(降噪是選取已知的兩種顏色來做二值化)遂放棄轉而直接呼叫第三方庫。

總結來說,這是一篇工具使用篇,並沒有多少python知識,就當我水了一篇吧,啊哈哈哈。

有緣我們再來講中文識別以及字型檔訓練,會發揮出tesseract-oc更完整強大的實力。

用Python識別驗證碼

摘要 爬蟲過程中難免會碰到驗證碼,各種各樣的驗證碼似乎阻擋了爬蟲的腳步。由於本文實現的功能是在內網環境完成,因此,沒有 介紹,也沒有識別效果展示。爬蟲過程中難免會碰到驗證碼,各種各樣的驗證碼似乎阻擋了爬蟲的腳步。為了識別機器和真實使用者而誕生的爬蟲 碰到驗證碼有兩個方法解決 打碼平台 為了識別驗證碼...

驗證碼 簡單驗證碼識別

這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 這裡的驗證碼是內容非常簡單的,結構非常清晰的 興之所至之所以說簡單,我覺得是這樣的 抽了五張驗證碼扔進ps,50 透明度,長這樣 只有數字為內容 每張圖的數字都在固定位置 沒有太大的干擾因素 數字字型,形態完...

Python簡單驗證碼識別

本例項只能識別簡單的字元驗證碼,可以用於執行簡單的自動化測試場景。安裝tesseract ocr tesseract ocr的版本與語言包的版本必須對應 安裝庫pip install wheel pip install tesserocr 2.2.2 cp36 cp36m win amd64.whl...