Everything downstream inherits the recognizer's errors. A missed character is a missed search hit, a wrong digit is wrong data, a wrong field is a wrong decision, and no model downstream recovers a character the recognizer never read. Its accuracy sets the ceiling for everything built on top.
The target script is composed, not enumerated. The unit on the page is a syllable block built from parts, and a single line can interleave multiple scripts. That makes the modeling-unit choice decisive: compose from roughly fifty parts, or enumerate on the order of eleven thousand blocks, and that decision determines whether the labeled-data requirement is tractable or a fortune. Most failures are also decided before recognition runs, in preprocessing, on real scans that are skewed, warped, low-DPI, and degraded.
The reflex, and the fix.
Tune an off-the-shelf, English-centric engine
Running in an afternoon, and fine on clean typed samples.
No model for a composed script, mixed-script lines, or real-scan degradation. It fails exactly where the documents live.
Build for the script and the scans as they are
Composition-aware recognition, mixed-script routing, a real-document evaluation set, and a synthetic-data strategy.
Accuracy on the documents actually received, at production volume.
Model the structure of the script and meet the scan where it is, because both are decided before recognition runs.
Meet the scan where it is
Deskew, dewarp, denoise, normalize DPI, and binarize until the page is clean, level, and legible. Most OCR failures are decided here, before recognition runs at all.
Structure before text
Layout analysis recovers regions, reading order across columns, and table structure, so the output is meaningful rather than a correct but shuffled stream of characters.
The modeling-unit decision
Decoding the script as composed parts keeps the label space small and the model data-efficient, against enumerating thousands of whole blocks. Scripts are routed apart so a character from one is never confused for a block from another, which is the most common mixed-script error.
Manufacture the data reality withholds
Labeled scans in this script are scarce, so training pairs are synthesized from real corpora across many fonts, then degraded to look like the actual archive: low DPI, bleed, stamps, fax noise. The closer the synthetic degradation matches, the more the accuracy transfers.
A single headline number hides where a system fails. This work was scored on the dimensions that actually decide whether it holds in production, measured on real, held-out cases rather than the demo path.
Blocks dropped or split into wrong syllables, scripts confused for one another, tables flattened into a shuffled list, and one opaque output with no signal about what to trust.
96.8% accuracy at 50,000+ documents a month, with composed syllables correct, scripts kept apart, tables preserved, reading order intact, and a confidence on every field so a reviewer checks only what needs it.
What it owns, and what it hands to a person.
It is strong on printed text across scripts and degradation levels. Handwriting, severe damage, and wholly novel layouts are still hard, which is exactly why low-confidence output is flagged for a human rather than asserted.
A document pipeline is won or lost on the documents you actually receive. Model the structure of the script, route what differs, manufacture the data reality withholds, and measure where it actually fails rather than where the benchmark does.