The Library of Congress and LC Labs are delighted to co-host the 2018 International Image Interoperability Framework (IIIF) Conference with the Smithsonian Institution and the Folger Shakespeare Library. The event will be held May 21-25 in Washington, DC. In preparation for the event, we sat down with Chris Thatcher, a senior software developer at the Library, and asked if he could share more about how the Library of Congress is implementing and extending services with IIIF.
What is IIIF and what problems is it trying to solve?
Chris Thatcher: In case you haven’t added it to your LOA (List Of Acronyms), IIIF stands for International Image Interoperability Framework. Also to save you the same embarrassment, I spent years pronouncing it “Eye Eye Eye Ef” until I went to a conference and heard all the cool kids pronouncing it “Triple Eye Ef”!
IIIF is a small body of standards that provides a simple way for cultural and scientific organization to provide access to their images in a way that is consistent and predictable across those organizations.
For many of these organizations, high resolution images served on the web are _the way_ researchers all over the world access primary resources. Being able to see everything from a low resolution image to quickly scan for images of interest, and conversely zooming into a small area of interest that is of particular interest to the researcher goes all the way back to American Memory.
IIIF at its core, provides a way for organizations to exposes these images over the web in a way that allows researchers to use primary sources from disparate organizations using any platform that speaks IIIF.
In fact, the Library’s current implementation of the IIIF Image protocol is just another iteration of the original image service written by David Woodward for American Memory a dozen years ago in Perl, then updated to Python, and then modified to support IIIF.
To show you the power of IIIF it helps to have some concrete examples. Here is a basic IIIF image url for a Library item:
The first part of the url identifies our service: _https://tile.loc.gov/image-services/iiif/_
The second part identifies the particular primary resource: _service:gmd:gmd370:g3701:g3701p:rr000950_
Now this is where things get cool. The remaining part of the url describes the way that we want to see the image: _/full/pct:3.125/0/default.jpg_
Do you want a different format? Ok pick one and just ask for it by changing _default.jpg_ to _default.gif_:
* default.gif (GIF): https://tile.loc.gov/image-services/iiif/service:gmd:gmd370:g3701:g3701p:rr000950/full/pct:3.125/0/default.gif
* default.png (PNG): https://tile.loc.gov/image-services/iiif/service:gmd:gmd370:g3701:g3701p:rr000950/full/pct:3.125/0/default.png
* default.pdf (PDF): https://tile.loc.gov/image-services/iiif/service:gmd:gmd370:g3701:g3701p:rr000950/full/pct:3.125/0/default.pdf
Maybe you are using a tool chain that works better processing in gray scale or bitonal. Just ask!:
* gray.jpg (Gray Scale): https://tile.loc.gov/image-services/iiif/service:gmd:gmd370:g3701:g3701p:rr000950/full/pct:3.125/0/gray.jpg
* bitonal.jpg (Bitonal): https://tile.loc.gov/image-services/iiif/service:gmd:gmd370:g3701:g3701p:rr000950/full/pct:3.125/0/bitonal.jpg
Was the image scanned at an incorrect rotation, or maybe some part of this image is best referenced at a specific rotation? Many items can have text in multiple orientations on the same page such as hand drawn maps from Jed. Hotchkiss. Similarly, Rosa Park’s signature on her voter registration card is at 90 degrees. Just ask for the correct rotation of 0,90,180, or 270:
* 90/default.jpg (90 degrees): https://tile.loc.gov/image-services/iiif/service:mss:mss85943:0026:15:0002/1203,48,233,943/125,/90/default.jpg
* 180/default.jpg (180 degrees): https://tile.loc.gov/image-services/iiif/service:gmd:gmd388m:g3880m:g3880m:gcwh0001:ca000038/786,1072,902,407/705,/180/default.jpg
* 270 (270 degrees): https://tile.loc.gov/image-services/iiif/service:mss:mss85943:0026:15:0002/1203,48,233,943/125,/270/default.jpg
Maybe the image is a negative and all the writing is mirror image. No problem!
In this example I’m going to pretend we are researching James Buchanan and Harriet Lane Johnston Papers and when browsing a folder we notice a page might be missing. We can see the page ghosted in the page that was pressed up against it (https://www.loc.gov/resource/mss14258.001_0226_0314/?sp=39), so we try to compare it to a signature on another page
* !0/default.jpg (Vertical Mirror): https://tile.loc.gov/image-services/iiif/service:mss:mss14258:001:0200:0264/1222,3511,1303,413/572,/!0/default.jpg
Compare this to our other signature now: https://tile.loc.gov/image-services/iiif/service:mss:mss14258:001:0200:0274/466,3312,1280,359/623,/0/default.jpg
* Horizontal Mirror: https://tile.loc.gov/image-services/iiif/service:gmd:gmd370:g3701:g3701p:rr000950/full/pct:3.125/!180/default.jpg
So far we have been requesting an image thats 3.125 percent of the original images size. Why 3.125? Well it’s a math thing related to powers of two. That helps us be more efficient since these sizes require less server processing. But we can do arbitrary percents, specific widths, heights:
* pct:15/0/default.jpg (15 percent of the original size): https://tile.loc.gov/image-services/iiif/service:afc:afc1991021:afc1991021_45581/full/pct:15/0/default.jpg
* 512,/0/default.jpg (512 pixels wide): https://tile.loc.gov/image-services/iiif/service:sgp:sgpbatches:batch_dlc_doggerbank_ver01:data:sn78004456:print:1917020401:0001/full/512,/0/default.jpg
* ,512/0/default.jpg (512 pixels high): https://tile.loc.gov/image-services/iiif/service:music:muscambini:10001:0002/full/,512/0/default.jpg
So far we’ve mostly been viewing the _full_ image, but a lot of what makes IIIF useful for researchers is being able to reference arbitrary regions of interest. Lets say I’m trying to research how the railroads affected the local economy of eastern West Virginia. I could reference this image:
* 16374,5055,1342,732/532,/0/default.jpg (Specific pixel region) https://tile.loc.gov/image-services/iiif/service:gmd:gmd370:g3701:g3701p:rr000950/16374,5055,1342,732/532,/0/default.jpg
* 16374,5055,1342,732/full/0/default.jpg (Same region a full resolution) https://tile.loc.gov/image-services/iiif/service:gmd:gmd370:g3701:g3701p:rr000950/16374,5055,1342,732/full/0/default.jpg
And that a course in the basics of IIIF Image. There is even more to IIIF that helps describe larger objects that contain many images, such as a newspaper issue, book, manuscript etc. That’s part of what’s called the IIIF Presentation API and it’s a little to technical to get into here.
What is the Library of Congress doing with IIIF now?
I was first introduced to IIIF when I was doing open source work on software called OpenSeadragon, which is used to provide the zooming interface on the website. The IIIF community reached out and asked if we could add default support for IIIF in OpenSeadragon. That encouraged us to update our image services to speak IIIF as well.
The Library has been serving IIIF for a few years now. Our own website uses IIIF images for the zoom viewer and to provide downloads at different resolutions. As the volume of requests has increased we have had to scale from 2 servers to 6 servers in production. At peak business hours are serving up to 30 IIIF Image requests a second not including images cached from previous requests.
Not all of our content supports IIIF Image unfortunately. Content with master TIFFs and service JP2 derivates are basically the ground floor for getting IIIF support for content. Geography and Maps, American Folklife Center, Manuscripts and now books from General Holdings all have pretty good IIIF support for their images. Music Division has been creating JP2 for new content. The Repository team, Muhibo Yusuf in particular, has been helping to start the process of backfilling IIIF support by creating the service derivatives we need for content that’s missing it. Overall we provide access to millions of IIIF Image resources.
We are also releasing support for IIIF Presentation that allows links to our resources like newspapers and manuscripts to be dragged into researcher tools like Mirador Viewer to be annotated or transcribed. We have updated our image viewer to preserve the viewport so users can easily share regions of interest (for example https://dev.loc.gov/resource/sn83030214/1919-08-31/ed-1/?sp=4&r=0.411,0.031,0.336,0.676,90)
and we have a new clipping feature that allows users to save these regions of interest then easily embed them in web pages (like blogs!).
What do you see as the possible future for IIIF at the Library of Congress?
It’s really important to make sure we keep our ear to the ground with emerging standards. Our goal isn’t really to marry the technology but to participate with other institutions in a way that best benefits the researcher. If the community supports continues, and developers continue to create platforms and tools around the IIIF APIs, then it makes sense for us to continue to support it.
There are some obvious immediate benefits from supporting IIIF Image. For example, we are excited about being able to offer generalized access to image resources as PDFs for teachers.
We also try to use the IIIF API internally as we develop new features for the public website. For example, our zoom viewer will soon offer a new tool that allows users to select regions of an image and “crop” them. This feature provides the user with a page they can easily share illustrating the region of interest. This make IIIF a really great foundation for image tagging applications.
Here is a nice example of a figure from an early New York Tribune illustrating a row of French Renault tanks.
Being able to share regions of interest and embed them into blogs or other web resources could help engage more users to reference our primary source material and gives us the benefit of being able to get the additional metrics from how our source materials may be being used on the web in the wild.
As machine learning techniques like Optical Character Recognition (OCR) push new boundaries, IIIF Image provides a uniquely efficient way to build new training sets that can easily be shared as lists of urls. For example, I can create a set of hand identified “M” characters from a specific newspaper font set:
I could then easily share a list of urls instead of saving the images and distributing them as part of the data set. Many data sets like this could be combined from various institutions to create new and innovative predictive computer vision models that help researchers in ways we can’t even imagine now!
How would other organizations or individuals who want to learn about IIIF go about doing that?
There are a lot of IIIF resources out there now, but definitely start with http://iiif.io/. If you are technical then you’ll want to read the specifications like http://iiif.io/technical-details/, but you can also get a sense of who is using it and participating here: http://iiif.io/community/#participating-institutions.