如何在 python 中读取这些验证码?
Posted
技术标签:
【中文标题】如何在 python 中读取这些验证码?【英文标题】:How to read these captchas in python? 【发布时间】:2022-01-05 07:52:01 【问题描述】:我有以下问题。我想在 python 中阅读这些类型的验证码:
我做过的最好的代码是这样的,但是它无法解决所有这些验证码:
import pytesseract
import cv2
import numpy as np
import re
def odstran_sum(img,threshold):
"""Funkce odstrani sum."""
filtered_img = np.zeros_like(img)
labels,stats= cv2.connectedComponentsWithStats(img.astype(np.uint8),connectivity=8)[1:3]
label_areas = stats[1:, cv2.CC_STAT_AREA]
for i,label_area in enumerate(label_areas):
if label_area > threshold:
filtered_img[labels==i+1] = 1
return filtered_img
def preprocess(img_path):
"""Konvertuje do binary obrazku."""
img = cv2.imread(img_path,0)
blur = cv2.GaussianBlur(img, (3,3), 0)
thresh = cv2.threshold(blur, 150, 255, cv2.THRESH_BINARY_INV)[1]
filtered_img = 255-odstran_sum(thresh,20)*255
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
erosion = cv2.erode(filtered_img,kernel,iterations = 1)
return erosion
def captcha_to_string(obrazek):
"""Funkce vrati text z captchy"""
text = pytesseract.image_to_string(obrazek)
return re.sub(r'[^\x00-\x7F]+',' ', text).strip()
img = preprocess(CAPTCHA_NAME)
text = captcha_to_string(img)
print(text)
是否可以改进我的代码以使其能够阅读所有这五个示例?非常感谢。
【问题讨论】:
【参考方案1】:我认为除了编写自己的基于类似验证码的图像识别神经网络之外,没有太多需要改进的地方。验证码经过精心设计,因此计算机很难对其进行解码,因此我认为您无法获得完美的结果。
【讨论】:
以上是关于如何在 python 中读取这些验证码?的主要内容,如果未能解决你的问题,请参考以下文章