Как извлечь белую область на изображении

У меня есть образец изображения, как это

Я ищу способ затемнить шум от изображения так, чтобы я получил изображение с черным текстом на белом фоне, чтобы я мог отправить его в tesseract.

Я пытался с

kernel = np.ones((4,4),np.uint8)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
cv2.imshow("opening", opening)

но это не похоже на работу.

Я также пытался найти контуры

img = cv2.cvtColor(rotated, cv2.COLOR_BGR2GRAY)
(cnts, _) = cv2.findContours(img, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:1]
for c in cnts:
    x,y,w,h = cv2.boundingRect(c)
    roi=rotated[y:y+h,x:x+w].copy()
    cv2.imwrite("roi.png", roi)

С помощью приведенного выше кода я получаю следующие контуры:

что приводит к этому изображению, когда обрезается:

что все еще недостаточно хорошо. Мне нужен черный текст на белом фоне, чтобы я мог отправить его на OSS для тессеракта и иметь хороший показатель успеха.

Есть ли что-нибудь еще, что я могу попробовать?

Обновить

Вот дополнительное похожее изображение. Это немного проще, потому что в нем есть гладкий прямоугольник

Ответы на вопрос(3)

Ваш ответ на вопрос