日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【spider】Tesseract机器视觉实现验证码识别

發布時間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【spider】Tesseract机器视觉实现验证码识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文將重點介紹機器視覺的一個分支:文字識別,

介紹如何用一些 Python庫來識別和使用在線圖片中的文字

我們可以很輕松的閱讀圖片里的文字,但是機器閱讀這些圖片就會非常困難,利用這種人類用戶可以正常讀取但是大多數機器人都沒法讀取的圖片,驗證碼 (CAPTCHA)就出現了

將圖像翻譯成文字一般被稱為光學文字識別(Optical Character Recognition, OCR)

下載安裝包,下載訓練數據

https://github.com/tesseract-ocr/tesseract/wiki

https://github.com/tesseract-ocr/tesseract/wiki/Data-Files

?

import pytesseractimport urllib.requestfrom PIL import Imageurl = "https://so.gushiwen.org/RandCode.ashx?"urllib.request.urlretrieve(url,'./captcha.png')def cleanImage(path):image = Image.open(path)# 灰度化image = image.convert('L')# 背景雜點刪除data = image.load()#返回圖片的ndarray數據w,h = image.sizefor i in range(w):for j in range(h):if data[i,j] >150: #閾值,估計的值data[i,j] = 255 #純白else:data[i,j] = 0 #純黑image.save('clean_captcha.png')return imageimage = cleanImage('./captcha.png')image.show()result = pytesseract.image_to_string(image) # print(result)

古詩文網站使用selenium模擬登陸,識別驗證碼

from selenium import webdriver import pytesseract from PIL import Image import timeurl = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'def get_captcha():driver = webdriver.Chrome()driver.maximize_window()driver.implicitly_wait(10)driver.get(url)# 元素img = driver.find_element_by_id('imgCode')driver.save_screenshot('./poem.png')image = Image.open('./poem.png')# 左上角坐標loc = img.locationprint(loc)# 圖片寬度高度size = img.sizeprint(size)# 矩形區域# 160,260# 234,291rec = (loc['x']+100 , loc['y']+51, 554, 290)captcha = image.crop(rec)# 保存到文件中captcha.save('./captcha.png')return driverdef recognize_captcha():captcha = Image.open('./captcha.png')gray = captcha.convert('L')data = gray.load()w,h = captcha.sizefor x in range(w):for y in range(h):# 0 ~ 255 0純黑,255純白if data[x,y] < 140:data[x,y] = 0else:data[x,y] = 255code = pytesseract.image_to_string(gray)return codedef login(drive,code):drive.find_element_by_id('email').send_keys('xxxxxxx@qq.com')drive.find_element_by_id('pwd').send_keys('xxxxabc')drive.find_element_by_id('code').send_keys(code)time.sleep(3)drive.find_element_by_id('denglu').click()if __name__ == '__main__':drive = get_captcha()# code驗證碼,有可能出錯code = recognize_captcha()# print('----------------',code)login(drive,code)drive.quit()

總結

以上是生活随笔為你收集整理的【spider】Tesseract机器视觉实现验证码识别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。