What is the best way to instruct user to capture a clear or better image of a document.?

I am working on an app where user needs to click an image of a document and upload and server will do the further processing of doing OCR and extracting specific data from it. OCR and data extraction completely depends on the image quality. So what is the best way i can instruct user to take a near to perfect image of document at run-time.

Factors i am considering.

1) Light available while capturing image
(Can’t use the light sensor because it is present on front side of phone whereas document will be on bottom side)

2) Document angle.
(Tried edge detection using openCV but not properly works on white document with light color background surface. Any Edge detection tutorial for run-time document detection over custom camera surface will also be a great help)

3) Distance from document.

Processing the image after capturing (Transforming the document to a rectangle using openCV) is not always gives a great result with OCR because of character distortion.

So please suggest some way to instruct the user to take a better image of straight document from a perfect distance and better lightening conditions. And also after capturing best way to judge the image quality.