1. 程式人生 > >python爬蟲實現登陸簡單圖片驗證碼識別(Tesseract識別)

python爬蟲實現登陸簡單圖片驗證碼識別(Tesseract識別)

Tesseract下載與安裝

附:德國曼海姆大學發行的3.05版本下載

安裝與配置PATH環境變數

安裝略,環境變數只要將目錄新增到PATH路徑,PATH路徑針對於命令列解析。

tesseract 1.png output-l eng -psm 7

-psm 7 表示用單行文字識別 pagesegmode值:

  • 0 =定向和指令碼檢測(OSD)。
  • 1 =帶OSD的自動頁面分割。
  • 2 =自動頁面分割,但沒有OSD或OCR
  • 3 =全自動頁面分割,但沒有OSD。(預設)
  • 4 =假設一列可變大小的文字。
  • 5 =假設一個統一的垂直對齊文字塊。
  • 6 =假設一個統一的文字塊。
  • 7 =將影象作為單個文字行處理。
  • 8 =把影象當作一個單詞。
  • 9 =把影象當作一個圓圈中的一個詞來對待。
  • 10 =將影象作為單個字元處理

#-l eng 代表使用英語識別

程式碼實現

直接上程式碼:

import pytesseract
import requests
from lxml import etree
from PIL import Image

url = "http://my.cnki.net/elibregister/"

def getImgUrl():
    """
    獲取驗證碼的地址
    :return:urlImg:驗證碼的url獲取地址
    """
    response = requests.get(url)
    et = etree.HTML(response.text)
    img = et.xpath('//div/a/img/@src')[0]
    urlImg = url+img
    return  urlImg

def getCode(imgUrl):
    """
    實現驗證碼的解析
    :param imgUrl: 驗證碼圖片地址
    :param code: 驗證碼資訊
    """
    response = requests.get(imgUrl)
    with open("./1.png","wb") as fw:
        fw.write(response.content)  #儲存圖片
    img  = Image.open("1.png")
    code = pytesseract.image_to_string(img) #呼叫方法解析驗證碼
    print(code)

imgUrl = getImgUrl()
getCode(imgUrl)

執行結果: