The reading desk · पढ़ने की मेज़
Marathi OCR — image to text
Recognise Marathi 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
मराठी महाराष्ट्र
Review ळ and ऱ carefully, especially in small print.
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
Marathi: recognition and proofreading
मराठी महाराष्ट्र
Review ळ and ऱ carefully, especially in small print.
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 |
|---|---|
| Marathi | mar — मराठी महाराष्ट्र |
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 Marathi OCR read a clean image?
On our 12-line Marathi test page (360 characters, Noto fonts) the model made no character errors in 5 of the 7 renders, and 9.2% character errors in the worst condition (poor phone photo: sans 22 px, 3° tilt, blur σ1.4, heavy noise, jpeg q30), where it also omitted a whole line. This is a small synthetic test, not a benchmark of your documents.
Why was my Marathi spelling changed?
The two letters we saw changed most are the eyelash ऱ्य (read as र्य) and the conjunct ज्ञ. Search the output for those forms and compare them with the original.
Marathi · measured on this model
What the Marathi model got wrong in our test.
Marathi shares the Devanagari script with Hindi but adds letters and conjuncts of its own, notably ळ and the eyelash ऱ्य, and has its own model. In our test the Marathi model made no character errors in five of the seven renders; the errors we did see were mostly in the letters that distinguish Marathi spelling, and they came with faded print or a poor photo. The checklist lists those first.
How we tested: we wrote 12 lines of Marathi (360 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 Marathi 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 95
Clean render, serif, 36 px
0.0% character errors
Engine confidence 95
Small text, sans, 18 px
0.0% character errors
Engine confidence 92
Photo-like: sans 28 px, 1.5° tilt, blur, noise, JPEG q45
0.0% character errors
Engine confidence 95
Tiny text, sans, 13 px
0.0% character errors
Engine confidence 89
Poor phone photo: sans 22 px, 3° tilt, blur σ1.4, heavy noise, JPEG q30
9.2% character errors
Engine confidence 91 · 1 of 12 lines omitted
Faded print: serif 20 px, grey ink on tinted paper, blur σ1.1
2.8% character errors
Engine confidence 91
Proofreading checklist
Marathi: 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 eyelash ra
In faded print the model read the eyelash ऱ्य in शेतकऱ्यांना as a plain र्य (शेतकर्यांना), which is a different spelling in Marathi. Search your result for र्य and compare each one with the source.
- शेतकऱ्यांना was read as शेतकर्यांना
ज्ञ ज
Observed · 1 of 7 conditions
02ज्ञ at the start of a word
In a degraded photo ज्ञानेश्वरांची was read as जनेश्वरांची: the conjunct ज्ञ and its aa sign collapsed into ज. The word looks plausible, so only a comparison with the original will catch it.
- ज्ञानेश्वरांची was read as जनेश्वरांची
वि दि
Observed · 1 of 7 conditions
03व with an i-sign read as द
The first letter of विद्यार्थ्यांची was read as द (दिद्यार्थ्यांची) in the same degraded photo. Names and headings are the most visible place for this.
- विद्यार्थ्यांची was read as दिद्यार्थ्यांची
रू रु
Observed · 1 of 7 conditions
04The long u sign
In faded print भरून lost its ू (भरन). Long and short u signs, and the signs under the line in general, are the first to vanish when ink is pale.
- भरून was read as भरन
। ) !
Observed · 1 of 7 conditions
05Sentence-end marks and stray punctuation
The full stop danda was read as ) in one degraded photo and as ! in faded print, and a stray apostrophe and full stops were added before or after words. Delete punctuation that was not in the original.
ळ ल ण न
Look-alikes · not measured
06ळ and ण
The Marathi-specific letters ळ and ण resemble ल and न. In our test, ळ was read correctly in every word and every condition except on the line the model omitted entirely, but small print and your own typeface may behave differently. Re-read place names such as कोकण and कोल्हापूर.
Photographing Marathi
Tips for photographing Marathi documents.
Choose the Marathi model, not Hindi
The Hindi and Marathi models are separate files. Marathi text with ळ and ऱ is better read with the Marathi model; the model dropdown on this page selects it.
Watch for whole lines going missing
In our poorest photo condition the model omitted a whole line (शेतकऱ्यांना कर्जमाफी मिळणार आहे) without any warning. Count the lines in the result against the original, especially in forms and notices.
Keep the headline straight and the top margin clear
As with Hindi, the shirorekha joins the letters of a word. Rotate the photo so headlines are level, and leave a margin above the first line so reph and the signs above the line are not cropped.
Prefer the original over a photo of a photo
Notices in Marathi are often photocopied. The fainter and blurrier the copy, the more the long u and the eyelash ra are lost; scan or photograph the best copy you have, flat and evenly lit.
Check the confidence number against the page
In the degraded photo above, the engine’s average confidence stayed around 91 while 9% of characters were wrong. Do not treat the confidence figure as the accuracy; proofread.
General advice on resolution, binarisation, skew and borders is in the Tesseract documentation.
Legacy-font PDFs
Marathi PDFs that need the PDF tool, not OCR.
Marathi newspapers, forms and government circulars were often typed in legacy fonts such as Shree-Dev 0714, Shivaji or Kiran and exported to PDF. Those PDFs usually carry a Latin-letter text layer. When the font name survives in the file, the PDF tool can decode that layer directly and avoid the recognition errors listed above.
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.
3 Marathi legacy fonts the engine converts
Model download
The Marathi recognition file: about 2.1 MB, downloaded on first use.
Recognition runs in your browser. The first time you press Recognise, the Marathi 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.