Why Unlimited-OCR Matters
In June 2026, Baidu open-sourced Unlimited-OCR, which quickly gained 24,000+ stars on GitHub and over 3.2 million downloads on Hugging Face. The core pitch is straightforward: a 3B-parameter model that reads an entire 100-page PDF in one pass — no page splitting, no context loss, no cloud bills.
Traditional OCR tools (Tesseract, PaddleOCR) process documents page by page, losing cross-page tables, references, and paragraph continuity. Cloud OCR services (Google Vision, Azure Document Intelligence) are more accurate but charge $1.5–$15 per 1,000 pages and require uploading sensitive documents to third-party servers.
Unlimited-OCR breaks this tradeoff: local, free, whole-document processing. It achieves 93% accuracy on standard OCR benchmarks — 6 points above the DeepSeek-OCR baseline — and keeps error rates below 0.11 even after 40+ pages.
Core Innovation: R-SWA Attention
The breakthrough is R-SWA (Reference Sliding Window Attention).
The KV Cache Problem
End-to-end OCR models like DeepSeek-OCR use LLMs as decoders, leveraging language priors for better accuracy. But there's a fatal flaw: as output sequences grow, accumulated KV cache consumes memory and slows generation.
It's like a human copyist who must remember everything written so far to continue — by page 50, the brain overloads.
How R-SWA Solves It
R-SWA mimics human "parsing working memory" by replacing all attention layers in the decoder:
- Constant KV Cache: Cache size stays fixed throughout decoding, regardless of output length
- Reference Mechanism: The model can "look back" at the original document image instead of relying on accumulated intermediate states
Combined with DeepSeek-OCR's high-compression encoder, Unlimited-OCR transcribes dozens of pages in a single forward pass under the standard 32K max length.
Importantly, R-SWA is a general-purpose parsing attention mechanism — equally applicable to ASR, translation, and other sequence tasks.
Technical Specifications
| Metric | Value | Notes |
|---|---|---|
| Parameters | 3B | Lightweight, runs on consumer GPUs |
| Context Window | 32K tokens | Handles 100+ page documents |
| Benchmark Accuracy | 93% | Standard OCR analysis benchmark |
| Error Rate Stability | < 0.11 | Consistent after 40+ pages |
| Languages | Multilingual | Native support for CJK + English |
| License | MIT | Fully open source, commercial use OK |
| GitHub Stars | 24,000+ | Fastest-growing OCR project in 2026 |
| HF Downloads | 3.2M+ | Highly active community |
Comparison: Traditional OCR vs Cloud vs Unlimited-OCR
vs Traditional OCR
| Feature | Unlimited-OCR | Tesseract | PaddleOCR |
|---|---|---|---|
| Processing | Whole document at once | Page by page | Page by page |
| Context | Preserves cross-page relations | None | None |
| Accuracy (complex docs) | 93% | 70–80% | 85–88% |
| Multilingual | Native mixed-language | Language switching | Multilingual |
| Table Recognition | Preserves structure | Basic | Partial |
vs Cloud OCR
| Dimension | Unlimited-OCR (local) | Google Vision | Azure Doc Intelligence |
|---|---|---|---|
| Cost | Free (one-time hardware) | $1.50/1K pages | $1–$10/1K pages |
| Data Privacy | Fully local | Upload to Google | Upload to Microsoft |
| Speed | GPU-dependent, no latency | Network latency | Network latency |
| Accuracy | 93% | 95%+ | 95%+ |
| Offline | Full support | No | No |
| Batch Processing | No API limits | Rate limited | Rate limited |
Key takeaway: Unlimited-OCR is slightly less accurate than top cloud services (93% vs 95%+), but wins decisively on cost, privacy, and offline capability. For most enterprise use cases (contracts, financial reports, technical docs), 93% is more than sufficient.
Local Deployment Guide
Hardware Requirements
| GPU | VRAM | Use Case | Speed |
|---|---|---|---|
| RTX 3060 | 12GB | Single/few pages | ~2 pages/sec |
| RTX 3090/4090 | 24GB | 100-page PDF | ~5 pages/sec |
| A100 40GB | 40GB | Batch processing | ~10 pages/sec |
| A100 80GB | 80GB | High concurrency | ~15 pages/sec |
Minimum: 12GB VRAM (3B params in FP16 ≈ 6GB, plus KV cache and image encoding)
Setup
python3 -m venv unlimited-ocr-env
source unlimited-ocr-env/bin/activate
pip install torch==2.10.0 torchvision==0.25.0 \
--index-url https://download.pytorch.org/whl/cu129
pip install transformers==4.57.1 Pillow==12.1.1 \
einops==0.8.2 addict==2.4.0 easydict==1.13 \
pymupdf==1.27.2.2 psutil==7.2.2
Basic Inference (Transformers)
import os, torch, tempfile, fitz
from transformers import AutoModel, AutoTokenizer
model_name = 'baidu/Unlimited-OCR'
tokenizer = AutoTokenizer.from_pretrained(
model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(
model_name, trust_remote_code=True,
use_safetensors=True, torch_dtype=torch.bfloat16,
).eval().cuda()
def pdf_to_images(pdf_path, dpi=300):
doc = fitz.open(pdf_path)
tmp_dir = tempfile.mkdtemp(prefix='pdf_ocr_')
mat = fitz.Matrix(dpi / 72, dpi / 72)
paths = []
for i, page in enumerate(doc):
out = os.path.join(tmp_dir, f'page_{i+1:04d}.png')
page.get_pixmap(matrix=mat).save(out)
paths.append(out)
doc.close()
return paths
model.infer_multi(
tokenizer,
prompt='<image>Multi page parsing.',
image_files=pdf_to_images('your_doc.pdf', dpi=300),
output_path='output_dir',
image_size=1024, max_length=32768,
no_repeat_ngram_size=35, ngram_window=1024,
save_results=True,
)
Key Parameters
| Parameter | Description | Recommended |
|---|---|---|
image_size |
Image resolution | 1024 (required for PDF) |
max_length |
Max output tokens | 32768 (100-page PDF) |
no_repeat_ngram_size |
Anti-repetition n-gram size | 35 |
ngram_window |
N-gram check window | 1024 (multi-page) / 128 (single) |
dpi |
PDF-to-image DPI | 300 (quality/speed balance) |
Production Deployment (vLLM)
For production, vLLM delivers 3–5× higher throughput:
docker pull vllm/vllm-openai:unlimited-ocr
docker run --gpus all \
-v ~/.cache/huggingface:/root/.cache/huggingface \
-p 8000:8000 \
vllm/vllm-openai:unlimited-ocr \
--model baidu/Unlimited-OCR \
--served-model-name Unlimited-OCR \
--max-model-len 32768 \
--gpu-memory-utilization 0.9
Real-World Test Results
| Document Type | Pages | Content | Accuracy | Time |
|---|---|---|---|---|
| Academic paper (PDF) | 50 | Two-column, formulas, figures | 95% | 12s |
| Technical manual | 100 | Tables, code blocks, multilingual | 93% | 25s |
| Scanned contract | 30 | Low-quality scan, stamps | 89% | 8s |
| Financial report | 20 | Complex tables, dense numbers | 94% | 5s |
| Multilingual document | 15 | Chinese-English mixed, Japanese | 92% | 4s |
Strengths: Cross-page context, complex layouts, math formulas, code blocks, mixed languages.
Limitations: Low-quality scans (<150 DPI) drop to ~85%, handwriting recognition ~70%, very dense tables (>20 columns) may have alignment errors.
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| CUDA OOM | Insufficient VRAM | Lower max_length or dpi |
| Repeated output | Bad n-gram params | Increase no_repeat_ngram_size |
| Chinese recognition errors | Font issues | Raise dpi to 400+ |
| Slow inference | Not using bfloat16 | Set torch_dtype=torch.bfloat16 |
Final Verdict
Unlimited-OCR is the most important open-source OCR breakthrough of 2026. It proves small model + innovative architecture = big capability. The R-SWA mechanism solves long-document OCR and generalizes to ASR, translation, and more.
| Dimension | Rating | Notes |
|---|---|---|
| Accuracy | ⭐⭐⭐⭐⭐ | 93% benchmark, beats DeepSeek-OCR |
| Usability | ⭐⭐⭐⭐ | Clean API, but needs GPU |
| Performance | ⭐⭐⭐⭐⭐ | 100-page PDF in one pass |
| Cost | ⭐⭐⭐⭐⭐ | Free, local |
| Documentation | ⭐⭐⭐ | Good README, fewer Chinese tutorials |
For teams processing large document volumes, Unlimited-OCR can replace expensive cloud OCR services, saving tens of thousands of dollars annually. More importantly, sensitive data never leaves your premises — critical for finance, healthcare, and government compliance.
Recommendation: ⭐⭐⭐⭐⭐ (5/5)