Omeka Transcription: How to Make an Omeka S Collection Genuinely Searchable
How to make an Omeka S collection's transcribed text actually searchable, covering the core-search/Solr/IIIF indexing chain, transcription source options (Scripto, DataScribe, OCR/HTR, Leo), and why preserving source fidelity at the transcription step matters most.
Leo Team
July 26, 2026

This is a practical guide to Omeka transcription — how the text of a manuscript or printed book actually gets from a page image into an Omeka S search index without being lost or quietly altered along the way. If you run or plan an Omeka S installation and care about both access and fidelity to the source, it maps the whole chain, names where projects stall, and shows how to keep the source intact at the step that is hardest to audit.
Publishing a collection in Omeka S does not make its contents searchable. Omeka S core search indexes the values you type into property fields — titles, dates, descriptions — not the words written or printed inside your page images. To make the text of a manuscript or a printed book findable, you need three separate things: a transcription of what is on the page, a place to store that text where the search layer can see it, and a full-text index (in practice, Apache Solr) configured to ingest it. Omeka S supplies the storage and, with the right modules, the index. It does not read your pages. That is a distinct job, and where you do it determines whether your collection becomes genuinely usable or just handsomely displayed.
What follows walks through the whole chain — what "searchable" actually means in Omeka S, where transcription fits, and how to get the text from the page into the index without silently losing it. It is written for archivists and librarians running or planning an Omeka S installation, and it assumes you care about both access and fidelity to the source.
What "searchable" means inside Omeka S
It helps to fix the operative definition before touching a module. In an Omeka S deployment, text is searchable when it has been indexed by the relevant search engine — either because Omeka S core search has indexed a property value, or because a Solr field has ingested the text via the Extract Text and AdvancedSearch mapping. The image bytes themselves are never searched. This is the single most consequential fact about the platform, and the most commonly misunderstood.
Omeka S core search is a keyword search across resource property values. It reads what sits in fields like `dcterms:title` and `dcterms:description`. Note that Omeka S, unlike Omeka Classic — which uses Dublin Core by default — implements multiple RDF vocabularies and leans toward linked open data, so your descriptive metadata may be spread across several schemas. Either way, the principle holds: core search sees property values, and nothing else.
That means a reader searching your site for a surname, a place, or a phrase will find it only if that string lives in an indexed property or in a full-text field you have deliberately populated. A 400-page letterbook with a full `dcterms:title` and no transcription is discoverable at the level of "letterbook, 1698–1710" and no further. The words inside remain invisible.
The production full-text stack
Making the contents findable means adding a full-text engine. The documented path is the Extract Text module — which pulls text from DOC, DOCX, HTML, ODT, PDF, RTF, TXT and XML files, and can OCR images via Tesseract — aggregating an "extracted text" property at media and item level. That property then needs an index. The current live stack pairs the AdvancedSearch module with the SearchSolr adapter and an Apache Solr instance (Solr 5.1.0+, PHP 8.0 or later). Note that the older Search module by the same author is officially deprecated in favour of AdvancedSearch — if a years-old tutorial points you at "Search," it is out of date.
The point holds: Omeka S will index the text you give it, but you have to give it text, in a form the index can read, and wire up the index yourself. None of that produces the text in the first place.
Where the transcription comes from — and where it lives
Transcription is human-produced (or, increasingly, machine-produced) text that reflects what is on the page. It is not the same as OCR, which is automated glyph classification tuned for printed typefaces, nor the same as HTR — handwritten text recognition, a specialised form of OCR for manuscript hands. Omeka S is agnostic about which you use; it cares only about where the resulting text ends up and whether the index can see it. Broadly, four routes feed transcription into an Omeka S collection.
Crowdsourcing inside Omeka S — Scripto
Scripto is maintained by the Omeka team and lets members of the public transcribe media attached to items. One caution the documentation makes plain: Scripto for Omeka S and Scripto for Omeka Classic are separate products with separate codebases. The current Scripto for Omeka S is 1.5.0 (20 June 2024) and requires Omeka S 4.0 or later plus a MediaWiki install (1.30.0+) on the same server. That MediaWiki dependency is a real infrastructure commitment, so plan for it.
Structured-data transcription — DataScribe
For tabular sources — registers, ledgers, census returns — the NEH-funded DataScribe module provides structured-data transcription tools that write to Omeka S fields rather than producing OCR of the page image. It is the right tool when your goal is a dataset, not a running text.
Import from an external transcription platform
FromThePage states that its transcripts can be imported to Omeka S to build exhibits or digital editions, though the precise field-mapping schema is not publicly documented and the likely path runs through the CSV Import module. Similarly, if you organise research photographs in Tropy, its experimental Omeka S export can move item metadata, photos and notes across — with the caveat, reported in the Tropy support forums, that tag transfer is inconsistent. If Tropy is already the hub of your imaging workflow, our comparison of where Tropy and a transcription engine each belong sets out the division of labour in more detail.
Machine transcription outside Omeka S, imported as text
You can transcribe elsewhere — with OCR, HTR, or a specialist engine — and bring finished text in as a property value or an attached file that Extract Text can read. This is the route that scales when the material is old handwriting or historical print, precisely because that is where the other options run into limits.
Why the transcription step is the hard part
The two ends of this chain — organising a collection, indexing text — are well-trodden. The middle is where projects stall, and the reason is worth stating plainly.
Crowdsourcing is accurate but bounded
Volunteer transcription can reach good quality: Zooniverse guidance holds that two to five transcribers per image yields generally accurate output. But throughput is finite. The Library of Congress "By the People" programme, one of the largest efforts of its kind, transcribed 166,718 pages across the whole of fiscal year 2024; the Smithsonian Transcription Center reports roughly 1.6 million transcribed pages across some 108,000 volunteers since 2013. Those are substantial numbers built over years. Measured against a backlog of tens of thousands of pages in a single collection, they explain why so many holdings never get past the finding-aid level.
General OCR reads the wrong material
Default OCR engines — Tesseract's general models, ABBYY out of the box, Google Cloud Vision — are trained on clean modern type. They degrade sharply on historical print and fail on cursive hands. This is not a marginal effect: the OCR-D project ships separate Fraktur language packs precisely because the default models cannot read blackletter. The failure mode is specific and predictable. The long s (ſ) is read as f. Ligatures split or drop. The macron or titulus standing for an omitted nasal has no representation in a modern-type model, so it is discarded or mangled. Archaic u/v and i/j interchange gets "corrected" by post-processing. Show-through and uneven inking are read as character evidence. If you feed early-modern books to a modern OCR engine, you index a text that is subtly wrong throughout — and wrong in ways a reader cannot see until they check the image.
Specialist HTR reads old hands, but usually asks you to train a model first
The specialist engines — Transkribus, eScriptorium with Kraken, OCR4all — read manuscript hands where general OCR cannot, and they can reach strong accuracy. In one published pipeline, OCR4all reached a 6.99% character error rate on 490 triple-checked pages, improving with further training. Transkribus offers a public catalogue of 431+ free models and lets you train your own. But that is the cost: these tools almost always require finding a suitable model or training one on your specific hand, language and document style. For an archive with heterogeneous holdings — several centuries, several languages, dozens of clerks — the model-training overhead is a project in itself before a single page is indexed.
If you are weighing these classes of tool against each other in earnest, our honest comparison of handwriting transcription software works through the trade-offs in full, and the broader HTR software comparisons hub sets each option in context.
Producing the text: zero-shot transcription that preserves the source
For the machine-transcription route — the one that scales to an archive's backlog — the friction is either accuracy (general OCR) or setup (train-your-own HTR). Leo is built to remove both for Latin-script material.
Leo's transcription engine, ATR-1, is a specialised model that reads handwritten and printed documents in the Latin alphabet — whatever the language on the page. English, French, German, Dutch, Spanish, Italian and the other major European languages are all in scope; the constraint is the writing system, not the language, so non-Latin scripts (Greek, Cyrillic, Hebrew, Arabic, and East Asian systems) are out of scope. It reads manuscript hands — secretary, cursive, court — and it reads historical print, including the blackletter and Fraktur, long s, ligatures and typographic abbreviation that break conventional OCR. It runs zero-shot: no model to find, no per-collection training step before you can transcribe. On a randomised 97-image sample of early-modern English manuscripts from the Folger Shakespeare Library, ATR-1 scored roughly a 5% character error rate at release — about 61% fewer errors than the next-best model tested, with Transkribus's Text Titan I near 13% and general LLMs considerably higher — figures and full method here.
For an Omeka S workflow, the point that matters most is source integrity. ATR-1 is trained to transcribe what is on the page rather than to normalise it: strikethroughs, additions, marginal notes, editorial expansions and archaic spelling are preserved, not silently smoothed into modern prose. That fidelity is precisely what you want feeding a search index, because a transcription that "corrects" its source produces an index that returns confident, wrong answers. When errors do occur, they are the recoverable kind — a wrong character or word, checkable against the image displayed beside the text — rather than the fluent fabrications a general LLM produces, which read plausibly and are therefore hard to catch. On that difference between garbled-but-obvious and fluent-but-wrong, our note on LLM transcription errors is worth reading before you trust any machine output into an index.
In practice, the flow is: transcribe in Leo, verify against the image, then export. Leo exports text to PDF, Word, HTML and TEI (XML). For the Omeka S index, the practical formats are Word, HTML or plain text, which Extract Text reads directly; TEI is the scholarly export where you want an encoded edition. Leo handles transcription and a working document environment — it does not do IIIF packaging or preservation packaging, which remain Omeka S's and your repository's job. One honest limitation to note if your collection is heavy in pre-printed forms: pages that mix a dominant printed structure with dense handwriting — deed-book and ledger templates — are the known weak spot, where the model can favour the printed headers over the manuscript entries.
Getting the text into the index — and not losing it there
Having produced good text, you still have to store it where Solr will see it. This is the seventh and subtlest of the common misconceptions: that where you store a transcription is irrelevant because Omeka S will find it regardless. It will not.
Text placed in a property value, or in Extract Text's aggregated "extracted text" field, is visible to Solr once mapped through AdvancedSearch. But a transcription that exists only as TEI XML attached as media, only as a IIIF Web Annotation, or only as ALTO/PAGE layout files is not automatically indexed by the default Solr and AdvancedSearch configuration without a dedicated reader module. The module documentation gives no consolidated index-coverage matrix, so treat this as a design decision to test explicitly rather than assume. Before you transcribe a thousand pages, index ten and search for a word you know is on page seven.
IIIF adds a second, parallel path — and its own misconception, that IIIF alone makes images searchable. It does not. IIIF delivers and zooms images; searching within them requires a IIIF Content Search service. In Omeka S, the IiifSearch module provides that endpoint, reading common OCR formats (ALTO, hOCR, abbyyXML, TSV) to index text on canvases and pairing with a viewer such as Universal Viewer or Mirador so a reader can search inside a manifest and jump to the hit. The Extract OCR module covers the PDF case. This in-viewer search is a genuinely different affordance from site-wide property search, and if word-level highlighting on the page image matters to your readers, it is worth building. Note that live compatibility between the latest tagged IiifSearch and the current IIIF Server release is not openly documented, so budget testing time.
If you are planning searchability from scratch rather than retrofitting it, our planning guide on making archives searchable maps the choice between finding-aid metadata and full-text transcription onto the pipeline each requires, and the archival digitization workflow guide situates text recognition among the stages around it.
The order that actually works
The mistake that costs the most is treating searchability as a switch to flip after publication. It is a chain, and each link constrains the next. Decide first what "findable" means for your readers — a title-level catalogue, or every word on every page. If it is the latter, choose your transcription route by the material, not the platform: crowdsourcing for community engagement on manageable volumes, structured tools for tabular data, and a zero-shot specialist engine where the backlog is large and the hands are old. Then place the resulting text where your index can read it, and verify that it can with a test search before you scale.
Above all, protect the source at the one step that is hardest to audit later. A collection indexed from a transcription that quietly modernised its spelling, dropped its abbreviations, or invented a plausible reading is worse than one that is merely incomplete, because it looks finished and answers with false confidence. The measure of a searchable archive is not how much text sits behind the search box. It is whether the text that comes back is faithful to the page it came from.
Frequently Asked Questions
How do I make an Omeka S collection full-text searchable?
Omeka S core search indexes only the property values you type into fields like `dcterms:title` and `dcterms:description` — never the words inside your page images. To make page contents findable you need three things: a transcription of what is on the page, storage where the search layer can see it, and a full-text index. The documented path pairs the Extract Text module (which reads DOC, DOCX, HTML, ODT, PDF, RTF, TXT and XML, and can OCR images via Tesseract) with the AdvancedSearch module, the SearchSolr adapter and an Apache Solr instance. You supply the text; Omeka S indexes it.
What is the difference between OCR, HTR and transcription?
Transcription is human- or machine-produced text that reflects what is on the page. OCR — optical character recognition — is automated glyph classification tuned for clean modern printed typefaces. HTR, handwritten text recognition, is a specialised form of OCR built for manuscript hands. General OCR engines degrade sharply on historical print and fail on cursive writing, misreading the long s as f, splitting ligatures and discarding abbreviation marks. Specialist HTR engines read old hands where OCR cannot, but usually require finding or training a model first. Omeka S is agnostic about which you use; it cares only whether the resulting text reaches an index it can read.
Does Scripto work with both Omeka S and Omeka Classic?
Scripto for Omeka S and Scripto for Omeka Classic are separate products with separate codebases, so a version built for one will not run on the other. The current Scripto for Omeka S is 1.5.0, released 20 June 2024, and it requires Omeka S 4.0 or later plus a MediaWiki install (1.30.0 or newer) on the same server. That MediaWiki dependency is a real infrastructure commitment rather than a plug-in you switch on, so plan for it before committing to Scripto as your crowdsourcing route. Scripto lets members of the public transcribe media attached to items and is maintained by the Omeka team.
Why does general OCR fail on early-modern books?
General OCR engines — Tesseract's default models, ABBYY out of the box, Google Cloud Vision — are trained on clean modern type and degrade sharply on historical print. The failure mode is specific: the long s (ſ) is read as f, ligatures split or drop, and the macron standing for an omitted nasal has no representation in a modern-type model, so it is discarded or mangled. Archaic u/v and i/j interchange gets "corrected" by post-processing, and show-through or uneven inking is read as character evidence. The result is a text that is subtly wrong throughout — and wrong in ways a reader cannot see until they check the image against it.
Will Omeka S automatically index a transcription however I store it?
No — where you store a transcription determines whether it is searchable. Text placed in a property value, or in Extract Text's aggregated "extracted text" field, is visible to Solr once mapped through AdvancedSearch. But a transcription existing only as TEI XML attached as media, only as a IIIF Web Annotation, or only as ALTO/PAGE layout files is not automatically indexed by the default Solr and AdvancedSearch configuration without a dedicated reader module. The module documentation gives no consolidated index-coverage matrix, so treat storage as a design decision to test. Before transcribing a thousand pages, index ten and search for a word you know is on page seven.