Мне нужно разрешить капчу автоматически, чтобы получить общедоступные данные с сайтов.
Я использую python и opencv. Я новичок в решении обработки изображений. После поиска, в качестве способа разрешения капчи я придумал следующий. Поскольку текст в Captha использует группу связанных цветов, я пытаюсь использовать формат и маску HSV, затем конвертировать изображение в оттенки серого и использовать Threshold (Adaptive_THRESH_MEAN_C) для удаления шума из изображения.
Но этого недостаточно, чтобы убрать шум и обеспечить автоматическое распознавание текста с помощью OCR (Tesseract). Смотрите изображения ниже.
Что я могу улучшить в своем решении или есть лучший способ?
Исходные изображения:

Обработанные изображения:

Код:
import cv2
import numpy as np
img = cv2.imread("1.jpeg")
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, (36, 0, 0), (70, 255,255)) #green
# mask = cv2.inRange(hsv, (0, 0, 0), (10, 255, 255))
# mask = cv2.inRange(hsv, (125, 0, 0), (135, 255,255))
img = cv2.bitwise_and(img, img, mask=mask)
img[np.where((img == [0,0,0]).all(axis = 2))] = [255,255,255]
img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
img = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 15, 2)
cv2.imwrite("out.png", img)