Cómo extraer una región blanca en una imagen

Tengo una imagen de muestra como esta

Estoy buscando una manera de oscurecer el ruido de la imagen, de modo que termine con una imagen que solo tiene texto negro sobre fondo blanco para poder enviarla a tesseract.

He intentado transformarme con

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

Pero no parece funcionar.

También he tratado de encontrar contornos.

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)

Con el código anterior, obtengo los siguientes contornos:

que lleva a esta imagen cuando se recorta:

que todavía no es lo suficientemente bueno. Quiero texto negro sobre fondo blanco, para poder enviarlo a tesseract OCR y tener una buena tasa de éxito.

¿Hay algo más que pueda probar?

Actualizar

Aquí hay una imagen similar adicional. Este es un poco más fácil porque tiene un rectángulo liso

Respuestas a la pregunta(3)

Su respuesta a la pregunta