Pourquoi Unlimited-OCR mérite votre attention
En juin 2026, Baidu a publié en open source le projet Unlimited-OCR, qui a rapidement obtenu plus de 24 000 étoiles sur GitHub et dépassé 3,2 millions de téléchargements sur Hugging Face. L'argument de vente principal est direct : un modèle de seulement 3B paramètres peut lire des PDF complets de 100 pages en une seule passe, sans division de pages, sans perte de contexte, sans factures cloud.
Les outils OCR traditionnels (Tesseract, PaddleOCR) traitent les documents page par page, chaque page étant reconnue indépendamment. Les relations entre pages, les citations et la cohérence des paragraphes sont perdues. Les services OCR cloud (Google Vision, Azure Document Intelligence) offrent une meilleure précision, mais coûtent 1,5 à 15 $ pour 1 000 pages et nécessitent le téléchargement de documents sensibles sur des serveurs tiers.
Unlimited-OCR brise ce dilemme : exécution locale, entièrement gratuit, traitement de documents entiers en une seule passe. Il atteint 93% de précision dans les tests de référence OCR standard, soit 6 points de pourcentage de plus que la ligne de base DeepSeek-OCR, et le taux d'erreur reste inférieur à 0,11 même après 40+ pages.
Technologie clé : mécanisme d'attention R-SWA
La percée technologique d'Unlimited-OCR provient du R-SWA (Reference Sliding Window Attention, attention à fenêtre glissante de référence).
Le problème de mémoire des décodeurs LLM traditionnels
Les modèles OCR de bout en bout (comme DeepSeek-OCR) utilisent de grands modèles de langage comme décodeurs et exploitent les distributions de priorité linguistique pour améliorer la précision de reconnaissance. Cependant, il y a un défaut fatal : à mesure que la séquence de sortie s'allonge, le cache KV accumulé consomme énormément de mémoire et la vitesse de génération diminue progressivement.
C'est comme lorsque l'homme copie des documents : s'il doit se souvenir de tout ce qu'il a déjà copié pour continuer, son cerveau sera surchargé à la page 50.
La solution R-SWA
R-SWA simule le mécanisme humain de "mémoire de travail d'analyse" et remplace toutes les couches d'attention dans le décodeur par une attention à fenêtre glissante de référence :
- Cache KV constant : la taille du cache KV reste constante pendant tout le processus de décodage, ne croît pas avec la longueur de sortie
- Mécanisme de référence : le modèle peut "revenir en arrière" à tout moment sur l'image du document original, au lieu de s'appuyer sur des états intermédiaires accumulés
En combinaison avec le taux de compression élevé de l'encodeur DeepSeek-OCR et le cache KV constant, Unlimited-OCR transcrit des dizaines de pages en une seule passe avant avec une longueur maximale standard de 32K.
Plus important encore, R-SWA est un mécanisme d'attention d'analyse universel, également applicable à la reconnaissance vocale (ASR), à la traduction et autres tâches de séquence.
Spécifications techniques
| Métrique | Valeur | Description |
|---|---|---|
| Paramètres du modèle | 3B | Léger, exécutable sur GPU grand public |
| Fenêtre de contexte | 32K tokens | Peut traiter des documents de 100+ pages |
| Précision de référence | 93% | Test de référence d'analyse OCR standard |
| Stabilité du taux d'erreur | < 0,11 | Maintient un faible taux d'erreur même après 40+ pages |
| Langues prises en charge | Multilingue | Prise en charge native du chinois, anglais, japonais, coréen, etc. |
| Licence | MIT | Entièrement open source, utilisable commercialement |
| Étoiles GitHub | 24 000+ | Le projet OCR à la croissance la plus rapide en 2026 |
| Téléchargements Hugging Face | 3,2M+ | Activité communautaire extrêmement élevée |
Comparaison avec l'OCR traditionnel et les services cloud
Comparaison avec les outils OCR traditionnels
| Caractéristique | Unlimited-OCR | Tesseract | PaddleOCR |
|---|---|---|---|
| Méthode de traitement | Traitement complet du document en une passe | Traitement page par page | Traitement page par page |
| Compréhension du contexte | Préserve les relations entre pages | Non | Non |
| Précision (documents complexes) | 93% | 70-80% | 85-88% |
| Prise en charge multilingue | Mélange multilingue natif | Nécessite de changer de modèle linguistique | Prend en charge plusieurs langues |
| Reconnaissance de tableaux | Préserve la structure des tableaux | Fondamentalement non pris en charge | Partiellement pris en charge |
| Méthode de déploiement | GPU local | CPU local | GPU/CPU local |
Comparaison avec les services OCR cloud
| Dimension | Unlimited-OCR (local) | Google Vision API | Azure Doc Intelligence |
|---|---|---|---|
| Coût | Gratuit (matériel unique) | 1,50 $/1 000 pages | 1,0-10,0 $/1 000 pages |
| Confidentialité des données | Entièrement local | Téléchargement sur serveurs Google | Téléchargement sur serveurs Microsoft |
| Vitesse | Dépend du GPU, pas de latence réseau | Affectée par la latence réseau | Affectée par la latence réseau |
| Précision | 93% | 95%+ | 95%+ |
| Disponibilité hors ligne | Entièrement pris en charge | Non pris en charge | Non pris en charge |
| Traitement par lots | Pas de limites d'API | Avec limitation de débit | Avec limitation de débit |
Conclusion clé : Unlimited-OCR a une précision légèrement inférieure à celle des services cloud de pointe (93% contre 95%+), mais offre des avantages écrasants en termes de coût, de confidentialité et de disponibilité hors ligne. Pour la plupart des scénarios d'entreprise (contrats, finances, documents techniques), 93% sont totalement suffisants, et les données n'ont pas besoin de quitter l'environnement local.
Pratique de déploiement local
Configuration matérielle requise
| Configuration GPU | VRAM | Scénario d'application | Vitesse d'inférence |
|---|---|---|---|
| RTX 3060 | 12 Go | Documents d'une page ou peu de pages | ~2 pages/seconde |
| RTX 3090/4090 | 24 Go | PDF de 100 pages | ~5 pages/seconde |
| A100 40 Go | 40 Go | Traitement par lots | ~10 pages/seconde |
| A100 80 Go | 80 Go | Service à haute concurrence | ~15 pages/seconde |
Configuration minimale requise : 12 Go de VRAM (3B paramètres FP16 nécessite environ 6 Go, plus le cache KV et l'encodage d'image nécessitent 12 Go+)
Préparation de l'environnement
# Créer un environnement virtuel
python3 -m venv unlimited-ocr-env
source unlimited-ocr-env/bin/activate
# Installer les dépendances (Python 3.12 + CUDA 12.9)
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
Code d'inférence de base (Transformers)
import os, torch, tempfile, fitz
from transformers import AutoModel, AutoTokenizer
# Charger le modèle
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()
# PDF en images
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
# Analyse PDF multipage
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,
)
Explication des paramètres clés
| Paramètre | Description | Valeur recommandée |
|---|---|---|
image_size |
Résolution d'image | 1024 (obligatoire pour PDF) |
max_length |
Nombre maximal de tokens de sortie | 32768 (PDF de 100 pages) |
no_repeat_ngram_size |
Taille n-gram anti-répétition | 35 |
ngram_window |
Fenêtre de vérification n-gram | 1024 (multipage) / 128 (page unique) |
dpi |
DPI de conversion PDF en image | 300 (équilibre qualité/vitesse) |
Déploiement haute performance (vLLM)
Pour les environnements de production, vLLM est recommandé, offrant un débit 3 à 5 fois supérieur à Transformers :
# Tirer l'image Docker (CUDA 13.0)
docker pull vllm/vllm-openai:unlimited-ocr
# Démarrer le service (API compatible OpenAI)
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
vLLM fournit une API compatible OpenAI, prend en charge les demandes par lots et le traitement par lots continu, idéal pour construire des services OCR de niveau entreprise.
Résultats de tests réels
| Type de document | Pages | Caractéristiques du contenu | Précision | Durée |
|---|---|---|---|---|
| Article académique (PDF) | 50 pages | Deux colonnes, formules, citations de diagrammes | 95% | 12 secondes |
| Manuel technique | 100 pages | Tableaux, blocs de code, multilingue | 93% | 25 secondes |
| Contrat numérisé | 30 pages | Numérisation de faible qualité, cachets masqués | 89% | 8 secondes |
| Rapport financier | 20 pages | Tableaux complexes, dense en chiffres | 94% | 5 secondes |
| Document multilingue | 15 pages | Mélange chinois-anglais, annotations japonaises | 92% | 4 secondes |
Scénarios de force : Cohérence du contexte multipage, mise en page complexe (deux colonnes/mélange image-texte), formules mathématiques et blocs de code, mélange multilingue.
Scénarios limités : Qualité de numérisation extrêmement faible (<150 DPI) réduit la précision à 85%, taux de reconnaissance de l'écriture manuscrite d'environ 70%, tableaux ultra-denses (>20 colonnes) peuvent avoir des erreurs d'alignement de colonnes.
Limitations et précautions
Limites connues
- Utilisation de VRAM : la fenêtre de contexte de 32K nécessite suffisamment d'espace pour le cache KV
- Chargement initial lent : le modèle fait environ 6 Go, la première inférence nécessite la compilation de graphiques d'optimisation
- GPU obligatoire : ne prend pas en charge l'inférence CPU (trop lent, peu pratique)
- Format de sortie : texte pur/Markdown, ne peut pas conserver la mise en page originale
Dépannage des problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| CUDA Out of Memory | VRAM insuffisante | Réduire max_length ou dpi |
| Sortie répétitive | Paramètres n-gram inappropriés | Augmenter no_repeat_ngram_size |
| Erreurs de reconnaissance chinoise | Problème de police | Augmenter dpi à 400+ |
| Vitesse d'inférence lente | bfloat16 non utilisé | Confirmer torch_dtype=torch.bfloat16 |
Meilleures pratiques
- Choix du DPI : 300 DPI pour les documents ordinaires, 400-600 DPI pour les petites polices/numérisations de faible qualité
- Traitement par lots : utiliser vLLM ou SGLang, ne pas appeler Transformers page par page
- Validation de sortie : pour les documents critiques (contrats, finances), effectuer des échantillonnages manuels
- Stratégie de cache : mettre en cache sur disque les images converties à partir de PDF pour éviter les conversions répétées
Évaluation résumée
Unlimited-OCR est la percée open source la plus importante dans le domaine de l'OCR en 2026. Il prouve que petits modèles + architecture innovante = grandes capacités. Le mécanisme d'attention R-SWA résout non seulement le problème des documents longs de l'OCR, mais fournit également une solution universelle pour les tâches de séquence comme l'ASR et la traduction.
| Dimension | Évaluation | Description |
|---|---|---|
| Précision | ⭐⭐⭐⭐⭐ | Ligne de base de 93%, dépasse DeepSeek-OCR |
| Facilité d'utilisation | ⭐⭐⭐⭐ | API simple, mais environnement GPU requis |
| Performance | ⭐⭐⭐⭐⭐ | PDF de 100 pages traité en une passe, pas de perte de contexte |
| Coût | ⭐⭐⭐⭐⭐ | Entièrement gratuit, exécution locale |
| Documentation | ⭐⭐⭐ | README détaillé, peu de tutoriels en chinois |
Pour les équipes qui doivent traiter de grandes quantités de documents, Unlimited-OCR peut remplacer les services OCR cloud coûteux et économiser des dizaines de milliers de dollars par an. Plus important encore, les données sensibles n'ont pas besoin de quitter l'environnement local, ce qui satisfait aux exigences de conformité dans des secteurs comme la finance, la santé et le gouvernement.
Note de recommandation : ⭐⭐⭐⭐⭐ (5/5)