Engraved frontispiece of Michael Maier's Atalanta Fugiens (Oppenheim, 1617), an alchemical emblem book digitized by e-rara and re-hosted on Source Library

How IIIF Helped Us Translate the Renaissance

One image standard turned thirteen institutional archives into a single input layer for an AI pipeline — and let us hand the results back to the whole IIIF world.

2 June 2026 · 14 min read · Notes accompanying a lightning talk at the IIIF 2026 Annual Conference, Leiden & The Hague

The hero image above is the engraved frontispiece of Michael Maier’s Atalanta Fugiens (Oppenheim, 1617), an alchemical book of fifty emblems set to music. It reached Source Library as a single line in a manifest published by e-rara, the Swiss rare-books platform run from the ETH Library in Zurich — the same kind of manifest published by the Bodleian, by Gallica, by the Vatican, by the Bavarian State Library. That shared format is IIIF, the International Image Interoperability Framework, and it is the reason a small team could take rare books from a dozen of the world’s great libraries and turn them into readable, translated, citable English editions at a scale that would otherwise be impossible.

Source Library is on a mission to translate the Renaissance. We started inside the Bibliotheca Philosophica Hermetica (the Embassy of the Free Mind) in Amsterdam, and we now hold roughly 30,000 publicly visible works in Latin, German, Hebrew, Arabic, Sanskrit, Chinese and more — with over 6,000 first-ever English translations you can read today and nearly 143,000 illustrations extracted from their pages. This is the story of how IIIF made that possible, told from both sides of the standard: as a consumer, and as a publisher.

What IIIF is, in one breath. A set of open APIs that let any library describe a digitized object — its pages, their pixel dimensions, the order they go in, who holds it, what you’re allowed to do with it — in a manifest that any compliant viewer can open. The companion Image API lets you ask for any region of a page at any size with one predictable URL. Adopted by hundreds of institutions, it is the closest thing the cultural-heritage world has to a universal plug.

Listen to the talk

The five-minute lightning talk as delivered at the Scheltema in Leiden, 2 June 2026 (lightly trimmed). It is, in Derek’s own words, “a love letter to IIIF.”

Read the transcript

Hello, I'm Derek Lomas, Director of the Digital Collection at the Embassy of the Free Mind in Amsterdam. This is our brand new website; it launched last week. This library is special; it has a Guinness record for the largest library devoted to magic and mysticism. It is a really, really special place, and I've been going there for the past few years. I'm a design professor at TU Delft, and much of my work focuses on design philosophy. So, looking at topics like harmony and resonance, which are esoteric topics, I found this library to be incredible. The problem is that it's all in Latin, or most of it. I have a couple years of Latin, but it's really not good enough. So I started working with them to translate their Latin works, which you can find in their digitized catalog.

Now, there are probably on the order of 300,000 Latin works from the Renaissance, and about 3% of them have been translated. Many people don't know that; they think that with Latin, we've kind of covered that. The Loeb Classical Library is incredible, but very, very little of it has anything to do with the neo-Latin works of the medieval and Renaissance. I think Marx even published in Latin. I also don't read German — I know I'm married to a German, but I don't read German. I don't read French. There are a lot of languages I don't read. Actually, I only read English.

So, the thing was that we were working with the Embassy of the Free Mind, and it was taking a long time to get their digitized works. Dan Brown, the author of the Da Vinci Code, donated to scan these books, because he wrote much of the Da Vinci Code based on the works in the collection — also known as the Bibliotheca Philosophica Hermetica. These books were kind of locked away in an outdated database system, and so we were waiting. I was busy trying to build a pipeline to translate these books with the new Gemini 3 models, which we heard earlier today are just incredible for transcription and translation. I was impatient, and I was also trying to do my research on metadata standards for libraries. I knew some of the standards, but then I stumbled across IIIF, and I had no idea — and it was so magical. Because of that, we created this organization called SourceLibrary.org.

This is where we are trying to translate the Renaissance, and because of IIIF, we've now done 15,000 books. It's not so easy to prove a negative, but it seems that about 8,000 or so of these books have never been translated before. And not just the back catalog; some really incredible books, like Robert Fludd's "The Greater and Lesser of Two Worlds," where there are selected translations here and there, but no one took the time to translate a thousand-page Latin tome that has beautiful imagery. A lot of these books have really incredible illustrations. Here's Jacob Böhme, and they have little bits of Latin in there.

So this is what we've got: a facing-page system where you can see the original text, and you can see the OCR — if it's still appropriate to call it OCR these days — and you can see the language models that were used. So here it's the 3 Flash model, and then you have the English over here. Now, when you throw these things into search — if you use Claude, we've got an MCP, you can connect to this, this is all free, this is all AGPL, open source, Creative Commons — and if you connect to the MCP, it is just incredible. Because not only are there the Latin works that I don't read, there are also the Chinese works and the Sanskrit works, the Armenian works. There's so much that I can't read, and now Claude is able to do these cross-cutting investigations. The Embassy of the Free Mind focuses on things like alchemy. Well, there's a huge Sanskrit alchemy tradition; there's a huge Chinese alchemy tradition, and no one is an expert in all three. Being able to find these links, to put all of these books in one place so you can search through it all — and to search by images too — is really, really fun.

So this whole talk is basically a love letter to IIIF. Really, what you all have done is remarkable; it's magical. I didn't know it existed, and I felt like I was just able to take advantage of this. So I want to buy you all drinks, and I really encourage you to check out SourceLibrary.org. I also encourage you to visit the Embassy of the Free Mind — that's embassyofthefreemind.com. It's in Amsterdam, on Keizersgracht 123. Source Library is on the fourth floor, so 1-2-3-4. I'm really into Pythagoreanism. And on Thursday evening we're having an official beta launch of Source Library. I just hope to be in touch with all of you, and I thank you for the work that you do.

A universal input layer

Before IIIF, ingesting a book from each new institution meant writing a new scraper against a new bespoke viewer, with its own URL scheme, its own tiling quirks, its own login walls. The promise of IIIF is that the shape of the data is the same everywhere. Point the same importer at a Gallica manifest or a Bodleian manifest and the page images come out the same way. The institution changes; the code does not.

That uniformity is what let us treat thirteen-plus archives as a single faucet feeding one downstream pipeline. Everything past the manifest — OCR, translation, illustration detection, scholarly publishing — is identical regardless of who digitized the book.

Gallica / BnFBodleianVaticanMDZ Muniche-raraWellcomeCambridgeInternet ArchiveOne importerparses v2 & v3One pipelineOCR · translateReadableEnglish book
IIIF as a fan-in. Many institutions, one manifest shape, one importer, one pipeline. The interoperability promise is most powerful when the consumer on the right is not a human viewer but a machine.

Here is what that machine consumer actually looks like. Asked to explore the historical libraries discussed in the collection, Claude works through Source Library, surfaces the relevant works, and — on a follow-up to find quotes — returns exact passages from Gabriel Naudé’s Advice on Establishing a Library (1627), each with a page number and a citation link back to the original:

An AI reading the library (sped up). Claude reaches Source Library through its connector, works the collection, and returns grounded quotes with page numbers and citation URLs back to the original folios — the interoperability promise, with a machine on the other end. The same content is exposed as IIIF for any viewer.

From manifest to readable book

When a book enters the library, its IIIF manifest is the seed. Our importer detects the version — IIIF Presentation 2.x stores canvases under sequences[0].canvases[], while 3.0 puts them under items[] — walks every canvas, and resolves each page to a canonical Image API URL. From there a single pipeline carries the book the rest of the way.

A principle we hold firmly: every page image is mirrored to our own storage (Cloudflare R2) as soon as the book is imported. About 99.8% of pages now serve from our mirror. We credit and link the source institution on every book, but a reader who lands here never depends on an upstream endpoint that might rate-limit, move, or disappear.

1IIIF manifest
fetch v2 or v3
2Parse canvases
walk to page image URLs
3Mirror to R2
copy every page to our storage
4Gemini OCR
read each page
5Translate
render English
6Enrich
summary, index, chapters
7Detect images
find & crop illustrations
8Publish
readable & citable /book
ingest AI processing published

The books arrive hidden. Nothing becomes publicly visible until it has been through OCR, translation, and a quality pass — the visible flag flips only at the end. The whole sequence, from a Gallica manifest to a readable, translated English edition, runs unattended; minting a citable DOI through Zenodo is a separate, deliberate publishing step on top.

The line that does the work

The quiet hero of the whole arrangement is the IIIF Image API URL. It is a small grammar that lets you request any region of any page at any size, by rotation and quality, just by editing the path. Here is a real one — how a viewer asks the Wellcome Collection’s image server for a full page at 1600 pixels wide:

https://iiif.wellcomecollection.org/image/b33599051_0001.jp2/full/1600,/0/default.jpg
identifierregionsizerotationquality.format

Change /full to a pixel box and you get a crop; change /1600, to /200, and you get a thumbnail. Same page, same grammar, three characters apart.

That grammar is why thumbnails, reading-size pages, and the multi-thousand-pixel crops our illustration detector needs are all the same request with three characters changed. It is also why, for the small tail of books we still serve from an upstream IIIF server, external viewers get true deep-zoom for free: we hand the viewer the provider’s image service and it tiles on demand.

The parts that are hard

The clean story above hides a lot of friction. IIIF standardizes the shape of the data, but not the politics of getting it — and a project that fetches millions of images has to be a good citizen or it gets (rightly) blocked.

Rate limits, and being polite

Library and museum image servers throttle aggressively, and they should. We keep a per-host token bucket with deliberately conservative limits and exponential backoff on every fetch. These are real numbers from our fetcher — requests per second, per host:

HostLimit (req/s)
Internet Archive10
British Library / EAP (CloudFront)15
MDZ Munich · Wellcome5
Gallica · Vatican · Bodleian · Cambridge · Manchester · NDL · Allard Pierson3
e-rara2
anything else (default)5

Those small numbers add up. A single corpus-wide re-archive job to pull full-resolution illustrations from the British Library’s Endangered Archives meant roughly 240,000 pages × 9 image tiles each — about 2.16 million requests. Done impatiently, that’s an accidental denial-of-service against a cultural institution. Done at fifteen requests a second behind their cache, it’s invisible. The rate limit isn’t a nuisance to route around; it’s the terms of the relationship.

The datacenter problem (and an accidental gift from IIIF)

Some institutions — Harvard, and apparently Gallica — serve residential IP addresses happily but rate-limit datacenter IPs hard. Our import server runs on Vercel, in a datacenter, so its requests get 429’d while the same manifest opens fine in a browser at home. The workaround is to fetch the manifest from a residential connection and insert the book directly.

Here IIIF’s architecture quietly saves us. Because the manifest is separate from the images — it merely references image URLs that are then served straight to the reader’s browser — we only need to fetch the manifest once. The facsimile renders for every reader afterwards even if our own servers never successfully fetch those images datacenter-side. Separating presentation metadata from pixels turns a hard block into a one-time, low-volume fetch.

Browser gates, version drift, and the things we won’t do

  • Browser gates. Some viewers hide the manifest behind a JavaScript or Cloudflare challenge (the International Dunhuang Programme is one). There is no clean API call; you have to drive a real browser to get the manifest at all.
  • Version drift. Presentation 2.x and 3.0 nest their canvases differently, and plenty of “IIIF” endpoints are partial — a valid manifest with no Image API service (so no deep zoom), metadata in a dozen idiosyncratic shapes, the occasional canvas pointing at a missing image.
  • Terms we honor. Some sources prohibit automated download outright (ctext.org, the National Library of China). We don’t ingest them, even where it would be technically trivial. “Can” is not “may,” and a library that didn’t respect that wouldn’t deserve the name.

When there is no manifest

Not everything publishes IIIF. A great many digitized books live behind a bespoke viewer, an OAI-PMH feed, a discovery layer, or nothing more than a download link. IIIF is our preferred on-ramp, not our only one — so when there’s no manifest, we fall back, roughly in this order:

  1. 1.Another catalog API. OAI-PMH, SRU, or a discovery API like Primo VE (which we sometimes drive through a real browser session) gives us a candidate list and enough metadata to dedupe and locate the page images, which we then assemble ourselves. This is how we harvested KU Leuven’s digitized holdings, where there is no clean IIIF-only facet.
  2. 2.The fallback chain. To find a digitized copy at all, we try Internet Archive → Gallica → HathiTrust → Project Gutenberg in turn. If one source blocks or 403s, we move on rather than fight it.
  3. 3.Direct partner ingest. The founding collection — the Embassy of the Free Mind’s own rare books — comes straight off the institution’s scanning archive, never via IIIF. (Those scans bring their own puzzles: many are two-page spreads that have to be detected and split before the pipeline can read a single page.)

The design choice that makes this manageable: every path normalizes into the same book and page document shape — same fields, same content fingerprint for dedup, same provenance record — before anything downstream runs. So the pipeline neither knows nor cares whether a book arrived as a pristine IIIF v3 manifest or was hand-assembled from a browser session. IIIF is the widest, cleanest door into one shared room.

IIIF manifestBrowser-driven viewerCatalog API (OAI / SRU)Partner's own scansNormalized doc+ fingerprint + provenanceOne pipelineOCR · translate · publish
Every on-ramp converges. IIIF is the best entry point, but a browser-driven viewer, a catalog API, the fallback chain, or a partner's own scans all normalize into the same document shape — so one downstream pipeline serves them all.

We give it back

IIIF is not just how books come in. It is also how they go back out. Every book in the library publishes its own Presentation 3.0 manifest:

https://sourcelibrary.org/api/iiif/{bookId}/manifest

Live example: the manifest for Atalanta Fugiens — load it in a viewer and you can search and read its translation.

Point Mirador, Universal Viewer, Clover, or Theseus at that URL and you get the page images — but also something the original manifest never had: our AI-generated OCR and English translation, delivered as Web Annotations that overlay the original folio. The transcription and the translation sit on the very pixels they describe, so you can read the Latin and the English against the page itself, in a viewer the institution already trusts.

Provider manifestpage imagesorder, rightsinstitutionSource Library+ OCR annotations+ translationcredits provider firstAny IIIF viewerMirador · Universal ViewerClover · Theseusreads text on the folio
The round trip. We take a provider's images-only manifest, add OCR and translation as annotations, and republish a richer manifest that any IIIF viewer can open. The digitizing institution is credited first; we are the re-hosting, enriching aggregator second.

Serving annotations from a machine carries an obligation, and we treat it as a hard invariant. AI text is never presented as a faithful human transcription: every annotation carries a Web-Annotation generator labeled “machine-generated, not human-verified,” with the model name attached. And we are scrupulous never to leak the AI’s editorial notes — the little summaries and keyword blocks our pipeline writes about a page — into the transcription, because those describe the page rather than quote it. The whole point of a source library is that what you quote is really on the leaf in front of you.

Two more disciplines that matter to a IIIF audience: the digitizing institution is always listed first in the manifest’s provider array and named in a required-statement (“Digitized by {institution}. Re-hosted with AI-generated OCR and translation by Source Library”); and canvas dimensions use the real digitized pixel size whenever the archiving step recorded it, so a region citation lands on the words it claims. There is also a Content Search 2.0 endpoint, so a viewer can search across a book’s OCR and translation and get back highlighted hits as annotations — a single book’s manifest can return dozens of matches with the exact phrase highlighted on each folio.

Provenance is the whole point

Everything above is in service of one idea, and it is worth saying plainly. We take a book, run it through machine OCR, run that through machine translation, and add machine-written editorial notes. By the time a reader sees an English sentence, it has passed through three layers of automation. The single thing that keeps this honest — that makes it a library rather than a content farm — is an unbroken chain of provenance back to the original leaf.

IIIF is unusually good at carrying that chain, and we lean on it at both ends:

  • On the way in, every book records who digitized it, the URL of the original catalog record, the institution’s own attribution and rights statement, and a content fingerprint (often the IIIF identifier itself) used for deduplication. We mirror the page images to our own storage for speed and reliability — but we never sever the link back. Every book page keeps a live link to the source record and to the upstream IIIF manifest, so a skeptical reader can go check the original for themselves. Ad fontes.
  • On the way out, our manifest credits the digitizing institution first; every AI annotation carries a machine-generated marker with the model’s name; canvas dimensions are the real digitized pixel sizes (when known) so a region citation lands on the words it claims; and we rigorously strip the AI’s editorial descriptions of a page so they can never be quoted as if they were the text on it.

That last point is not theoretical. Early on, a page-description note our pipeline had written about a page — mentioning mercury discussed on a neighboring leaf — leaked into a search snippet and produced a confident citation to words that were not on the page. The fix was to treat the boundary between the author’s words and the machine’s words as sacred, everywhere those words are served. For a human reader that boundary is a matter of trust; for an AI consuming the library through these same manifests, it is the difference between grounded scholarship and fluent invention. Provenance is what lets either one tell the two apart.

Where this could go next

A few directions we’re thinking about — some prompted by the question that started this post: do we really have to hit an endpoint for every single book?

01

Harvest collections, not books — via IIIF Collection documents

Today we mostly enumerate candidates one institution at a time, then fetch each manifest at import. But IIIF already has the right primitive for bulk: the Collection document — a manifest of manifests. A single Collection URL can list thousands of objects with their manifest links and enough metadata to dedupe and subject-filter before we ever fetch a page. Walking published Collections (and the top-level “collection of collections” some institutions expose) would let us snapshot an entire archive’s catalog in a few polite requests, diff it against what we hold, and queue only the genuinely new works. It turns “crawl and hope” into “subscribe and diff.”

02

A local manifest cache + change detection

Even without Collections everywhere, we can store each manifest we fetch with its ETag / Last-Modified and a content hash. Re-imports and re-checks then become conditional requests that mostly return 304 Not Modified — near-zero load on the institution, and we notice when a manifest genuinely changes (a new page, corrected rights, an added DOI). It also makes our imports reproducible: the manifest we built from is on disk, not re-fetched from a moving target.

03

Run a IIIF Image API over our own mirror

Because ~99.8% of our pages live as flat JPEGs on R2, our own hosted books are not currently deep-zoomable in external viewers — only the upstream tail is. The clean convergence is to serve a Level 1/2 Image API over the R2 derivatives: then every page is simultaneously ours, reliable, and zoomable, with no dependency on any upstream server. The most promising path extends our existing image proxy to honor Image API URL syntax and emit info.json, then attaches our image service to the manifest.

04

Publish our own Collections — and a Change Discovery feed

If Collections are good for ingesting, they’re good for sharing. We could expose our holdings as IIIF Collections (by language, by tradition, by source institution) and a IIIF Change Discovery activity stream, so other projects can harvest us the same efficient way — including the first-translation editions that don’t exist anywhere else.

Appreciations

None of this exists without the institutions that did the patient, expensive work of digitizing these books and — crucially — chose to publish them as IIIF rather than locking them behind a bespoke viewer. Every English translation we’ve made rests on their decision to be interoperable. A standard is only as generous as the people who adopt it, and these libraries have been generous.

First among them is the Bibliotheca Philosophica Hermetica / Embassy of the Free Mind in Amsterdam, where this project began and whose collection remains its heart. And then, in gratitude, the archives whose IIIF manifests have become books you can now read in English:

Counts are of imported works by source; many more institutions contribute manuscripts, artworks, and open-access images through IIIF and adjacent APIs (the Rijksmuseum, the Met, the National Gallery, Wikimedia Commons, e-codices, Chester Beatty, and others). To every digitization team, cataloguer, and standards contributor behind these manifests: thank you. You built the rails. We just ran a train on them.

Try it: open the Atalanta Fugiens manifest (or any book’s /api/iiif/{bookId}/manifest) in your viewer of choice, browse the library, search the full text, or wander the gallery of extracted illustrations. Every book keeps the source text next to the English, and credits the library that digitized it.

Source Library is a project of the Embassy of the Free Mind. These notes accompany a lightning talk at the IIIF 2026 Annual Conference & Showcase in Leiden and The Hague. Corrections and feedback are welcome — derek@sourcelibrary.org.

Produced by J. Derek Lomas of Delft University of Technology using Claude Code. .

Comments

Loading comments...

This library is built in the open.

If you spot an error, have a suggestion, or just want to say hello — we’d love to hear from you.