What Devanagari asks of a recogniser
Hindi is written in Devanagari, where a horizontal headline — the shirorekha — runs across the top of each word and joins its letters into a continuous band. That line is useful for finding lines of text and unhelpful for separating letters, because neighbouring characters are visually connected rather than standing apart. Vowel signs attach above, below, before and after the consonant they modify, and the i-matra (ि) is drawn to the left of its consonant while being stored after it in Unicode. Correct output therefore does not always match the left-to-right order of the marks on the page.
Devanagari is more than one language
Script detection tells you a page is Devanagari; it does not tell you whether the language is Hindi, Marathi or Sanskrit. Those share the script but not their vocabulary, and running the wrong language model costs accuracy. This pipeline distinguishes Hindi from Marathi using marker characters that appear in one and not the other, rather than assuming. If you already know which language you have, selecting it removes the guess.
Measured accuracy
On our ground-truth corpus — 5 Hindi documents, 3,215 characters of prose, spanning several fonts — this pipeline reads 99.0% of characters correctly (0.96% character error rate). The corpus is clean, digitally rendered, single-column text. Scans of real printed material, especially older books, will score lower.
Common failure modes
Half-forms and conjuncts joined with the halant (्) are the usual source of errors, particularly at small sizes. Faded or broken shirorekha can cause a line to be missed entirely. Handwriting is not supported — this recognises printed text only.