MAXGEN schema · v1.13

MaxRecognition

Who read this page, how, and how sure they were about every word.

Download MaxRecognition v1.13 All versions https://opengenealogyai.org/schemas/maxgen/v1/recognition.schema.json

The handwriting problem

German Kurrent script was the everyday handwriting of German-speaking Europe from the 1500s to the mid-1900s. Its "e" looks nothing like an e; its "n" looks like a "u"; the word for mother looks like "Mnttev". The church registers that matter most for German-American research are written in it, by the million. Kurrent is one of many: Secretary Hand, Court Hand, Hebrew and Greek scribal hands, Arabic nastaliq, Cyrillic ustav.

MaxRecognition records what happens when a machine or a trained human reads such a page, so that the reading is citable, checkable and improvable.

One schema for print and handwriting

OCR (reading printed text) and HTR (reading handwriting) share more than 90% of their fields, so there is one schema with a recognition_type switch. Handwriting records add script_type and approx_century for routing to the right specialist; print records add font_type and scan_dpi.

Who did the reading

contributor{} has a contributor_type of human or ai, and fields that follow from it.

Word-level confidence and labelled guesses

word_confidences[] gives each word a score, a position, alternatives, and a reading_type:

reading_type Meaning
observed Read directly from the image.
inferred_context Filled in from surrounding entries.
inferred_pattern Filled in from a known naming convention.
partial_read Some characters legible, the rest inferred.

Traditional practice says "leave it blank if you cannot read it". MaxRecognition says: if you can make a reasonable inference, make it, label it, explain it in inference_notes, and give it a lower score. "Five other entries on this page read Maxwell; only 'Ma' is legible here; letterform height at position 3 fits 'xw' not 'rk'; inference Maxwell, 0.78." That is how a trained genealogist reasons, captured in a form a reviewer or a future model can audit.

Consensus and searchability

Fields

FieldTypeMeaning
recognition_id requiredstringUnique identifier for this transcription run.
schema_version requiredconst "1.13"MAXGEN lockstep version.
recognition_type requiredenumocr = printed or typed text; htr = handwritten text.
image_url requiredstringURL of the document image that was transcribed.
raw_record_id stringOptional: links back to the MaxRecord this transcription belongs to.
output_text requiredstringFull transcribed text produced by this run.
processing_date requiredstringISO 8601 UTC timestamp of when this transcription was produced.
language stringISO 639-1 code of the document language (e.g.
contributor requiredobjectWho or what produced this transcription.
confidence numberOverall transcription confidence 0.0–1.0, self-reported by the contributor.
word_confidences array of objectPer-word confidence breakdown.
character_error_rate numberCER measured against a ground-truth reference, if available.
word_error_rate numberWER measured against a ground-truth reference, if available.
consensus_group_id stringGroups multiple independent transcriptions of the same image.
is_independent booleanTrue if this run was performed blind to other transcriptions in the same consensus_group.
is_human_reviewed booleanTrue if a human has reviewed and approved the output.
review_status enum
redistribution_license enumLicense for this transcription output.
font_type enumOCR only: dominant font type in the document.
scan_dpi integerOCR only: scan resolution in dots per inch.
script_type enumHTR only: handwriting script family of the document.
approx_century integerHTR only: approximate century of the handwriting expressed as the century's start year (e.g.
searchable_variants array of stringAll possible full-text spellings this record should be findable under — including uncertain readings, alternative spellings, and normalized forms.
extensions objectProduct/implementation-specific fields.

Example

A human Kurrent specialist's reading of a Bavarian baptism, with one uncertain word and its alternative.

{
  "recognition_id": "c1900000-0002-4000-8000-000000000001",
  "schema_version": "1.13",
  "recognition_type": "htr",
  "image_url": "https://www.archion.de/de/browse/?no_cache=1&type=churchRegister&pid=12345",
  "raw_record_id": "a1600000-0001-4000-8000-000000000001",
  "output_text": "Johann Maier, geb. 14 März 1842, Sohn des Georg Maier und der Maria Huber.",
  "processing_date": "2026-06-20T14:00:00Z",
  "language": "de",
  "contributor": {
    "contributor_type": "human",
    "contributor_name": "Helga Brandt",
    "contributor_id": "ogai-user-00042",
    "profile_url": "https://opengenealogyai.org/users/helga-brandt",
    "credentials": [
      "AG",
      "Kurrent specialist",
      "German parish records"
    ],
    "specialty_scripts": [
      "kurrent",
      "gothic_fraktur"
    ],
    "specialty_languages": [
      "de",
      "la"
    ],
    "specialty_regions": [
      "Bavaria",
      "Baden-Württemberg",
      "Württemberg"
    ],
    "records_transcribed": 14720,
    "training_notes": "German Genealogical Society Kurrent certification 2019. Specializes in Württemberg Lutheran Kirchenbücher 1650-1875. Completed the entire Maulbronn parish register collection (3,200 entries)."
  },
  "confidence": 0.94,
  "word_confidences": [
    {
      "word": "Maier",
      "char_offset": 7,
      "confidence": 0.82,
      "reading_type": "observed",
      "alternatives": [
        {
          "text": "Mäier",
          "confidence": 0.18
        }
      ]
    }
  ],
  "searchable_variants": [
    "Johann Maier geb 14 März 1842 Sohn Georg Maier Maria Huber",
    "Johann Mäier geb 14 März 1842 Sohn Georg Mäier Maria Huber"
  ],
  "consensus_group_id": "d1900000-0001-4000-8000-000000000099",
  "is_independent": true,
  "is_human_reviewed": true,
  "review_status": "approved",
  "redistribution_license": "CC-BY",
  "script_type": "kurrent",
  "approx_century": 1800
}

Listen

Episode 6

MaxRecognition — Teaching machines to read

25:21

OCR and handwriting provenance, word-level confidence, labelled inference, and consensus.