Python驗證碼登錄(Tesseract安裝配置)


1.安裝py庫:pytesseract,PIL

pip install pytesseract
pip install PILLOW

 如果安裝時,出現權限不足:

pip install --user pytesseract
pip install --user PILLOW

 

2.tesseract程序下載安裝

2.1 tessercat下載地址:https://digi.bib.uni-mannheim.de/tesseract/        //請依據自己的操作系統下載exe文件安裝

2.2 環境變量配置

用戶變量,系統變量都添加:PATH     C:\Program Files (x86)\Tesseract-OCR;    //這是tesseract的安裝目錄

系統變量添加:TESSDATA_PREFIX    C:\Program Files (x86)\Tesseract-OCR     

//有的博文寫到“TESSDATA_PREFIX”目錄需要到tessdata,但是我電腦配置到tessdata就會多一級tessdata目錄,命令測試時會找不到,所以這里自己依據調試哪個OK用哪個~

2.3 驗證是否安裝/配置成功

在需識別的圖片目錄下執行命令:tesseract test.png output_1 –l eng

test.png:徐識別的文件

output_1:識別后存入的文件名(默認txt格式)

-l eng:語言包 英文

 

3.pycharm驗證碼登錄

驗證碼圖片清晰,不去需要背景去噪(干擾線),轉換為灰度圖

 

# 驗證碼登錄
import time
from PIL import ImageEnhance
from selenium import webdriver
# 避免出現系統錯誤:[WinError 2] 系統找不到指定的文件
try:
    import Image
except ImportError:
    from PIL import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r'C:/Program Files (x86)/Tesseract-OCR/tesseract.exe'

# 打開瀏覽器
url = "http://XXX.XX.XX.XX:XXX/SPMTest/login.html"
browser = webdriver.Chrome()
browser.implicitly_wait(10)
browser.maximize_window()
browser.get(url)

# 用戶元素
userElement = browser.find_element_by_id("loginname")
passElement = browser.find_element_by_id("password1")
codeElement = browser.find_element_by_id("code")
lgButton = browser.find_element_by_id("login_value")

# 驗證碼截取+識別(頁面驗證碼地址不是固定連接,所以采用截圖方式)
# 截取屏幕內容,保存到本地
browser.save_screenshot("D://PyDemo/01.png")
# 打開截圖,獲取驗證碼位置,截取保存驗證碼
ran = Image.open("D://PyDemo/01.png")
box = (1165, 380, 1240, 415) # 獲取驗證碼位置,手動定位(左,上,右,下)--驗證碼圖片的絕對定位
ran.crop(box).save("D://PyDemo/02.png")
# 獲取驗證碼圖片,讀取驗證碼
code = pytesseract.image_to_string(Image.open('D://PyDemo/02.png'))
print(code)

# 輸入數據登錄
userElement.send_keys('tt')
passElement.send_keys('1234')
codeElement.send_keys(code)
time.sleep(3)
lgButton.click()

  

記錄下,這個系統的登錄腳本,特殊情況~(場景:密碼輸入框有兩個id處理.....

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM