Following page utilizes Exchangeable Image File library and apex:inputfile
example.
Exif.getData function reads GPS data from image and stores it as description in document record.
VF:
<apex:page standardController="Document" extensions="documentExt" >
<apex:includeScript value="{!$Resource.exif}"/>
<script>
function getGPSdata(e) {
EXIF.getData(e.files[0], function() {
var obj = {};
obj.Latitude = EXIF.getTag(this, "GPSLatitude");
obj.Longitude = EXIF.getTag(this, "GPSLongitude");
obj.LastModifiedDate = this.lastModifiedDate;
document.querySelectorAll('[id$="desc"]')[0].value = JSON.stringify(obj);
});
}
</script>
<apex:messages />
<apex:form >
<apex:pageBlock >
<apex:pageBlockSection columns="1">
<apex:inputFile value="{!document.body}" filename="{!document.name}"
onchange="getGPSdata(this)" />
<apex:inputField value="{!document.description}" id="desc" />
<apex:commandButton value="Save" action="{!save}"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>
Apex left unmodifed:
public class documentExt {
public documentExt(ApexPages.StandardController controller) {
Document d = (Document) controller.getRecord();
d.folderid = UserInfo.getUserId(); //this puts it in My Personal Documents
} }
Demo:

Exif tags could be found here
Don't forget to create static resource with name exif and upload exif.js file