Information Interchange Model (IIM) is a metadata format for image files. Developed by the IPTC, it is commonly used in the media industry to add things like a caption, creation date and credit to pictures. Adobe Photoshop supports the editing of IIM records, as do a number of other image manipulation programs. Unfortunately, the premier open source image manipulation program, the GIMP doesn't appear to support IIM records.
For my current job, I needed an IIM parser that I could plug into an image processing program written in C++. Over the course of a weekend I wrote a small library that reads blocks from a JPEG image, and then parses the records from the IIM block if one is found. As I developed the library in my own time, I've decided to post it online in case anyone else finds it of some use.