I, at this point, use Qwen2.5-VL-3B-Instruct for most of the small OCR I want to do. It is much much better than my experience with Tesseract in general. The nice thing about it is that if you give it, say, a movie poster you can ask for the "title of the movie" and it will, to the best of its ability, do just that, no need for regex or filtering after. For smallish images after loading the 3B model runs in <1 second. 7B takes longer but is obviously more accurate.
I might be a bit behind, all of this is from early this year for the most part, but for something like "I have 3000 movie posters and I want to get the titles with like 90% accuracy" it is good (much better than Tesseract), and it'll do that in like an hour.
EDIT: I guess one thing is Tesseract will kind of give gibberish back when it fails. The main issue with the LLMs are that instead they take a stab at it (like for a movie poster it'll give part of a quote, or a actor name) back. Makes knowing when it fails a little harder. As long as you have some way to verify when it is likely failing they are very good though.
Definitely not. Even Chrome has a built in OCR that performs amazingly. I got an LLM to write a quick python wrapper to it [1], so I'm sure you should be able to access it from an extension
Also available natively to the OS (Windows) with PowerToys, if you want an alternative to a browser extension. One of the unsung heroes of that library.
Jury is still out on which is more trustworthy handling any personal data, Microsoft or Google. Neither.
Love how this is just a chrome extension... Just made an API so that you could easily OCR everything with SOTA results (using finetuned VLM) at 1/3rd of the usual costs... Would absolutely love to chat and see if we can help out !
> though vibed software (thoroughly used) can be all good.
Yes, but the problem with these vibe-coded crap is that they are pretty much always less than a week old, which means it wasn't even used before the “author” submitted it here.
But only you and your fingers (or voice!) can address that other glaring point that killed your other comments to the point only those of us with showdead in our settings will see them :)
OK yeah seemed tedious so figured that must’ve not been the only way [probably if you handwrite you could clear that up beforehand]
Does anyone have suggestions on how I could OCR lots of handwritten math notes with diagrams? I have tons of PDFs waiting for me to manually type them myself and can't justify dedicating weeks to do it.
I tested many open-source and hosted OCR models and Datalab Chandra was the most accurate. It can parse complex layouts, tables, handwriting, and formulas at a fraction of the cost of Claude/Gemini.
I've seen papers using fine-tuned small local vision models to transcribe math into latex. Personally I tried Claude Opus & Claude Code directly to do this. It works (to my surprise) but AI sometimes take guesses that are mathematically right but deviates with my original writing. There is no 100% correct method though.
Haven't tested rough scans honestly — my own use is rendered text, the easy
case, where it's 93-95% confidence. I've been feeding it Kindle trading books
into my finance app to compare strategies against my codebase, and an LLM is
forgiving of the odd mangled word. Each page shows its confidence and a
thumbnail of what was captured, so bad pages are obvious rather than silently
wrong. Let me know how it does on low-quality scans if you try it.
Half the context I want to give a model is locked inside something I can't
select from: a scanned book, a slide deck, a course viewer, a "PDF" that's
really page images. Copy-paste gets you nothing, and screenshotting 200 pages by
hand isn't a plan.
OCR It is a Chrome extension for that gap. You drag out a capture region once —
the text block of the reader, say. After that, one hotkey per page screenshots
that exact rectangle, OCRs it, and appends the result to a running transcript.
Or start an auto-run and it captures, turns the page, and repeats until the
document ends. Then Copy all, or Download .txt, and you have a file to paste
into Claude or drop into an agent's context.
Everything runs locally. Tesseract's wasm build and the language data (~10 MB)
are committed into the extension, so there are no network requests at all, no
API key, and no host permissions at install — single captures ride on activeTab.
The irony of an AI-adjacent tool that never talks to a server was not lost on
me, but the pages you're capturing are often exactly the ones you don't want to
ship to a third party.
Three things turned out more interesting than expected:
- MV3 service workers have no DOM and no Worker, so cropping and OCR live in an
offscreen document.
- The next-page control is stored as a point, not a CSS selector. A point
survives DOM re-renders and reaches into cross-origin iframes and shadow
roots, which nothing the top frame can express does. Routing it was the fiddly
part: window.screenX inside an iframe reports the browser window, not the
frame, so frames locate themselves by walking same-origin ancestors, and
across an origin boundary the parent hands the offset down by postMessage.
- The auto-run waits for each page's OCR before turning. That's what makes
end-of-document detection work; a timer-based loop sails past the last page
and fills your transcript with copies of it.
Limitations: Chrome's own PDF viewer can't be auto-advanced (it's a plugin no
extension can inject into, though capturing from it works fine); the region is a
fixed rectangle on screen, so resizing or zooming mid-run breaks it; and
accuracy tracks the source — crisp rendered text reads at 93-95% confidence,
scans need cleanup before they're worth feeding to anything.
Tests drive a real headless Chrome over CDP, which had its own surprises:
Chrome 137+ ignores --load-extension, and headless can't show the
optional-permission prompt, so the suite installs a copy with the grant baked in
plus a real toolbar click via Extensions.triggerAction to prove the ungranted
path still works.
Is Tesseract still the best choice for local OCR in 2026? I was always underwhelmed with its real-world performance.
I, at this point, use Qwen2.5-VL-3B-Instruct for most of the small OCR I want to do. It is much much better than my experience with Tesseract in general. The nice thing about it is that if you give it, say, a movie poster you can ask for the "title of the movie" and it will, to the best of its ability, do just that, no need for regex or filtering after. For smallish images after loading the 3B model runs in <1 second. 7B takes longer but is obviously more accurate.
I might be a bit behind, all of this is from early this year for the most part, but for something like "I have 3000 movie posters and I want to get the titles with like 90% accuracy" it is good (much better than Tesseract), and it'll do that in like an hour.
EDIT: I guess one thing is Tesseract will kind of give gibberish back when it fails. The main issue with the LLMs are that instead they take a stab at it (like for a movie poster it'll give part of a quote, or a actor name) back. Makes knowing when it fails a little harder. As long as you have some way to verify when it is likely failing they are very good though.
Definitely not. Even Chrome has a built in OCR that performs amazingly. I got an LLM to write a quick python wrapper to it [1], so I'm sure you should be able to access it from an extension
[1] https://github.com/sergiocorreia/clv-locro
PaddlePaddle (v6) is fantastic and fast
There's EasyOCR and RapidOCR too, I guess benchmark and see what's best for your material? Oh and Multimodal LLMs :)
Being using granite model pretty small and good. Can't do JSON, but don't really care.
Which models are EasyOCR and RapidOCR using?
Also available natively to the OS (Windows) with PowerToys, if you want an alternative to a browser extension. One of the unsung heroes of that library.
Jury is still out on which is more trustworthy handling any personal data, Microsoft or Google. Neither.
And Plasma Spectacle does it too
Love how this is just a chrome extension... Just made an API so that you could easily OCR everything with SOTA results (using finetuned VLM) at 1/3rd of the usual costs... Would absolutely love to chat and see if we can help out !
Much better than the old definition of “region lock”, nice.
HN isn’t a fan of the generated readmes though, though vibed software (thoroughly used) can be all good.
> though vibed software (thoroughly used) can be all good.
Yes, but the problem with these vibe-coded crap is that they are pretty much always less than a week old, which means it wasn't even used before the “author” submitted it here.
(The author didn't even bother writing their comment themselves by the way: https://news.ycombinator.com/item?id=49415857)
it can also auto paginate for you, no need to keep hitting the hotkey every page. It can paginate by hotkey, xy point on screen or selector.
But only you and your fingers (or voice!) can address that other glaring point that killed your other comments to the point only those of us with showdead in our settings will see them :)
OK yeah seemed tedious so figured that must’ve not been the only way [probably if you handwrite you could clear that up beforehand]
2 replies →
Does anyone have suggestions on how I could OCR lots of handwritten math notes with diagrams? I have tons of PDFs waiting for me to manually type them myself and can't justify dedicating weeks to do it.
I tested many open-source and hosted OCR models and Datalab Chandra was the most accurate. It can parse complex layouts, tables, handwriting, and formulas at a fraction of the cost of Claude/Gemini.
Local: https://github.com/datalab-to/chandra Hosted: https://www.datalab.to
Another decent option is GLM OCR. It's slightly less accurate but faster and cheaper.
Local: https://github.com/zai-org/GLM-OCR Hosted: https://docs.z.ai/guides/vlm/glm-ocr
Other models such as PaddleOCR, dots.ocr and DeepSeek OCR performed significantly worse.
I've seen papers using fine-tuned small local vision models to transcribe math into latex. Personally I tried Claude Opus & Claude Code directly to do this. It works (to my surprise) but AI sometimes take guesses that are mathematically right but deviates with my original writing. There is no 100% correct method though.
> take guesses that are mathematically right but deviates with my original writing.
Its rather interesting if it's correcting a mistake or picking a correct alternative.
How accurate do you think it is overall?
you could try using a local vision model, like Mage-VL from microsoft. Its only a 5b model so its quite small for the capability it has.
This is handy — I've hit this exact issue prepping documents for LLM context. How's the accuracy on lower quality scans?
Haven't tested rough scans honestly — my own use is rendered text, the easy case, where it's 93-95% confidence. I've been feeding it Kindle trading books into my finance app to compare strategies against my codebase, and an LLM is forgiving of the odd mangled word. Each page shows its confidence and a thumbnail of what was captured, so bad pages are obvious rather than silently wrong. Let me know how it does on low-quality scans if you try it.
https://learn.microsoft.com/en-us/windows/powertoys/text-ext...
Is this similar to CleanshotX?
[dead]
Half the context I want to give a model is locked inside something I can't select from: a scanned book, a slide deck, a course viewer, a "PDF" that's really page images. Copy-paste gets you nothing, and screenshotting 200 pages by hand isn't a plan.
OCR It is a Chrome extension for that gap. You drag out a capture region once — the text block of the reader, say. After that, one hotkey per page screenshots that exact rectangle, OCRs it, and appends the result to a running transcript. Or start an auto-run and it captures, turns the page, and repeats until the document ends. Then Copy all, or Download .txt, and you have a file to paste into Claude or drop into an agent's context.
Everything runs locally. Tesseract's wasm build and the language data (~10 MB) are committed into the extension, so there are no network requests at all, no API key, and no host permissions at install — single captures ride on activeTab. The irony of an AI-adjacent tool that never talks to a server was not lost on me, but the pages you're capturing are often exactly the ones you don't want to ship to a third party.
Three things turned out more interesting than expected:
- MV3 service workers have no DOM and no Worker, so cropping and OCR live in an offscreen document.
- The next-page control is stored as a point, not a CSS selector. A point survives DOM re-renders and reaches into cross-origin iframes and shadow roots, which nothing the top frame can express does. Routing it was the fiddly part: window.screenX inside an iframe reports the browser window, not the frame, so frames locate themselves by walking same-origin ancestors, and across an origin boundary the parent hands the offset down by postMessage.
- The auto-run waits for each page's OCR before turning. That's what makes end-of-document detection work; a timer-based loop sails past the last page and fills your transcript with copies of it.
Limitations: Chrome's own PDF viewer can't be auto-advanced (it's a plugin no extension can inject into, though capturing from it works fine); the region is a fixed rectangle on screen, so resizing or zooming mid-run breaks it; and accuracy tracks the source — crisp rendered text reads at 93-95% confidence, scans need cleanup before they're worth feeding to anything.
Tests drive a real headless Chrome over CDP, which had its own surprises: Chrome 137+ ignores --load-extension, and headless can't show the optional-permission prompt, so the suite installs a copy with the grant baked in plus a real toolbar click via Extensions.triggerAction to prove the ungranted path still works.
MIT, no build step: https://github.com/thiagotigaz/ocr-it
https://news.ycombinator.com/newsguidelines.html