ATRIUM — ÚFAL documentation¶
The Institute of Formal and Applied Linguistics (ÚFAL, Charles University) builds six tools for ATRIUM. Together they take archival documents, such as typewritten reports, handwritten field notes, photographs, drawings and born-digital files, and turn them into structured, searchable records. This site explains what each tool does and how they fit together.
What ATRIUM is¶
ATRIUM (Advancing fronTier Research In the arts and hUManities) is an EU project. It connects four European research infrastructures: DARIAH (arts and humanities), ARIADNE (archaeology), CLARIN (language technologies) and OPERAS (open scholarly communication). More at atrium-research.eu, and in the project presentation on Zenodo.
This site documents ÚFAL's part: six tool repositories and the hub that holds them together, seven repositories in all.
Start here¶
Find the line that describes you:
| You are | Start with | Then |
|---|---|---|
| archive or collection staff | For archives | Licences and paradata · Glossary |
| running the services | Operations | S2 pilot handover, which links each service's runbook |
| calling a tool from your own code | Workflows | The document contract · Schemas · Agent skills |
| developing the tools | Architecture | Contributing standards · Development history |
| managing or coordinating the project | Status | S2 pilot handover · Repository map |
| judging the methods and results | Pipelines | each tool's evaluation pages, from the documentation map in its README |
Or by question:
| If you want to… | Read |
|---|---|
| look up an unfamiliar word | Glossary |
| see what each tool does, step by step | Workflows |
| see what passes from one tool to the next | Pipelines |
| know what a record written by these tools looks like | The document contract |
| run a tool as a service, or on Kubernetes | Operations |
| let a coding agent use a tool | Agent skills |
| know what every field and label means | Schemas · SKOS & the ATRIUM vocabulary |
| publish results to a repository or catalogue | RO-Crate export |
| describe a tool's workflow on the SSH Open Marketplace or in Galaxy | Workflows |
| read about a standard, model or service the tools use | External tools & services |
| find which repository owns what | Repository map |
| change shared code, or contribute | Architecture · Contributing standards |
The seven repositories¶
-
page-classification
Sorts each scanned page into one of eleven page types. A person or a script then decides whether the page needs OCR, handwriting recognition, table extraction or image handling.
-
ocr-postprocess
Checks OCR output line by line. Every line gets its language and a quality label, so you know which lines to use, correct or send to OCR again. It reads ALTO and the other common OCR formats, and PDF, office and text files.
-
translator
Translates ALTO pages and AMČR metadata records in place. Every tag, namespace and coordinate stays; only the text changes.
-
nlp-enrich
Adds each word's base form, part of speech and grammar, and the names of people, places and organisations, using LINDAT's UDPipe and NameTag. The result is a TEITOK file that keeps every word's place on the page.
-
keyword-extract
Gives documents two kinds of keyword: statistical ones taken from the text, and terms from AMČR's keyword lists and the TEATER thesaurus, chosen by a language model.
-
digital-convert
Reads born-digital files (PDF, DOCX, ODT, ODS, XLSX, RTF; DOC and XLS through LibreOffice) into the document record, without OCR. Pages whose text cannot be read are marked, so only those go to OCR.
-
atrium-project, the hub
The code every tool shares, the checks they all run, the end-to-end tests, and this site.
How the tools work together¶
flowchart LR
SCAN[/"scanned pages"/] --> PC[page-classification]
PC -. "routing decision" .-> OCR["OCR<br/>(outside the pipeline)"]
OCR --> ALTO[ocr-postprocess]
DOCS[/"office and text files"/] -. "text-lines" .-> ALTO
BORN[/"born-digital PDF, DOCX"/] --> DC[digital-convert]
ALTO -- "PAGE_ALTO/" --> TR[translator]
ALTO -- "DOC_LINE_CATEG/" --> NLP[nlp-enrich]
NLP -- "record" --> KW[keyword-extract]
DC -- "record" --> KW
TR --> EN[/"English editions"/]
Six tools, each in its own repository. Each tool is a command-line program and an HTTP service built from the same code. Each ships as container images. The tools need very different environments: a vision-model stack, CPU rules, remote translation services, GPU language models. So they are not combined into one program.
One record per document. A JSON file, <doc_id>.document.json, ties the stages together. Each stage
reads it, adds the one block it owns, and passes it on. By the end it holds the page categories, the
text, the translation reference, the entities and the keywords. It also records which program, at which
version and with which components, wrote each part. See The document contract.
One hub. atrium-project holds the code every tool shares: the record, the paradata, the licence
catalogue, the vocabulary and the service contract. It hands out identical copies of that code, runs the
checks every tool calls, and runs the end-to-end test of all the tools together. See
Architecture.
Built here, run by the partners. ÚFAL builds, tests and publishes the container images. The partner institutes of archaeology run them on their own infrastructure, next to their own collections. See Operations.
About this site¶
Every page here is written, not generated. It explains how the parts fit together, and ends with a
Sources table naming what it was written from. Each tool's own documentation, its README and its
docs/ pages, holds the details; these pages connect them.
The site's source is docs_site/ in the hub. A pull request builds it with mkdocs build --strict,
which fails on any broken link or anchor between pages. A merge to main publishes it to the
gh-pages branch.