One strategy to compensate for an un-level bed is to make multiple measurements of the bed using a probe and to use those measurements to calculate a dynamic offset of the z-distance to be employed during the print.
Caution: Using this feature will make your z-motors run nearly continuously, how this affects the lifetime of the motors running or single stepper driver is up for debate.
A very popular model of inductive probe is the LJ12A3-4-Z/BX (blue tip), this probe is normally closed so your firmware configuration should treat this as an "inverted" endstop.
LJ12A3-4-Z/BY (brown tip) also available and is normally open.
Additionally, this probe is rated to run at 6-36V and output the same, which is not safe to directly connect to the 5V inputs on the RAMPS board.
Appropriate values for a voltage divider from 12v to 5v would be 4.7K and 6.8K.
Please Note: If while printing you notice your z-motors oscillate more than a half turn or so as your head travels back and forth across the bed you should probably stop the print and eyeball the nozzle height across the bed, you may need to twiddle one of the z-axis lead screws a turn or so to bring the distance closer. Having a "mostly" level bed definitely doesn't hurt the process, the less the hardware has to compensate the better.
There is a repeatability test in Marlin available through an M48 GCode command which (if sent alone) will probe the current bed point 10x and return the standard deviation, the closer to zero the better.
- Poul-Henning Kamp. "Height probing for PCB isolation routing with Eagle/pcb-gcode".