Hi Atef,
I think your best option is to generate a lot of images as bad as this one and use them for training.
So you take the good images (with the corresponding text), thousands, and ruin/blur them in many different ways. In this way, for example, from good 1000 images you get 5000/10000 bad images.
Then you fine tune the model using these.
With pre-processing it is a lot of work and you are not going to get good reliable results anyway. If you still want to try you can use the white border of the image as a reference for the average image brightness and fix the brightness according to this. Or try CLAHE.
Process manually with Gimp this image first to see IF this helps and what brightness/contrast is the best. It's faster to do this manually. Once you have reliable a "pre-processing" try to replicate it with code.
Bye
Lorenzo