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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python代码实现验证码识别

發布時間:2023/12/20 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python代码实现验证码识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、環境配置

  • 需要 pillow 和 pytesseract 這兩個庫,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
    (3條消息) Tesseract-OCR 下載安裝和使用_半濠春水的博客-CSDN博客_tesseract-ocr下載

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

?

二、驗證碼識別

識別驗證碼,需要先對圖像進行預處理,去除會影響識別準確度的線條或噪點,提高識別準確度。

實例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)# 形態學操作 腐蝕 膨脹erode = cv.erode(binary, None, iterations=2)dilate = cv.dilate(erode, None, iterations=1)cv.imshow('dilate', dilate)# 邏輯運算 讓背景為白色 字體為黑 便于識別cv.bitwise_not(dilate, dilate)cv.imshow('binary-image', dilate)# 識別test_message = Image.fromarray(dilate)text = pytesseract.image_to_string(test_message)print(f'識別結果:{text}')src = cv.imread(r'./test/044.png') cv.imshow('input image', src) recognize_text(src) cv.waitKey(0) cv.destroyAllWindows()

?運行效果如下:

實例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'二值化自適應閾值:{ret}')cv.imshow('binary', binary)# 形態學操作 獲取結構元素 開操作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)# 邏輯運算 讓背景為白色 字體為黑 便于識別cv.bitwise_not(bin2, bin2)cv.imshow('binary-image', bin2)# 識別test_message = Image.fromarray(bin2)text = pytesseract.image_to_string(test_message)print(f'識別結果:{text}')src = cv.imread(r'./test/045.png') cv.imshow('input image', src) recognize_text(src) cv.waitKey(0) cv.destroyAllWindows()

運行效果如下:

實例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)# 二值化 設置閾值 自適應閾值的話 黃色的4會提取不出來ret, binary = cv.threshold(gray, 185, 255, cv.THRESH_BINARY_INV)print(f'二值化設置的閾值:{ret}')cv.imshow('binary', binary)# 邏輯運算 讓背景為白色 字體為黑 便于識別cv.bitwise_not(binary, binary)cv.imshow('bg_image', binary)# 識別test_message = Image.fromarray(binary)text = pytesseract.image_to_string(test_message)print(f'識別結果:{text}')src = cv.imread(r'./test/045.jpg') cv.imshow('input image', src) recognize_text(src) cv.waitKey(0) cv.destroyAllWindows()

運行效果圖如下:

?

總結

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

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