Retour au blog
Comparatifs

VLM ou OCR pour vos documents industriels : quel choix technique en 2026 ?

Racine AI

Derniere mise a jour le 9 janvier 2026

Les Vision Language Models surpassent l’OCR traditionnel sur les documents a structure complexe ou variable, mais l’OCR reste plus rapide et moins gourmand en ressources pour les formulaires standardises. Le choix optimal depend du type de documents, du volume a traiter, et des contraintes d’infrastructure.

L’OCR a domine le traitement documentaire pendant trois decennies

L’OCR (Optical Character Recognition) convertit une image de texte en caracteres exploitables informatiquement. La technologie remonte aux annees 1970 avec les premiers systemes de lecture automatique de cheques bancaires. Tesseract, developpe par HP puis maintenu par Google, reste aujourd’hui la reference open source avec plus de 100 langues supportees.

Le fonctionnement de l’OCR classique suit un pipeline bien etabli : binarisation de l’image, detection des zones de texte, segmentation en caracteres, reconnaissance par modele statistique ou reseau de neurones, puis post-traitement lexical. Chaque etape introduit des sources d’erreur potentielles.

“Despite decades of research, OCR accuracy on degraded documents remains challenging. Performance drops significantly with skew, blur, low resolution, or unusual fonts.”

— Smith, “An Overview of the Tesseract OCR Engine”, ICDAR 2007

Les solutions commerciales comme ABBYY FineReader ou Amazon Textract ont ameliore la precision en ajoutant des couches de deep learning, mais le principe fondamental reste identique : d’abord reconnaitre le texte, ensuite l’interpreter.

Les Vision Language Models traitent le document comme un tout

Les VLM (Vision Language Models) adoptent une approche radicalement differente. Au lieu de passer par une etape d’OCR explicite, ils analysent l’image du document directement et repondent a des questions en langage naturel. Le modele “voit” le document et “comprend” simultanement son contenu et sa structure.

Cette architecture end-to-end evite la cascade d’erreurs du pipeline OCR classique. Si un caractere est mal reconnu en OCR, toutes les etapes suivantes heritent de cette erreur. Un VLM peut parfois compenser un caractere flou grace au contexte visuel et semantique.

Les principaux VLM disponibles en open source incluent SmolVLM (HuggingFace), Qwen2-VL (Alibaba), et InternVL2 (Shanghai AI Lab). Cote API propriataires, GPT-4V (OpenAI) et Gemini Pro Vision (Google) offrent des performances elevees mais avec un cout a l’usage et une dependance cloud.

Les documents industriels posent des defis specifiques

Le contexte industriel impose des contraintes que les documents bureautiques classiques n’ont pas. Ces specificites influencent fortement le choix entre VLM et OCR.

Les plans techniques et schemas mecaniques melangent texte, cotes dimensionnelles, symboles normalises (ISO, ANSI) et elements graphiques. L’OCR extrait le texte mais perd la relation spatiale entre une cote et l’element qu’elle mesure. Un VLM peut repondre a “Quelle est la longueur de la piece principale ?” en comprenant visuellement ce qui est “la piece principale”.

Les fiches techniques produits combinent tableaux, specifications, graphiques de performance et texte libre. La structure varie enormement d’un fournisseur a l’autre. L’OCR necessite un parsing specifique pour chaque format, tandis que le VLM generalise mieux.

Les rapports de controle qualite incluent souvent des annotations manuscrites, des tampons, des zones cochees. Ces elements partiellement textuels et partiellement graphiques posent probleme a l’OCR pur.

Les bordereaux de livraison et bons de commande, bien que plus standardises, varient suffisamment entre partenaires commerciaux pour compliquer les regles d’extraction OCR.

L’OCR excelle sur les formulaires standardises a haut volume

Quand les documents suivent un format previsible et que le volume justifie l’investissement dans des regles d’extraction, l’OCR reste imbattable en termes de rapport performance/cout.

import pytesseract
from PIL import Image
import cv2
import numpy as np

def extract_with_ocr(image_path: str) -> dict:
    """Extraction OCR optimisee pour formulaires standardises."""

    # Preprocessing pour ameliorer la qualite OCR
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

    # Binarisation adaptative pour gerer les variations d'eclairage
    binary = cv2.adaptiveThreshold(
        gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
        cv2.THRESH_BINARY, 11, 2
    )

    # Correction de l'inclinaison (deskew)
    coords = np.column_stack(np.where(binary > 0))
    angle = cv2.minAreaRect(coords)[-1]
    if angle < -45:
        angle = -(90 + angle)
    else:
        angle = -angle

    (h, w) = binary.shape[:2]
    center = (w // 2, h // 2)
    M = cv2.getRotationMatrix2D(center, angle, 1.0)
    rotated = cv2.warpAffine(binary, M, (w, h),
                              flags=cv2.INTER_CUBIC,
                              borderMode=cv2.BORDER_REPLICATE)

    # OCR avec configuration optimisee
    custom_config = r'--oem 3 --psm 6 -l fra+eng'
    text = pytesseract.image_to_string(
        Image.fromarray(rotated),
        config=custom_config
    )

    # Extraction structuree avec positions
    data = pytesseract.image_to_data(
        Image.fromarray(rotated),
        config=custom_config,
        output_type=pytesseract.Output.DICT
    )

    return {
        'raw_text': text,
        'structured_data': data,
        'preprocessing': {
            'deskew_angle': angle,
            'original_size': (w, h)
        }
    }

Le preprocessing (binarisation, deskew, denoising) ameliore significativement les resultats OCR. Sur des documents propres et bien numerises, Tesseract atteint des precisions de reconnaissance caractere superieures a 99% selon sa documentation officielle.

Le temps de traitement reste l’avantage majeur de l’OCR : quelques centaines de millisecondes par page sur un CPU standard, contre plusieurs secondes pour un VLM meme sur GPU.

Les VLM brillent sur la comprehension semantique et structurelle

La force des VLM reside dans leur capacite a comprendre le sens du document, pas seulement son contenu textuel. Deux exemples illustrent cette difference.

Premier exemple : une fiche technique avec un tableau de specifications. L’OCR extrait le texte du tableau, mais l’interpretation reste a faire. “Quelle est la temperature maximale de fonctionnement ?” necessite de comprendre que la valeur 85°C dans la colonne “Max” de la ligne “Temperature” correspond a la reponse.

from transformers import AutoProcessor, AutoModelForVision2Seq
from PIL import Image
import torch

class VLMDocumentAnalyzer:
    """Analyse de documents industriels via VLM."""

    def __init__(self, model_name: str = "Qwen/Qwen2-VL-7B-Instruct"):
        self.processor = AutoProcessor.from_pretrained(model_name)
        self.model = AutoModelForVision2Seq.from_pretrained(
            model_name,
            torch_dtype=torch.float16,
            device_map="auto"
        )

    def query_document(self, image_path: str, question: str) -> str:
        """Pose une question sur un document."""

        image = Image.open(image_path).convert("RGB")

        messages = [
            {
                "role": "user",
                "content": [
                    {"type": "image", "image": image},
                    {"type": "text", "text": question}
                ]
            }
        ]

        inputs = self.processor(
            text=self.processor.apply_chat_template(messages, add_generation_prompt=True),
            images=image,
            return_tensors="pt"
        ).to(self.model.device)

        outputs = self.model.generate(
            **inputs,
            max_new_tokens=500,
            do_sample=False
        )

        return self.processor.decode(outputs[0], skip_special_tokens=True)

    def extract_specifications(self, image_path: str) -> dict:
        """Extrait les specifications techniques d'une fiche produit."""

        prompt = """Analyse cette fiche technique et extrais les specifications principales.
Pour chaque specification, indique:
- Le parametre mesure
- La valeur nominale
- Les limites min/max si presentes
- L'unite de mesure

Format ta reponse en JSON."""

        response = self.query_document(image_path, prompt)
        return self._parse_json_response(response)

Deuxieme exemple : un plan avec annotations. “Quels sont les materiaux specifies pour les pieces principales ?” requiert d’identifier visuellement les pieces principales sur le plan et de trouver les annotations de materiau correspondantes. Ce raisonnement spatial echappe a l’OCR.

Le cout computationnel differe d’un facteur 10 a 100

L’ecart de ressources entre OCR et VLM reste significatif et impacte directement les couts d’exploitation.

L’OCR avec Tesseract s’execute sur CPU sans probleme. Un serveur standard peut traiter des milliers de pages par heure. Le cout marginal par document approche zero une fois l’infrastructure en place.

Les VLM necessitent des GPU pour fonctionner a une vitesse raisonnable. SmolVLM, le plus leger de sa categorie, demande tout de meme 4-8 Go de VRAM pour l’inference. Qwen2-VL-7B requiert 16 Go minimum. Les modeles plus gros comme Qwen2-VL-72B depassent les 100 Go.

ModeleVRAM requiseTemps par page (GPU)Temps par page (CPU)
Tesseract OCR--~200ms
SmolVLM4-8 Go~1s~30s
Qwen2-VL-7B14-16 Go~2s~60s
InternVL2-8B16-20 Go~2s~60s
GPT-4V (API)-~3s-

Temps indicatifs sur materiel recent (RTX 4090 pour GPU, i9 pour CPU). Les performances varient selon la resolution d’image et la longueur des prompts.

Pour une entreprise traitant 10 000 documents par mois, l’ecart de cout infrastructure entre OCR pur et VLM peut atteindre plusieurs milliers d’euros mensuels en cloud.

La qualite des documents source impacte differemment les deux approches

Les deux technologies reagissent differemment a la degradation des documents.

L’OCR souffre rapidement des defauts de numerisation : flou, bruit, faible resolution, inclinaison excessive. Le preprocessing peut compenser certains defauts, mais au-dela d’un certain seuil, la reconnaissance s’effondre. Un document scanne a 72 DPI sera probablement inexploitable.

Les VLM montrent plus de robustesse aux defauts visuels grace a leur entrainement sur des images variees. Ils peuvent parfois “deviner” un mot flou grace au contexte. Mais ils ne font pas de miracles : un document illisible pour un humain restera illisible pour un VLM.

En revanche, les VLM peuvent halluciner des informations absentes du document, un risque que l’OCR ne presente pas. Si vous demandez a un VLM “Quel est le numero de serie ?” et que ce numero n’est pas visible, il peut inventer une reponse plausible au lieu d’avouer son ignorance.

def validate_vlm_extraction(vlm_result: dict, ocr_result: str) -> dict:
    """Croise les resultats VLM et OCR pour detecter les hallucinations."""

    validation = {
        'fields': {},
        'warnings': []
    }

    for field, value in vlm_result.items():
        # Verifie si la valeur extraite par le VLM
        # apparait dans le texte brut OCR
        value_str = str(value)

        if value_str in ocr_result or value_str.lower() in ocr_result.lower():
            validation['fields'][field] = {
                'value': value,
                'confirmed_by_ocr': True,
                'confidence': 'high'
            }
        else:
            # Valeur VLM non trouvee dans l'OCR : potentielle hallucination
            validation['fields'][field] = {
                'value': value,
                'confirmed_by_ocr': False,
                'confidence': 'low'
            }
            validation['warnings'].append(
                f"Field '{field}' value '{value}' not found in OCR text"
            )

    return validation

Cette approche de validation croisee permet de tirer parti des forces des deux technologies tout en limitant leurs faiblesses respectives.

L’architecture hybride combine le meilleur des deux mondes

En pratique, beaucoup de systemes de production adoptent une architecture hybride. L’OCR traite la majorite des documents standardises, rapides et peu couteux a traiter. Les VLM interviennent sur les documents complexes ou les cas limites.

from dataclasses import dataclass
from enum import Enum
from typing import Optional

class DocumentComplexity(Enum):
    SIMPLE = "simple"      # Formulaire standardise
    MODERATE = "moderate"  # Structure variable mais textuelle
    COMPLEX = "complex"    # Tableaux, schemas, annotations

@dataclass
class RoutingDecision:
    method: str  # "ocr", "vlm", ou "hybrid"
    complexity: DocumentComplexity
    confidence: float
    reason: str

class DocumentRouter:
    """Route les documents vers OCR ou VLM selon leur complexite."""

    def __init__(self, ocr_extractor, vlm_extractor, classifier):
        self.ocr = ocr_extractor
        self.vlm = vlm_extractor
        self.classifier = classifier

    def classify_document(self, image_path: str) -> RoutingDecision:
        """Determine la complexite du document."""

        # Classification rapide basee sur heuristiques
        features = self._extract_features(image_path)

        # Criteres de decision
        if features['table_count'] == 0 and features['text_density'] > 0.7:
            return RoutingDecision(
                method="ocr",
                complexity=DocumentComplexity.SIMPLE,
                confidence=0.9,
                reason="Document textuel dense sans tableau"
            )

        if features['table_count'] > 2 or features['diagram_detected']:
            return RoutingDecision(
                method="vlm",
                complexity=DocumentComplexity.COMPLEX,
                confidence=0.85,
                reason="Tableaux multiples ou schemas detectes"
            )

        # Cas intermediaires : approche hybride
        return RoutingDecision(
            method="hybrid",
            complexity=DocumentComplexity.MODERATE,
            confidence=0.75,
            reason="Complexite moderee - validation croisee recommandee"
        )

    def _extract_features(self, image_path: str) -> dict:
        """Extrait des features visuelles pour la classification."""
        # Detection de tableaux, densite de texte, presence de graphiques...
        # Implementation simplifiee
        return {
            'table_count': 0,
            'text_density': 0.5,
            'diagram_detected': False
        }

    def process(self, image_path: str, query: Optional[str] = None) -> dict:
        """Traite un document avec la methode appropriee."""

        decision = self.classify_document(image_path)

        if decision.method == "ocr":
            result = self.ocr.extract(image_path)
            result['routing'] = decision
            return result

        elif decision.method == "vlm":
            result = self.vlm.extract(image_path, query)
            result['routing'] = decision
            return result

        else:  # hybrid
            ocr_result = self.ocr.extract(image_path)
            vlm_result = self.vlm.extract(image_path, query)

            # Fusion intelligente des resultats
            merged = self._merge_results(ocr_result, vlm_result)
            merged['routing'] = decision
            return merged

Cette architecture permet de controler les couts tout en maximisant la qualite d’extraction sur l’ensemble du corpus documentaire.

Les criteres de decision se resument en quelques questions cles

Pour choisir entre OCR, VLM ou hybride, posez-vous ces questions.

Vos documents sont-ils standardises ? Si oui, commencez par l’OCR. Les regles d’extraction sur formats connus sont plus fiables et moins couteuses que les VLM.

Avez-vous besoin de comprehension semantique ? Si vos requetes ressemblent a “Quelle est la capacite maximale ?” plutot qu’a “Extrais la valeur du champ X”, un VLM apporte de la valeur.

Quel volume traitez-vous ? Sous 1000 documents par mois, le cout VLM reste gerable. Au-dela de 10 000, l’optimisation devient critique.

Quelles sont vos contraintes d’infrastructure ? Pas de GPU disponible = OCR ou API cloud. Contraintes de souverainete = modeles on-premise, donc SmolVLM ou Qwen2-VL.

Quelle precision exigez-vous ? Pour des extractions critiques (montants financiers, numeros de serie), la validation croisee OCR + VLM reduit les erreurs.

L’evolution des modeles tend vers la convergence

La frontiere entre OCR et VLM s’estompe progressivement. Les derniers modeles d’OCR integrent de plus en plus de comprehension contextuelle. Les VLM deviennent plus legers et plus rapides.

Le paper SCAN (arXiv:2505.14381) propose une architecture qui combine analysis layoutielle et comprehension semantique dans un modele unifie, optimise pour les documents. Cette convergence suggere que la distinction OCR/VLM deviendra moins pertinente dans les annees a venir.

Pour l’instant, la decision reste pragmatique : evaluez les deux approches sur un echantillon representatif de vos documents et mesurez la precision, le temps de traitement, et le cout. Les benchmarks generiques ne remplacent pas un test sur vos propres donnees.

Les erreurs courantes a eviter lors de l’evaluation

Plusieurs pieges guettent les equipes qui evaluent ces technologies.

Tester sur des documents trop propres. Les PDFs natifs ou les scans haute resolution ne representent pas la realite du terrain. Incluez des documents degrades dans votre jeu de test.

Ignorer le cout d’integration. L’OCR necessite du developpement de regles, le VLM necessite du prompt engineering. Les deux demandent du travail d’integration avec vos systemes existants.

Surestimer les capacites des VLM. Ces modeles impressionnent en demo mais peuvent decevoir sur des cas limites specifiques a votre domaine.

Sous-estimer la maintenance. Les regles OCR cassent quand les formats evoluent. Les prompts VLM necessitent des ajustements quand de nouveaux types de documents apparaissent.


Racine AI deploie des pipelines de traitement documentaire hybrides adaptes a vos contraintes industrielles. Notre solution Pi-Edge combine OCR optimise et VLM on-premise pour maximiser la precision sans compromis sur la souverainete des donnees. Contactez-nous pour une evaluation technique sur vos documents.

Newsletter technique

1 article par mois sur l'IA documentaire. Pas de spam.

8 - 3 =

On nous demande souvent

Les VLM sont-ils toujours meilleurs que l'OCR pour les documents ?

Non. L'OCR reste plus rapide et moins couteux pour les formulaires standardises a haut volume. Les VLM apportent de la valeur sur les documents a structure complexe ou variable, ou quand une comprehension semantique est necessaire. Le choix optimal depend du type de documents et du volume.

Quelle VRAM faut-il pour faire tourner un VLM localement ?

SmolVLM, le plus leger, fonctionne avec 4-8 Go de VRAM. Qwen2-VL-7B necessite 14-16 Go minimum. Les modeles plus gros comme Qwen2-VL-72B depassent 100 Go. La quantization 4-bit peut reduire ces besoins par 2 a 4, avec une legere perte de precision.

Comment les VLM peuvent-ils halluciner sur des documents ?

Si vous demandez a un VLM d'extraire une information absente du document (par exemple un numero de serie non visible), il peut inventer une reponse plausible au lieu d'avouer son ignorance. La validation croisee avec l'OCR brut permet de detecter ces hallucinations.

Les documents industriels ont-ils des specificites qui impactent le choix VLM/OCR ?

Oui. Les plans techniques melangent texte et cotes dimensionnelles avec des relations spatiales importantes. Les fiches produits varient enormement entre fournisseurs. Les rapports de controle incluent des annotations manuscrites. Ces specificites favorisent generalement les VLM pour leur comprehension structurelle.

Peut-on combiner OCR et VLM dans un meme pipeline ?

Oui, c'est meme souvent la meilleure approche. L'OCR traite les documents simples rapidement, le VLM intervient sur les cas complexes. La validation croisee des resultats OCR par le VLM (ou inversement) detecte les erreurs. Un routeur classe les documents selon leur complexite.

Quel est le temps de traitement par page avec OCR vs VLM ?

L'OCR avec Tesseract traite une page en quelques centaines de millisecondes sur CPU. Les VLM prennent 1 a 3 secondes par page sur GPU recent, et 30 a 60 secondes sur CPU. L'ecart est d'un facteur 10 a 100 selon la configuration.

Comment le preprocessing ameliore-t-il les resultats OCR ?

Le preprocessing inclut la binarisation adaptative (gestion des variations d'eclairage), la correction d'inclinaison (deskew), le debruitage, et parfois l'upscaling. Ces traitements compensent les defauts de numerisation et peuvent significativement ameliorer la precision de reconnaissance.

Les APIs cloud (GPT-4V, Document AI) sont-elles une alternative viable a l'on-premise ?

Les APIs cloud offrent des performances elevees sans investissement en infrastructure. Elles conviennent si vos documents ne sont pas sensibles et si le cout a l'usage reste acceptable. Pour les documents confidentiels ou les gros volumes, l'on-premise avec modeles open source devient preferable.

Comment evaluer objectivement OCR vs VLM sur mes documents ?

Constituez un jeu de test representatif incluant des documents propres ET degrades. Annotez manuellement les champs a extraire (ground truth). Mesurez precision et recall pour chaque approche. Incluez aussi le temps de traitement et le cout infrastructure dans la comparaison.

La technologie VLM va-t-elle rendre l'OCR obsolete ?

La frontiere s'estompe progressivement. Les architectures recentes comme SCAN combinent analyse layoutielle et comprehension semantique. A terme, la distinction pourrait devenir moins pertinente. Pour l'instant, l'OCR reste optimal pour les cas simples et les contraintes de ressources.

Discutons de

Votre Projet.

IA Documents, automatisation legacy, inspection terrain. Nous deployons des solutions qui passent en production.

Decrivez votre projet et recevez une reponse sous 48h.

Nous contacter