

Для которого я хочу удалить текст в фон. Должны остаться только символы капчи (т.е. K6PwKA, YabVzu). Задача состоит в том, чтобы позже идентифицировать эти символы с помощью тессеракта.
Это то, что я пробовал, но это не дает большой точности.
Код: Выделить всё
import cv2
import pytesseract
pytesseract.pytesseract.tesseract_cmd = r"C:\Users\HPO2KOR\AppData\Local\Tesseract-OCR\tesseract.exe"
img = cv2.imread("untitled.png")
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray_filtered = cv2.inRange(gray_image, 0, 75)
cv2.imwrite("cleaned.png", gray_filtered)
Примечание:
Я перепробовал все предложения, которые мне предлагали по этому вопросу, и ни одно из них мне не помогло.
РЕДАКТИРОВАТЬ:
Согласно Элиас, я попытался найти цвет текста капчи с помощью фотошопа, преобразовав его в оттенки серого, что оказался где-то посередине [100, 105]. Затем я устанавливаю порог изображения на основе этого диапазона. Но результат, который я получил, не дал удовлетворительного результата от тессеракта.
Код: Выделить всё
gray_filtered = cv2.inRange(gray_image, 100, 105)
cv2.imwrite("cleaned.png", gray_filtered)
gray_inv = ~gray_filtered
cv2.imwrite("cleaned.png", gray_inv)
data = pytesseract.image_to_string(gray_inv, lang='eng')
Код: Выделить всё
'KEP wKA'
[img]https://i .sstatic.net/AqYeO.png[/img]
РЕДАКТИРОВАТЬ 2:
Код: Выделить всё
def get_text(img_name):
lower = (100, 100, 100)
upper = (104, 104, 104)
img = cv2.imread(img_name)
img_rgb_inrange = cv2.inRange(img, lower, upper)
neg_rgb_image = ~img_rgb_inrange
cv2.imwrite('neg_img_rgb_inrange.png', neg_rgb_image)
data = pytesseract.image_to_string(neg_rgb_image, lang='eng')
return data
[img]https://i .sstatic.net/rSrSz.png[/img]
и текст как
Код: Выделить всё
GXuMuUZ
Подробнее здесь: https://stackoverflow.com/questions/601 ... with-openc