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處理.....)