---
title: Transcription and OCR
description: Turn audio, video, and scanned documents into searchable, exportable text with AI transcription and OCR.
section: guides
order: 5
updated: 2026-07-17
verified: 2026-07-17
related: [guides/ai-analysis, reference/supported-file-formats, guides/downloads-and-sharing, guides/community-submissions, guides/contributing-knowledge]
features: [transcription, community-contributions]
---

# Transcription and OCR

You'll turn an oral history or a scanned letter into text that visitors can read, search, click to navigate, and download.

All recognized text in Preservated lives in **text layers** attached to an asset. A text layer knows what kind of text it is (transcript, OCR, caption, extracted), where each piece anchors in the source (a timestamp in a recording, a region on a page), and its quality tier — raw AI output, AI-reviewed, or curated.

## Transcribe audio and video

1. Open the artifact and choose **Transcribe** in the viewer's tools.
2. A cost dialog shows the estimated price for the recording's duration before anything runs.
3. Confirm, and the job runs in the background — leave the page freely.

The result is a time-anchored transcript: each paragraph knows its start and end time, with per-word timings underneath. That enables:

- **Click-to-seek** — click any line of the transcript panel to jump the player there.
- **Karaoke highlighting** — the current word highlights during playback.
- **Search deep links** — site search that matches a transcript shows "Found in transcript at 2:34" and lands you at that moment.

Transcription runs with **speaker labels on by default**, so a recording with more than one voice comes back as a labeled, timeline-anchored transcript — the same `Speaker A` / `Speaker B` chips described in [Name speakers](#name-speakers) below, not just for oral histories. If your museum hasn't configured the speaker-diarizing engine, transcription falls back automatically to a plain (non-diarized) reading — see the note below.

### Compare transcription models

Global admins can use **AI Compare** to test transcription models before changing production workflows. The comparison tool includes AssemblyAI Universal-3.5 Pro, Universal-3 Pro, and Universal-2 alongside OpenAI, Replicate WhisperX, and xAI STT options. AssemblyAI and xAI comparison runs request speaker diarization, so results can show speaker turns as well as word-level timings where the provider returns them.

:::note
The **Transcribe** action described above uses the same AssemblyAI engine by default (Universal-3.5 Pro, with speaker labels on) — AI Compare exists to test alternatives before you'd ever change that production default. If your museum's AssemblyAI connection isn't configured, transcription falls back to a plain OpenAI Whisper reading automatically — no speaker labels, but transcription itself never stalls.
:::

:::note
AssemblyAI also supports prompting and keyterms prompting for domain vocabulary, but Preservated does not send those options yet, on the production default or in AI Compare. They are good candidates for a future pass once we design curator-facing controls for names, places, collection terms, and speaker-label conventions.
:::

### Already have a transcript?

If a recording was transcribed elsewhere, import the existing **SRT or VTT** file instead of paying to re-transcribe — timings are preserved.

## OCR scanned documents

PDFs are classified at import as **born-digital** (text already embedded — a Word export, for instance) or **scanned** (page images from a scanner):

- **Born-digital PDFs** get their text extracted automatically — no OCR needed and none charged.
- **Scanned PDFs** can be OCRed with AI vision. The recognized text is anchored to page regions, so search results land on the right page ("Found on page 3") and text can overlay the page image.

Curators can override the classification per asset if the automatic call gets it wrong (a born-digital PDF wrapping scanned images, for example).

Images get OCR automatically as part of [AI analysis](/docs/en-US/guides/ai-analysis) — useful for signs, captions, and handwriting such as a scanned letter. When an artifact has several images, each one is read on its own, so text on any page or side — not only the first — is recognized and searchable. Whenever an image yields any recognized text, a transcription toggle and a **Search transcription** box appear in the toolbar above the viewer, just like for an audio transcript. Opening the toggle (or typing a search) slides a **Transcription** panel into a side pane to the left of the viewer, where visitors can read it, search within it, and copy it to the clipboard with one click. Even a sentence or two is worth showing, so the toggle appears for any non-empty result.

Document images get the box-aligned treatment automatically, so their text carries word positions for on-page highlighting and the transcript editor:

- **At import**, images belonging to an artifact typed as a document run the box-aligned pipeline when your import's AI settings include OCR.
- **After AI analysis**, any image whose reading amounts to more than a few words — a photographed letter on an artifact that isn't typed as a document, for example — runs the pipeline as a follow-up.

Both routes require spatial transcription to be enabled in your AI settings (it is by default) and count against your AI credits like any other run; if it's switched off, images keep the plain AI-analysis text above.

## See where each word sits on the page

When a document's text layer carries word-level geometry — embedded text from a PDF, or output from the box-aligned OCR pipeline — the artifact page connects the text to the page image. Whether the asset is an image or a PDF, the text appears in the same **Transcription** side pane, opened from the toolbar's transcription toggle. The toolbar's **Search transcription** box searches it, and the pane's own header carries the copy button and (for staff) the edit link.

- The page stays clean by default: no boxes are drawn until you point at a word. Hover a word in the Transcription pane and a thin yellow outline appears around that word on the page image.
- **Searching highlights every match on the page.** Type in the toolbar's search box and all matching words light up in yellow on the image as you type, and the pane opens automatically if it wasn't already. On multi-page documents, clicking a match in the filtered list jumps the viewer to that word's page, with the hits highlighted there too.
- **Click** a word to keep it highlighted while you compare the reading against the original handwriting or print. Click anywhere else, or press Escape, to release it.
- **Select a passage** in the Transcription pane — a phrase, a sentence, several lines — and every word the selection covers lights up on the page image at once, so you can trace a whole passage back to its place in the original. Clearing the selection (or pressing Escape) clears the highlights.
- If the engine's raw reading differed from the displayed text, hovering shows the original reading.
- On multi-page PDFs, clicking a word in the panel jumps the viewer to that word's page.
- Where the museum allows it, the panel offers a **Suggest corrections** link for signed-in visitors, opening a dedicated editor for fixing misread words and lines — see [Suggest a transcript correction](/docs/en-US/guides/contributing-knowledge#suggest-a-transcript-correction).

Text layers without geometry show the same panel — the text is searchable and copyable, it just doesn't light up on the page.

## Edit a transcript

Transcript correction is a listening task, so editing happens beside the player: on the artifact edit page, click the asset's preview to open its details, then choose **Edit** in the transcript panel. Each paragraph becomes a text box; **Save as curated** stores your corrections as a new curated layer.

Paragraphs you didn't touch keep their word-level timings, so karaoke highlighting and word click-to-seek keep working across the rest of the recording. Edited paragraphs fall back to paragraph-level sync — click the line's timestamp to jump there.

The artifact edit page also shows a compact **Transcript** card in the Assets column — quality tier, language, paragraph and word counts, speakers, and a short preview — with an **Open transcript** link to the artifact page. It's a presence check, not an editor.

## Correct document text word by word in the transcript editor

Admins and editors get a dedicated **transcript editor** for reviewing and correcting a document's recognized text at the level of individual words and their positions on the page. Open it with **Edit transcription**, in the header of the artifact page's Transcription pane, or go directly to `/your-institution/transcripts/<artifact-id>`.

When visitors have suggested word or line corrections for the artifact you're viewing, the editor's toolbar shows a **pending corrections** count linking to the review queue — see [Reviewing a transcript correction](/docs/en-US/guides/community-submissions#reviewing-a-transcript-correction). Whether visitors can suggest corrections at all is controlled from **Admin → Settings → Community contributions** — off by default.

Where transcript corrections are turned on, eligible signed-in visitors get a restricted view of this same editor — a **Suggest corrections** link opens it with dragging turned off and no Run/History tools, so they can fix line text across several files at once and send it all as a single submission for your review. See [Suggest a transcript correction](/docs/en-US/guides/contributing-knowledge#suggest-a-transcript-correction). Everything from here through the rest of this section — moving and resizing boxes, running the pipeline, the History tab — is staff-only.

The left pane shows one file at a time in the same viewer as the artifact page, with every word's box outlined on the page; a filmstrip below switches between the artifact's files. Click the image to enter the zoomable deep-view — that's also where you edit geometry, so you can zoom into cramped handwriting while you work. Pointing at a word on either side highlights it on the other.

The right pane shows, for the active file:

- **LLM read** — the AI reading of each page, one tab per model that has read this document. **Add text extraction** sends the page images to another model for a second or third opinion (a cost estimate appears first); every reading is kept, so you can compare how different models handled a difficult hand. Each retained reading also offers **Use for alignment**, which re-matches that reading's words to page positions using the document's retained Cloud Vision boxes (or, for a PDF's embedded text, the text's own positions) instead of re-reading the page. That matching step is deterministic, not AI, so there's no cost and no confirmation dialog — it finishes instantly and, like a pipeline run, requires an extra confirmation to replace a reviewed or curated transcript. The reading currently behind the merged transcript is marked **Backs current alignment**.
- **Cloud Vision** — the raw text detection that produced the word boxes. Runs from before this feature shipped didn't retain their raw readings; a fresh pipeline run captures them.
- **Merged (editable)** — the aligned transcript, where you edit.

### Edit words and boxes

- **Move or resize a box**: in the deep-view, drag a box to move it, or drag a corner handle to resize. A plain click only selects — a box never moves by accident.
- **Fix a word's position**: words with no box show a dashed outline in the transcript. Click one and a dashed suggested box appears on the page, sized and placed from its neighbors; drag or resize it to confirm the placement, and it becomes solid like the rest.
- **Correct a misread word**: double-click it in the transcript, type the right reading, and press Enter (Escape cancels). The word keeps its box — only the text changes.
- **Add a missing word**: click between two words in the transcript to get a text cursor, and type. Each word you enter appears with a dashed suggested box, ready to be placed the same way.
- **Delete a word**: select it (in the transcript or on the page) and press Delete. That removes both the word and its box; deleting every word on a line removes the line from the transcript immediately.
- **Undo/redo**: Ctrl+Z / Ctrl+Shift+Z (or the toolbar buttons) step through your edits per file, all the way back to the loaded state.

**Save** writes all files' edits at once, one save per file, each creating a new **curated** layer. Words whose box you never confirmed are saved as text without a position — you can place them in a later session. If someone else (or a new pipeline run) changed one file's transcript while you were editing, only that file's save is refused — your edits to other files still save, and the refused file keeps its local edits until you reload it. Your edit is never merged onto text you didn't see.

When a file's current text came from the box-aligned pipeline, its header summarizes how well the AI reading matched the detected boxes and flags low-confidence lines — click the flagged count to see just those. Words the engine read differently show a dotted underline (hover for the original reading), and low-confidence words appear dimmed.

The **History** tab lists every pipeline run per file (date, model, pages, match statistics). Each file has its own **Run / Re-run** button, and **Run all** starts the pipeline for every file that isn't already reviewed or curated. Either way, a confirmation shows the total page count and estimated cost before anything is charged; including reviewed or curated files requires an explicit extra confirmation, because a re-run supersedes human-edited text with fresh AI output. If spatial transcription is switched off in your AI settings, the editor still works for viewing and editing, but running the pipeline and adding extractions are unavailable.

## Name speakers

Transcripts from diarizing providers label who's talking with generic tags like `Speaker_00`; imported VTT captions can carry voice names too. The transcript panel shows these labels as a small chip at the start of each paragraph.

To replace a generic tag with a real name once, everywhere:

1. Open the asset's details from the artifact edit page.
2. In the transcript panel's **Speakers** row, click a speaker and type the display name (for example, `Speaker_00` → `Edna Breazeale`). Press Enter to save.

The rename applies across the whole transcript — on the artifact page, in TXT/SRT/VTT downloads, and in the video player's caption track. The original diarization label is kept as provenance, so you can clear a name to revert, and re-running transcription never scrambles your renames. Clearing the name field restores the raw label.

:::note
Linking a speaker to a People record (so the oral history appears on that person's page) is a planned follow-on — renaming is display-only for now.
:::

## Review and quality tiers

AI output is never silently treated as truth. Each text layer carries a quality tier:

| Tier        | Meaning                           |
| ----------- | --------------------------------- |
| AI raw      | Untouched machine output          |
| AI reviewed | A person has looked it over       |
| Curated     | Edited and verified by your staff |

Corrections create curated layers; the original AI run is preserved with full provenance (model, cost, date) so you can always tell what came from where.

## Search and export

Transcripts and OCR text are indexed for full-text search across your site — a researcher searching a name finds the oral history that mentions it, not just artifacts titled with it.

Visitors can download transcripts as **TXT, SRT, or VTT** from the artifact's download page; OCR and extracted text — including an image's transcription — download as **TXT**. Speaker names (including your renames) appear in all three transcript formats. Text exports stay available even when file downloads are disabled for an artifact, since the text is already visible on the page — see [Downloads and Sharing](/docs/en-US/guides/downloads-and-sharing).

## Export document text as ALTO XML

Documents whose text carries word positions — a page run through the box-aligned OCR pipeline, or a PDF's embedded text — can also be exported as **ALTO XML**, the standard format libraries and archives use to interchange page text with coordinates. It's available on demand at `/api/assets/<asset-id>/alto`: add `?page=0`, `?page=1`, and so on for one page at a time (matching how IIIF manifests attach text per canvas), or leave the parameter off for a single document covering every page of the asset. The XML always reflects the transcript's current state, including any corrections applied since the last OCR run, since it's generated fresh on each request rather than stored. This is aimed at archivists and integrators feeding ALTO into IIIF viewers or other library systems rather than everyday browsing.
