What you are looking for is graph digitizing software. They all work pretty much the same:
- upload an image
- set the x and y scales by indicating the values at two points on each axis
- indicate if the scale is linear, log, etc,
- click on the points.
- Some of the programs automatically recognize lines or points. I am usually after points, and I find them too inconsistent to be helpful even with 100s of points. I have not found one that recognizes different symbols. This feature could be worth the trouble for digitizing lines, but I have never had to do this.
The program returns each point as an x-y matrix.
Often it helps selecting points if the image is zoomed, either by uploading a zoomed version of the image or using the zooming feature available in some of the programs.
I have experience using the following programs:
- Digitizer (shareware) auto point / line recognition. Available in Ubuntu repository (engauge-digitizer)
- Get Data (shareware) has zoom window, auto point / line recognition
- DigitizeIt (shareware) auto point / line recognition
- ImageJ (open source, most extensible after R digitize)
- R digitize (free, open source), because it simplifies the processs of getting data from the graph into an analysis by keeping all of the steps in R. See the tutorial in R-Journal
- GrabIt! (free demo, $69) Excel
All of these worked fine. Except in contexts where measurement error is very small, error from graph scraping is insignificant (e.g. error from digitization << size of error bars or uncertainty in the estimate). If have not tested the accuracy of any of these programs, but it would be interesting to compare among users, among programs, and against the results of reproduced statistical analyses.