Logo Lanfrica

YayQare/low-resource-ocr-profiles

Domaine:

natural language processing

Type de record:

software
Créateur:
Yay
Hôte:
Methodology for building custom ABBYY FineReader recognition languages for low-resource scripts # Custom OCR languages for low-resource scripts **How to make ABBYY FineReader read a language it has never heard of.** Methodology, character inventories, and reusable templates from a decade of OCR work on materials that stock recognition profiles destroy: extended-Cyrillic minority languages, mixed-orthography archives, legacy print. The flagship application is the Selkup corpus behind Translate Narym Selkup — but the method is language-agnostic. ## The problem Run a Selkup dictionary page through FineReader's stock Russian profile and you get systematic, *silent* corruption: | On the page | Stock profile outputs | Why it's fatal | |---|---|---| | ӄ | к | phonemic contrast erased | | ā | а, â, a̅, or split garbage | vowel length is meaning-bearing | | а́ (stress) | noise characters or dropped | citation forms lose information | | ӽ ӷ ҷ җ ӈ | х г ч ж н | five more contrasts gone | The output *looks* plausible — which is exactly the danger. At corpus scale (hundreds of thousands of rows), plausible-looking corruption is unrecoverable without re-doing the OCR. ## The method (short version) Full walkthrough in `docs/methodology.md`. Five steps: 1. **Inventory first.** Before touching the scanner: enumerate every glyph the orthography uses, with Unicode codepoints, including combining marks and confusable pairs. See `docs/character-inventory-selkup.md` for the worked example. 2. **Define a user language** in FineReader on top of the closest base alphabet, adding the inventory explicitly. Decide *now* which confusable wins (ӄ U+04C4 or қ U+049B — one of them, never both). 3. **Pattern-train on real glyphs.** Train recognition patterns on the actual typefaces in your sources, not synthetic samples; dot-matrix-era reprints and offset print need separate pattern sets. 4. **Grow the dictionary from verified output.** FineReader's user dictionary starts empty; feed it only rows that passed human verification, batch by batch. Recognition quality compounds. 5. **Gate …