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 :

  1. 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
  2. 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

BASH
# 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)

PYTHON
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 :

BASH
# 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

  1. Utilisation de VRAM : la fenêtre de contexte de 32K nécessite suffisamment d'espace pour le cache KV
  2. Chargement initial lent : le modèle fait environ 6 Go, la première inférence nécessite la compilation de graphiques d'optimisation
  3. GPU obligatoire : ne prend pas en charge l'inférence CPU (trop lent, peu pratique)
  4. 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)