The reading desk · पढ़ने की मेज़
Hindi OCR — image to text
Recognise Hindi text from images or scanned PDF pages on your device. Paste, upload or photograph text, proofread and download Word text.
Source
Choose a page to read
Specimen
हिन्दी भारत
Check ि placement and conjuncts such as क्ष; clear Devanagari print works best.
Images are processed on this device and never uploaded. The first run downloads a language model from jsDelivr; image content is never sent there.
Result
Editable Unicode text
01 · How it works
Hindi: recognition and proofreading
हिन्दी भारत
Check ि placement and conjuncts such as क्ष; clear Devanagari print works best.
Choose the matching language model, upload or paste a clear image, or use the mobile camera input. Keep the page straight and well lit. Recognition is intended for printed text; handwriting, ornate fonts and low resolution may need extensive correction. Large images are reduced to a maximum 3000-pixel edge; PDF pages to 2400 pixels.
Reference
| Language | Model / sample |
|---|---|
| Hindi | hin — हिन्दी भारत |
02 · FAQ
Questions about reading text from files
Are my images uploaded?
No. Recognition runs on your device. The recognition file for your language downloads from a public file host (jsDelivr) the first time you use it; that host sees a normal download request, never your image.
Is the confidence score accuracy?
No. It is the engine’s estimate. Proofread names, numbers, vowel marks and conjuncts.
Can I recognise a scanned PDF?
Yes. PDF.js renders pages one at a time, then the OCR worker recognises each image. Output is editable text and Word paragraphs, not the PDF layout.
How well does Hindi OCR read a clean image?
On our own 12-line Hindi test page (384 characters, Noto fonts, 36 px) the model made 0.0% character errors in a clean sans render; the worst condition we tried, poor phone photo: sans 22 px, 3° tilt, blur σ1.4, heavy noise, jpeg q30, reached 2.1%. This is a small synthetic test, not a benchmark of your documents.
Should I use OCR or the PDF tool for a Kruti Dev PDF?
Try the PDF tool first. A PDF typed in Kruti Dev usually has a Latin-letter text layer that converts far more reliably than OCR. Use OCR if the PDF is a scan with no text layer, or if the tool reports that it could not recognise the font.
Hindi · measured on this model
What the Hindi model got wrong in our test.
Hindi is written under a continuous headline (shirorekha), with vowel signs above, below and before the letters they belong to. That is why most Hindi errors are small ones: a dot, a sign, one stroke of a conjunct. The checklist below starts with what we saw the Hindi model do on our own test pages, then lists look-alike letters worth a second look. It is not a complete list of every possible error.
How we tested: we wrote 12 lines of Hindi (384 characters, none copied from a third party), drew them in two Noto fonts (SIL OFL), degraded them in 7 ways and ran the same recognition engine and Hindi file this page uses, with its default settings. We aligned the output to the text letter by letter. This is a small synthetic test that shows real failure modes. It is not an accuracy figure for your documents, and real scans and photos will behave differently. A script in the source code reproduces it byte for byte; the exact versions are under Sources at the end of this page.
Character errors by condition
Clean render, sans, 36 px
0.0% character errors
Engine confidence 94
Clean render, serif, 36 px
0.3% character errors
Engine confidence 95
Small text, sans, 18 px
0.0% character errors
Engine confidence 94
Photo-like: sans 28 px, 1.5° tilt, blur, noise, JPEG q45
0.0% character errors
Engine confidence 94
Tiny text, sans, 13 px
0.8% character errors
Engine confidence 90
Poor phone photo: sans 22 px, 3° tilt, blur σ1.4, heavy noise, JPEG q30
2.1% character errors
Engine confidence 92
Faded print: serif 20 px, grey ink on tinted paper, blur σ1.1
0.0% character errors
Engine confidence 93
Proofreading checklist
Hindi: check these before you trust the text.
Items marked “observed” come from the test above, with the number of the 7 conditions in which each one appeared. Items marked “look-alikes” are a general proofreading habit for this script that we did not measure.
फ़ क़ ज़
Observed · 1 of 7 conditions
01The nukta dot
Under the poorest photo conditions in our test, a letter with a nukta was read as the plain letter plus a half-ra: फ़ॉर्म came back as फ्रॉर्म and क़ानून as क्रानून. The other nukta words in the same test (ख़बर, ज़िंदगी, फ़ैसला, बड़ी, लड़की, पढ़ाई) were read correctly. Search the result for ्र where you expect a dotted letter, and check every ड़ and ढ़.
- फ़ॉर्म was read as फ्रॉर्म
- क़ानून was read as क्रानून
आँ आं
Observed · 1 of 7 conditions
02Chandrabindu and anusvara
The moon-and-dot sign was read as a different letter in one test: आँसू became ऑसू (the model produced the vowel ऑ). Check every word where a nasal sign sits above a long vowel, and decide whether you meant ँ, ं or ॉ.
- आँसू was read as ऑसू
र्थ ष्ट्र
Observed · 1 of 7 conditions
03Parts of long words and conjuncts
At very small type, a vowel sign disappeared inside a long conjunct word (विद्यार्थियों became विद्यर्थियों); in a blurred photo a conjunct lost a component (राष्ट्र became राष्र). Spell-check does not always catch these because the result can still look like a plausible word.
- विद्यार्थियों was read as विद्यर्थियों
- राष्ट्र was read as राष्र
१२ २
Observed · 1 of 7 conditions
04Devanagari digits
The digits in a date were misread in two different conditions: १२ became ९२ in tiny text and १? in a serif render. Proofread every number, date, amount and reference code against the original.
- १२ was read as ९२
- १२ was read as १?
शर्मा ने
Observed · 2 of 7 conditions
05Lost word spaces
Two words were joined into one (शर्मा ने became शर्माने) in the mildly degraded photo and in faded print. Because the headline joins neighbouring words, a short gap is easy for the model to lose; look for words that look too long.
- शर्मा was read as शर्माने
ब व घ ध भ म
Look-alikes · not measured
06Look-alike letters
These pairs differ by a small loop or stroke. We did not measure them separately, so treat this as a general habit: re-read names, places and numbers that contain them, and compare ि with ी (the short and long i) at the start of a word.
। |
Look-alikes · not measured
07The danda and the vertical bar
The sentence-ending danda looks like a vertical bar or a letter l. Not measured on Hindi pages by us; in the Marathi test the danda was read as ) and ! in two conditions, so check sentence ends.
Photographing Hindi
Tips for photographing Hindi documents.
Keep the headline level
Devanagari words hang from one continuous line, so a tilted photo tilts every word along it. Tesseract’s own guidance is that line segmentation degrades when a page is skewed, so rotate the page until the headlines are horizontal before recognising.
Do not crop the matras above the line
Reph (र्), ं, ँ, े, ै, ो and ौ sit above the headline. Leave a clear margin above the first line (Tesseract’s docs suggest about ten pixels) so the top row of signs is not cut off or hidden by a shadow.
Light the lower marks as well
ु, ू, ृ and the half-forms at the foot of conjuncts (such as द्य or ट्ट) are small and sit under the line. Photograph with even light and avoid a phone’s shadow falling across the bottom of the text.
Mind the size
On our test pages, text drawn 18 pixels tall was read without a single character error, while 13 pixel text lost a vowel sign and a digit. Move closer or crop to the text instead of photographing a whole desk.
Check page segmentation if a page returns nothing
A Tesseract issue (#1273) describes automatic page segmentation failing on Devanagari pages with the fast model. If a clean page returns empty or partial text, try a tighter crop that contains one column of text.
General advice on resolution, binarisation, skew and borders is in the Tesseract documentation.
Legacy-font PDFs
Hindi PDFs that need the PDF tool, not OCR.
Many Hindi PDFs that look like normal Hindi were typed in a legacy font such as Kruti Dev or DevLys. Their text layer is Latin letters, so reading it directly and decoding the font is exact, while OCR has to guess every sign from pixels. Use the PDF tool first for PDFs in these fonts.
Use the PDF to Unicode tool when the PDF has a text layer. Use OCR for a scan or a photo, which has no text layer, and when the PDF tool says it cannot recognise the font.
5 Hindi legacy fonts the engine converts
Model download
The Hindi recognition file: about 1.1 MB, downloaded on first use.
Recognition runs in your browser. The first time you press Recognise, the Hindi recognition file downloads from a public file host (jsDelivr); your image is never sent there. The English file, for comparison, is about 4.1 MB. Your browser normally keeps the file, so later visits on the same browser skip the download; clearing site data removes it.