It really depends on why you are scanning photographs in the first place. I don't know your goals, and below is my solution for my, rather niche needs. Also, it is the solution of a person who likes programming as a hobby.
I am scanning/maintaining digital photos for genealogy/archival purposes. As such, I am mainly interested in who is depicted in the photo, where and when the photo was taken, where I got it from. In this case, the XMP face tags are most interesting, together with geotagging and various description tags. And I spent quite some time converting Picasa (which I used for automatic face recognition) and Flickr (which was used to ask relatives to tag faces) data to XMP tags.
However, I then concluded that storing information in photos is actually not a great idea:
- What happens if you discover that your meaningful tag in 1000 photos is invalid (e.g. a person you tagged with his name is actually a different person? or has a different name?)
- What if you were text-tagging photos made in London, UK with "London", only to find out that there are 5 more Londons in the US?
- When geo-tagging a photo, you actually hide ambiguitiy: is the coordinate you use the coordinate of the photographer, of the depicted object, or just a center or even an arbitrary point in the country in which the photo was taken? Geotagging is great if the camera records the GPS coordinate, but arguably not for scanned images.
- What happens if you scan a photo, tag it, then forget it, scan it again, tag it with something different (because you have new information), and then find the original file? You now have two files of the same object with possibly inconsistent tags.
Based on the above and also on the inability to find a good-for-my-needs software that could manipulate all these tags in a meaningful way (see also this question), I ended up with a very different approach. I am now assigning a UUID to each real (physical) object, and add tag
Title=<uuid> to all scans of that object. The UUID is somehow attached to the object (I keep photos and documents in archival folders, and just put a sticker with UUID to individual sleeves/files). Then, I have a central database, in which I keep the metadata. Thus, I have only one storage for all meaninful data, and photo files contain only meaningless (random) UUID.
It also gives the necessary flexibility. E.g. a common source of confusion with "properly tagged" photos has been the disagreement between my relatives as to who was depicted in the image. I may not know the person, and two older people I ask give me two different names. With a separate custom database I do not have to choose, I simply store raw user comments, so the research history is fully preserved, including possible discussions and arguments, links to sources and cross-links.