Improving visibility of text in scanned image

Just to make a functional form of nikie's answer, which can't be marked as a duplicate as it's on another SE site,

improve[img_] :=
  ImageCrop@
  Binarize@Image[
    ImageData[img]/ImageData[Closing[img, DiskMatrix[5]]]]

improve@Import["http://i.stack.imgur.com/vWX65.jpg"]

enter image description here


If a grayscale image is needed, we can do as in Jason answer but replacing the binarize with an ImageAdjust.

src = ColorConvert[Import@"http://i.stack.imgur.com/vWX65.jpg", "Grayscale"];
white = Closing[src, DiskMatrix[5]];
imgWithUniformBkg = Image[ImageData[src]/ImageData[white]];
ImageAdjust@imgWithUniformBkg 

But this results in an image that is too light:

enter image description here

A much better results is found after using a manipulate to explore the possible settings:

Manipulate[
    Labeled[ImageAdjust[imgWithUniformBkg, Append[cb, g]], Append[cb, g]], 
    {cb, {-1, -1}, {1, 1}}, {g, 1, 10}]

enter image description here