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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python 代码实现验证码识别

發(fā)布時(shí)間:2023/12/20 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 代码实现验证码识别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天咋們繼續(xù)利用pillow和pytesseract來(lái)實(shí)現(xiàn)驗(yàn)證碼的識(shí)別

一、環(huán)境配置

  • 需要 pillow 和 pytesseract 這兩個(gè)庫(kù),pip install 安裝就好了。

pip?install?pillow?-i?http://pypi.douban.com/simple?--trusted-host?pypi.douban.com pip?install?pytesseract?-i?http://pypi.douban.com/simple?--trusted-host?pypi.douban.com
  • 安裝好Tesseract-OCR.exe

  • pytesseract 庫(kù)的配置:搜索找到pytesseract.py,打開(kāi)該.py文件,找到 tesseract_cmd,改變它的值為剛才安裝 tesseract.exe 的路徑。

二、驗(yàn)證碼識(shí)別

識(shí)別驗(yàn)證碼,需要先對(duì)圖像進(jìn)行預(yù)處理,去除會(huì)影響識(shí)別準(zhǔn)確度的線條或噪點(diǎn),提高識(shí)別準(zhǔn)確度。

實(shí)例1

import?cv2?as?cv import?pytesseract from?PIL?import?Imagedef?recognize_text(image):#?邊緣保留濾波??去噪dst?=?cv.pyrMeanShiftFiltering(image,?sp=10,?sr=150)#?灰度圖像gray?=?cv.cvtColor(dst,?cv.COLOR_BGR2GRAY)#?二值化ret,?binary?=?cv.threshold(gray,?0,?255,?cv.THRESH_BINARY_INV?|?cv.THRESH_OTSU)#?形態(tài)學(xué)操作???腐蝕??膨脹erode?=?cv.erode(binary,?None,?iterations=2)dilate?=?cv.dilate(erode,?None,?iterations=1)cv.imshow('dilate',?dilate)#?邏輯運(yùn)算??讓背景為白色??字體為黑??便于識(shí)別cv.bitwise_not(dilate,?dilate)cv.imshow('binary-image',?dilate)#?識(shí)別test_message?=?Image.fromarray(dilate)text?=?pytesseract.image_to_string(test_message)print(f'識(shí)別結(jié)果:{text}')src?=?cv.imread(r'./test/044.png') cv.imshow('input?image',?src) recognize_text(src) cv.waitKey(0) cv.destroyAllWindows()

運(yùn)行效果如下:

識(shí)別結(jié)果:3n3DProcess?finished?with?exit?code?0

實(shí)例2

import?cv2?as?cv import?pytesseract from?PIL?import?Imagedef?recognize_text(image):#?邊緣保留濾波??去噪blur?=cv.pyrMeanShiftFiltering(image,?sp=8,?sr=60)cv.imshow('dst',?blur)#?灰度圖像gray?=?cv.cvtColor(blur,?cv.COLOR_BGR2GRAY)#?二值化ret,?binary?=?cv.threshold(gray,?0,?255,?cv.THRESH_BINARY_INV?|?cv.THRESH_OTSU)print(f'二值化自適應(yīng)閾值:{ret}')cv.imshow('binary',?binary)#?形態(tài)學(xué)操作??獲取結(jié)構(gòu)元素??開(kāi)操作kernel?=?cv.getStructuringElement(cv.MORPH_RECT,?(3,?2))bin1?=?cv.morphologyEx(binary,?cv.MORPH_OPEN,?kernel)cv.imshow('bin1',?bin1)kernel?=?cv.getStructuringElement(cv.MORPH_OPEN,?(2,?3))bin2?=?cv.morphologyEx(bin1,?cv.MORPH_OPEN,?kernel)cv.imshow('bin2',?bin2)#?邏輯運(yùn)算??讓背景為白色??字體為黑??便于識(shí)別cv.bitwise_not(bin2,?bin2)cv.imshow('binary-image',?bin2)#?識(shí)別test_message?=?Image.fromarray(bin2)text?=?pytesseract.image_to_string(test_message)print(f'識(shí)別結(jié)果:{text}')src?=?cv.imread(r'./test/045.png') cv.imshow('input?image',?src) recognize_text(src) cv.waitKey(0) cv.destroyAllWindows()

運(yùn)行效果如下:

二值化自適應(yīng)閾值:181.0 識(shí)別結(jié)果:8A62N1Process?finished?with?exit?code?0

實(shí)例3

import?cv2?as?cv import?pytesseract from?PIL?import?Imagedef?recognize_text(image):#?邊緣保留濾波??去噪blur?=?cv.pyrMeanShiftFiltering(image,?sp=8,?sr=60)cv.imshow('dst',?blur)#?灰度圖像gray?=?cv.cvtColor(blur,?cv.COLOR_BGR2GRAY)#?二值化??設(shè)置閾值??自適應(yīng)閾值的話?黃色的4會(huì)提取不出來(lái)ret,?binary?=?cv.threshold(gray,?185,?255,?cv.THRESH_BINARY_INV)print(f'二值化設(shè)置的閾值:{ret}')cv.imshow('binary',?binary)#?邏輯運(yùn)算??讓背景為白色??字體為黑??便于識(shí)別cv.bitwise_not(binary,?binary)cv.imshow('bg_image',?binary)#?識(shí)別test_message?=?Image.fromarray(binary)text?=?pytesseract.image_to_string(test_message)print(f'識(shí)別結(jié)果:{text}')src?=?cv.imread(r'./test/045.jpg') cv.imshow('input?image',?src) recognize_text(src) cv.waitKey(0) cv.destroyAllWindows()

運(yùn)行效果如下:

二值化設(shè)置的閾值:185.0 識(shí)別結(jié)果:7364Process?finished?with?exit?code?0

結(jié)語(yǔ)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)小編的支持。

總結(jié)

以上是生活随笔為你收集整理的Python 代码实现验证码识别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。