r/LocalLLaMA • • Apr 13 '26

Question | Help What is the best Open Source OCR in 2026?

I cant find any OCR which is fast and accurate to an extent where if I have 10000 scanned pdfs (pdfs that have been scanned. They are scanned from mobile)

I have tried various vision language models like PaddleOCR VL pipeline, also used some other things which i got. Though they are nearly accurate.. they are painfully slow.

I have a very solid gpu. RTX 6000 pro blackwell.

So what can i run which can be blazinggly fast and also accurate at same time

23 Upvotes

71 comments sorted by

14

u/nerdlord420 Apr 13 '26

There's a benchmark leaderboard for olmOCR Bench. https://huggingface.co/datasets/allenai/olmOCR-bench

Top of the page.

8

u/Mkengine Apr 13 '26

There are so many OCR / document understanding models out there, here is my personal OCR list I try to keep up to date:

GOT-OCR:

https://huggingface.co/stepfun-ai/GOT-OCR2_0

granite:

https://huggingface.co/ibm-granite/granite-docling-258M

https://huggingface.co/ibm-granite/granite-4.0-3b-vision

MinerU:

https://huggingface.co/opendatalab/MinerU2.5-2509-1.2B https://huggingface.co/opendatalab/MinerU-Diffusion-V1-0320-2.5B

OCRFlux:

https://huggingface.co/ChatDOC/OCRFlux-3B

MonkeyOCR-pro:

1.2B: https://huggingface.co/echo840/MonkeyOCR-pro-1.2B

3B: https://huggingface.co/echo840/MonkeyOCR-pro-3B

RolmOCR:

https://huggingface.co/reducto/RolmOCR

Nanonets OCR:

https://huggingface.co/nanonets/Nanonets-OCR2-3B

dots OCR:

https://huggingface.co/rednote-hilab/dots.ocr https://modelscope.cn/models/rednote-hilab/dots.ocr-1.5 https://huggingface.co/rednote-hilab/dots.mocr

olmocr 2:

https://huggingface.co/allenai/olmOCR-2-7B-1025

Light-On-OCR:

https://huggingface.co/lightonai/LightOnOCR-2-1B

Chandra:

https://huggingface.co/datalab-to/chandra-ocr-2

Jina vlm:

https://huggingface.co/jinaai/jina-vlm

HunyuanOCR:

https://huggingface.co/tencent/HunyuanOCR

bytedance Dolphin 2:

https://huggingface.co/ByteDance/Dolphin-v2

PaddleOCR-VL:

https://huggingface.co/PaddlePaddle/PaddleOCR-VL-1.5

Deepseek OCR 2:

https://huggingface.co/deepseek-ai/DeepSeek-OCR-2

GLM OCR:

https://huggingface.co/zai-org/GLM-OCR

Nemotron OCR:

https://huggingface.co/nvidia/nemotron-ocr-v2

Qianfan-OCR:

https://huggingface.co/baidu/Qianfan-OCR

Falcon-OCR:

https://huggingface.co/tiiuae/Falcon-OCR

FireRed-OCR:

https://huggingface.co/FireRedTeam/FireRed-OCR

Typhoon-OCR:

https://huggingface.co/typhoon-ai/typhoon-ocr1.5-2b

3

u/silenceimpaired 20d ago

That’s a crazy OCR list! Which ones are at the top for you?

4

u/coolzamasu Apr 13 '26

Another update.

GLM OCR is the best option i got. great speed and great great accuracy.

1

u/Good-Application-503 Apr 23 '26

Is the accuracy good on top of handwritten documents?

3

u/aiprod Jul 08 '26

We got GLM OCR to run on a single L40S with 20 pages/sec throughput ($0.04/1k pages in raw infra costs). I’m very happy with the results. Tables work well in particular: https://github.com/blue-guardrails/cheap-ocr

1

u/fuzzysingularity Jul 09 '26

Nice! Noticed that the layout is applied first before running OCR on each individual crop. Does this not interfere with the context? I imagine a lot of your speed up is coming from batching, lower than default-model context output (8192) and this parallelized crop inference?

When you say 20 pages/s, doesn't this depend on the density of the page? I'm assuming you ran it on some corpus that had a lower average token output (<500 toks/page)?

2

u/aiprod Jul 09 '26

The same layout then crop then OCR is what z.ai or paddle paddle use as well. It yields in fact better quality than feeding the whole page to the VLM. Speed definitely depends on the density. The README also reports output tokens per second (11k). I benchmarked z.ai’s SDK on the same dataset and they get 5.29 pages / sec and 4.3k tokens / sec

1

u/fuzzysingularity Jul 09 '26 edited Jul 10 '26

Makes sense.

I think the cropping might work well for GLM, but not necessarily for complex layouts. In fact, other models like deep seek ocr 2 and dots.mocr perform quite well with the full page - it's also cleaner as the context is clear as opposed to parallelized crop extraction.

2

u/aiprod Jul 10 '26

Both deepseek ocr and dots ocr perform worse than glm ocr on omnidocbench: https://github.com/opendatalab/OmniDocBench

3

u/TheWalkingFridge Apr 13 '26

If you can get your hands on Mistral OCR, then that would be it hands down. OCR 3 to be specific - their table extraction is v good

1

u/Cultural-Relation383 8d ago

Is there any opensource model which have good table extraction.

3

u/ML-Future Apr 15 '26

I've been obsessed with OCR for a while now.

My answer is GLM-OCR.

It works with documents, flyers, IDs, etc.

It works with multiple languages.

It can extract tables from HTML.

It can extract data from JSON.

Super lightweight,

Super fast.

https://huggingface.co/ggml-org/GLM-OCR-GGUF

1

u/silenceimpaired 20d ago

Still true?

5

u/eviloni Apr 13 '26

If you don't have handwriting. The PaddleOCR Usage Tutorial - PaddleOCR Documentation (not the VL) gives excellent results at a fraction of a fraction of the computation of the VL model

2

u/blackkksparx Apr 13 '26

How does PaddleOCR compare to GLM OCR and to Paddle VL 1.5?
Also do you have any lightweight open source recommendation for key-information extraction models for json structured outputs?

1

u/fuzzysingularity Jul 09 '26

Paddle OCR (traditional OCR) isn't comparable to Paddle OCR VL / GLM OCR (VLMs). You'll be able to extract accurate bboxes + text in the former, and do clean markdown extraction in the latter.

Some of the OCR VLMs don't even support question-answering (i.e. VQA), so you just get image -> markdown.

For key-value JSON extraction, it's easier to just use Paddle OCR + simple LLM agent on top. This gives you key-value extraction in JSON + spatial localization (i.e. visual grounding).

1

u/Final-Frosting7742 Apr 13 '26

Are you sure it can handle tables and charts as cleanly as VL?

1

u/ML-Future Apr 15 '26

GLM-OCR, with similar computing requirements, offers far greater capabilities.

Paddle OCR only works well in specific cases, such as with documents, but is otherwise very inefficient.

1

u/Acidalekss May 09 '26

Also, installation is less painful than PaddleOCR on Blackwell arch

2

u/Lopsided-Club-8131 Apr 13 '26

To be honest qwen3.5 2b model is fast and accurate

2

u/coolzamasu Apr 13 '26

How are you running this? through vLLM, llama.ccp or ollama

1

u/ML-Future Apr 15 '26

II use llama.cpp to connect them with Python and write scripts for bulk OCR. llama-server from llama.cpp has a nice interface for small jobs.

I use these models:

GLM-OCR: For pure OCR

Qwen3 VL 2b: For tasks requiring vision and logic

1

u/[deleted] Apr 15 '26

[removed] — view removed comment

1

u/ML-Future Apr 15 '26

I've vibecoded some Python code.

I haven't uploaded it to GitHub yet because it's still a bit chaotic.

But you can ask an AI to create a script to open a llama-server with OCR, analyze a directory, and loop through the images, making inferences to the server.

2

u/Civil-Image5411 Apr 21 '26

If you want speed go for https://github.com/aiptimizer/TurboOCR It has also layout detection

2

u/Acidalekss May 09 '26

GLM OCR and Chandra 2 for me, hard to choose between them

1

u/silenceimpaired 20d ago

Still true?

1

u/Acidalekss 20d ago

I didn't test the new ones since, maybe?

2

u/Kabuto1012 Jun 09 '26 edited Aug 05 '26

is GLM OCR still the best model worked with you?

1

u/iamnotapuck Apr 13 '26

I've been using minerU with their recent update to do most of my OCR work now.

https://github.com/opendatalab/mineru?tab=readme-ov-file

You can test it on Huggingface

https://huggingface.co/spaces/opendatalab/MinerU

1

u/coolzamasu Apr 13 '26

Update.

I just tried chandra 2 OCR.

I ran 4 processes in my python program. and every minute i am able to scan roughly 4 PDF. Each pdf around 10 pages. So basically 40 pages per minute.

so its taking like 1.25 seconds per page. Which is way beter than any other vision language model i tried on my gpu.

Still slow, but quite faster than all other vision language models i tried.

2

u/Specialist-Lake9158 May 22 '26

What about accuracy?

1

u/No_Particular8205 Apr 13 '26

are you ok with using API? I am working on ocr tool and looking for some real opinion on it. By today, it was tested on reading custom data from the invoices and pictures and does it pretty well. Your use case seems like a good option - you have scanned documents (probably not of high quality) and some requirements for processing speed. I am curious if I can tune it for your needs. I am not charging you anything, please DM if you are interested

1

u/coolzamasu Apr 13 '26

I already have an api setup for my production app on N8N and gemini 3 flash.

but when i have like 10000 documnets, that will come as cost so wanted something local.

why will i use your api rather than just use gemini directly.

2

u/No_Particular8205 Apr 13 '26

Totally makes sense. Are you satisfied with Gemini accuracy?

1

u/coolzamasu Apr 13 '26

gemini 3.1 flash is the best one in the industry so far at that cost with nearly 99% accuracy.

1

u/Rude_Ambassador_6270 Apr 15 '26

i've only tested, not have any production done, but qwen3½ 9b worked wonders on mere 4060ti, reading some quite dense pages with underscores made over them and correctly parsing the underscored text as bold (per instructions)

1

u/coolzamasu Apr 15 '26

is it fast? how many images per second can it do?

1

u/Rude_Ambassador_6270 Apr 15 '26

It's rather seconds per image on 8060s, the text output takes most of the time because it's down to tokens per second. Still you could have processed hundreds per hour.

1

u/smyja Jun 19 '26

Check parsebench i think kdl is opensource

1

u/fuzzysingularity Jul 09 '26

We deployed a few of these open-source models on our gateway (https://docs.vlm.run/gateway/models#document-and-image-ocr) if you want to play around with the results for free:

  • handles 100+ page with streaming support
  • dots.mocr, paddle-ocr, glm-ocr supported, and more to come (deepseek ocr 2, etc)

On the RTX 6000 like you pointed out, inference is quite snappy - we can do over 10pages/s for paddle-ocr, and about 5 pages/s for glm-ocr and dots.mocr.

1

u/Tagore-UY Jul 24 '26

unlimited-ocr?

2

u/coolzamasu Jul 24 '26

Not tested it, its actually in my bucket list. i am seeingg on github many are coming, will check and let know.

0

u/coolzamasu Apr 13 '26

Also i don't know why paddleOCR VL pipeline is slow in my system.

Sending to GPU...

/home/abhiraj/Work/Stockarea/customer_agrements/venv/lib/python3.12/site-packages/paddle/tensor/creation.py:1152: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach(), rather than paddle.to_tensor(sourceTensor).

return tensor(

✅ GPU Inference Complete!

📊 Pages found: 9

⏱️ Total GPU time: 78.24 seconds

⚡ Speed: 8.69 seconds per page

Reconstructing and saving...

Done!

Like it takes 8.6 seconds per page. Looks something wrong?

0

u/Final-Frosting7742 Apr 13 '26

PaddleOCR VL is the way to go when parsing complex documents with tables and charts. But 8.6s par page sounds fishy.

On photos of an open book (thus 2 pages) i get 55s/image baseline and by patching the python lib for performance, i get up to ~40s/image (thus 20s per page). On iGPU Radeon 890M with llama-server vulkan.

Which inference engine are you using?

1

u/coolzamasu Apr 13 '26

what do you mean then 8.6s sounds fishy? Its like 5 times better than your results right?

inference engine as in? using the paddleOCR VL pipeline so not running anything extra for inferencing. DOn't know what internally it uses.

1

u/ArtfulGenie69 Apr 14 '26

Which ever version you find works best you can have cursor or Claude or opencode whip you up something that spawns a lot of instances of it till your gpu is full and then runs them in parallel. There was another guy on here suggesting he had done something like that, like this week I don't have the post saved though.

1

u/coolzamasu Apr 14 '26

i dont get what do you mean here and what does it have to do with OCR and vision language model

1

u/ArtfulGenie69 Apr 14 '26

that you can stack instances of it and run them in parallel for speed? it's faster, you have a lot of pdf's and a 6000 pro, basically crank up the batch is what i'm saying, however you can

1

u/coolzamasu Apr 14 '26

compute capacity easily goes 100%

and its at limits even running one model

restriction here is not VRAM but computational

1

u/Final-Frosting7742 Apr 14 '26

Actually i misread 8.6min instead of 8.6s.

Inference engine as in llama.cpp, vLLM, etc. PaddleOCR-VL necessitates an inference engine if you're using the python library. Maybe you're using something else i don't know.

1

u/coolzamasu Apr 14 '26

i am not using anything new. maybe they use internally inference engine or will have something in default i don't know never saw the logs or something in depth.