Polydesk-logotype
Polydesk.ai — Header

Document Classification

La document classification (classification de documents) est une tâche d’apprentissage supervisé qui consiste à assigner automatiquement une ou plusieurs catégories prédéfinies à un document textuel, en se basant sur son contenu sémantique et/ou sa structure visuelle.

Document Classification en bref
Catégorie
NLP / Text Classification / Apprentissage supervisé
Approches
BERT fine-tuné, LLM zero-shot, SVM + TF-IDF, Naive Bayes, Layout-aware (LayoutLM)
Modes
Single-label, multi-label, hiérarchique
Métriques
F1-score, Accuracy, Precision, Recall, AUC
Frameworks
Hugging Face Transformers, scikit-learn, spaCy, SetFit
Lié à
Document Clustering, Sentiment Analysis, Spam Detection

Classification vs. clustering : la distinction essentielle

La document classification est supervisée : vous disposez de catégories connues à l’avance (facture, contrat, CV, réclamation, etc.) et d’exemples étiquetés pour chacune. Le modèle apprend à reproduire cet étiquetage sur de nouveaux documents. Le document clustering, en revanche, est non supervisé : il découvre les groupes dans les données sans catégories prédéfinies.

En pratique, les deux sont souvent combinés : le clustering sert à explorer un corpus non étiqueté et à identifier les catégories, puis la classification prend le relais pour assigner automatiquement ces catégories aux nouveaux documents entrants.

Les trois modes de classification

Single-label

Chaque document reçoit exactement une catégorie. C’est le cas le plus simple et le plus courant : un email est soit « spam » soit « non-spam », un ticket de support est de type « facturation » ou « technique » ou « livraison ». Les algorithmes produisent une distribution de probabilités sur les classes et assignent celle avec la probabilité la plus élevée.

Multi-label

Chaque document peut recevoir plusieurs catégories simultanément. Un article scientifique peut être étiqueté « machine learning » ET « NLP » ET « biomédical ». C’est techniquement plus complexe car les classes ne sont pas mutuellement exclusives. Les approches incluent les classifieurs binaires indépendants (un par label), les chaînes de classifieurs, et les modèles de bout en bout qui prédisent directement un vecteur de labels.

Hiérarchique

Les catégories sont organisées en arborescence : un document est d’abord classé dans une catégorie générale, puis dans une sous-catégorie, puis éventuellement une sous-sous-catégorie. Par exemple : Document → Juridique → Contrat → Contrat de travail. Des travaux récents sur la classification hiérarchique avec LLMs (shared task FoRC4CL, NSLP 2025) montrent que des taxonomies de plus de 180 catégories sur trois niveaux peuvent être gérées efficacement par des approches hybrides k-NN + LLM.

Les quatre grandes approches

Approche 1 : ML classique (TF-IDF + classifieur)

L’approche historique : chaque document est représenté par un vecteur TF-IDF, puis classé par un algorithme de machine learning traditionnel. Les classifieurs les plus utilisés sont :

Naive Bayes : rapide, simple, fonctionne bien avec des données propres et un vocabulaire discriminant. C’est souvent le premier baseline à battre. Multinomial Naive Bayes est le variant le plus adapté au texte.

SVM (Support Vector Machine) : efficace dans les espaces de haute dimension (ce qui est le cas avec TF-IDF). Les SVM linéaires sont le gold standard des approches pré-deep learning et restent compétitifs sur les petits datasets.

XGBoost / LightGBM : les modèles gradient boosting offrent d’excellentes performances et gèrent bien les features hétérogènes. Un benchmark de 2025 sur la classification de documents longs (7 000-14 000 mots) montre que XGBoost atteint des F1-scores de 75-86% avec des ressources computationnelles raisonnables, ce qui en fait une option très compétitive.

Régression logistique : simple, interprétable, et étonnamment efficace pour la classification binaire et multi-classe avec TF-IDF.

Avantages de cette approche : rapidité d’entraînement (secondes à minutes), interprétabilité, faible consommation de ressources. Limites : incapacité à capturer la sémantique (synonymes, paraphrases), dépendance au feature engineering.

Approche 2 : Transformers fine-tunés (BERT et variantes)

Le fine-tuning d’un modèle pré-entraîné comme BERT, RoBERTa, ou DeBERTa est l’état de l’art pour la classification de documents quand vous disposez de données étiquetées (quelques centaines à quelques milliers d’exemples). Le processus consiste à ajouter une couche de classification sur le modèle pré-entraîné, puis à l’entraîner sur vos données.

Les modèles les plus performants :

BERT / RoBERTa / DeBERTa : pour l’anglais, DeBERTa-v3 offre les meilleures performances. Pour le français, CamemBERT et FlauBERT sont les références.

LayoutLM / LayoutLMv3 : des modèles layout-aware qui combinent le texte ET la mise en page visuelle du document. Indispensables pour les formulaires, factures, contrats scannés où la position du texte sur la page est un signal discriminant.

SetFit Open Source : une technique de few-shot fine-tuning qui atteint des performances proches de BERT fine-tuné avec seulement 8 à 16 exemples par classe. Développée par Hugging Face, c’est le meilleur choix quand vos données étiquetées sont limitées mais que vous voulez éviter les coûts API des LLMs.

Limite des 512 tokens de BERT BERT et ses variantes sont limités à 512 tokens en entrée. Pour les documents longs, trois stratégies existent : tronquer (ne garder que le début, souvent suffisant pour les documents avec un résumé ou une introduction informative), découper et agréger (classer chaque segment séparément, puis voter), ou utiliser des modèles à longue fenêtre comme Longformer (4 096 tokens) ou BigBird. Pour les très longs documents, l’approche XGBoost + TF-IDF ou les LLMs à contexte étendu sont souvent plus pratiques.

Approche 3 : LLM en zero-shot / few-shot

C’est la révolution des deux dernières années. Les grands modèles de langage peuvent classifier des documents sans aucune donnée d’entraînement (zero-shot) ou avec quelques exemples (few-shot), simplement via un prompt.

Les performances sont remarquables. Une étude comparative sur 10 000 documents (Electronics, 2025) montre que les meilleurs LLMs en zero-shot atteignent des macro-F1 supérieurs à 0.87, avec un accord inter-modèles très élevé (kappa de Cohen > 0.91 entre Claude et GPT-4o). En e-commerce, une étude ScienceDirect (2025) évalue GPT-4o, GPT-4o mini, Claude 3.5 Sonnet et Claude 3.5 Haiku sur 248 catégories de produits en zero-shot, avec des résultats exploitables en production.

L’article de référence « Large Language Models for Text Classification » (Sociological Methods & Research, 2025) compare 10 modèles sur 4 régimes d’entraînement (zero-shot, few-shot, fine-tuning, instruction-tuning). Ses conclusions clés : les plus grands modèles offrent les meilleures performances en zero-shot, mais le fine-tuning de petits modèles est compétitif grâce à leur coût inférieur ; l’instruction-tuning des LLMs génératifs étend le périmètre de la classification à des tâches plus complexes que celles historiquement réalisables.

Exemple de prompt pour la classification zero-shot :

Classifiez le document suivant dans exactement UNE des
catégories suivantes :
- Facture
- Contrat
- Devis
- Bon de commande
- Réclamation
- Autre

Répondez uniquement avec le nom de la catégorie.

Document : [texte du document]
Modèles NLI pour le zero-shot efficace Une alternative aux LLMs génératifs pour le zero-shot : les modèles de Natural Language Inference (NLI) comme facebook/bart-large-mnli ou les modèles DEBATE (Political Analysis, 2025). L’idée est de reformuler la classification comme un problème d’entailment : « Ce document parle de finance » → vrai/faux ? Ces modèles sont des ordres de grandeur plus rapides et moins chers que les LLMs génératifs, tout en étant compétitifs en zero-shot sur les tâches bien définies. La pipeline Hugging Face zero-shot-classification implémente cette approche en une ligne de code.

Approche 4 : modèles layout-aware (documents visuels)

Pour les documents scannés, les formulaires ou les PDF à mise en page complexe, le texte seul ne suffit pas. La position du texte, la structure des tableaux, les logos et les signatures sont des signaux discriminants essentiels. Les modèles layout-aware combinent :

OCR : extraction du texte et de ses coordonnées spatiales (bounding boxes) via Tesseract, AWS Textract ou Google Vision.

LayoutLM / LayoutLMv3 : des Transformers qui encodent conjointement le texte, sa position spatiale et éventuellement l’image du document. LayoutLMv3 est l’état de l’art pour la classification de documents scannés, la compréhension de formulaires et l’extraction d’information structurée.

Donut (Document Understanding Transformer) : un modèle end-to-end qui fonctionne directement sur l’image du document sans passer par un OCR intermédiaire.

Ces modèles sont particulièrement pertinents pour les cas d’usage métier : tri automatique de courrier entrant, classification de factures, routage de documents administratifs.

Comparaison des approches

Approche Données nécessaires F1 typique Coût Latence Cas d’usage
TF-IDF + SVM/XGBoost 500+ exemples/classe 75-90% Très faible < 10 ms Haute volume, budget limité
BERT fine-tuné 100-1 000 exemples/classe 85-95% Faible (GPU) ~50 ms Standard production
SetFit 8-16 exemples/classe 80-92% Faible ~50 ms Peu de données étiquetées
LLM zero-shot 0 exemples 70-87% API ($$) ~1-5 s Prototypage, classes changeantes
LLM few-shot 3-25 exemples/classe 80-90% API ($$$) ~2-10 s Faible volume, haute flexibilité
LayoutLM fine-tuné 200+ exemples/classe 90-97% Moyen (GPU) ~100 ms Documents scannés, formulaires

Cas d’usage concrets

Tri automatique d’emails et de tickets

Le cas d’usage originel de la classification de texte. Chaque email ou ticket entrant est automatiquement assigné à une catégorie (commercial, technique, facturation, réclamation, urgent, etc.) pour être routé vers la bonne équipe. Les modèles BERT fine-tunés ou les LLMs en zero-shot sont les deux approches dominantes selon le volume. Pour du spam detection, les modèles classiques (Naive Bayes, SVM) restent étonnamment efficaces.

Classification de documents juridiques

Trier automatiquement des milliers de documents juridiques (contrats, assignations, conclusions, décisions, correspondances) par type et par sous-type. Les modèles spécialisés comme Legal-BERT surpassent BERT générique sur ce domaine. Le Legal AI est l’un des secteurs où la classification de documents a le plus de valeur métier directe.

Documents médicaux

Classifier les notes cliniques, les comptes rendus d’imagerie, les résumés de sortie par type de pathologie, de traitement ou de spécialité. Une étude PMC (2025) montre qu’un LLM zero-shot (Llama 3.3) performe de manière comparable à un BERT fine-tuné sur 4 642 notes annotées manuellement pour l’identification de discussions sur les objectifs de soins, ouvrant la voie à des applications sans données d’entraînement coûteuses.

E-commerce et catalogues produits

Classifier automatiquement les produits dans des taxonomies de centaines de catégories à partir de leur description textuelle et de leur image. L’étude ScienceDirect (2025) sur 248 catégories en zero-shot montre que les LLMs sont déjà exploitables en production pour ce cas d’usage, même sans données d’entraînement spécifiques.

Documents financiers et compliance

Classifier les rapports SEC/AMF, les notes d’analystes, les communiqués de presse par thème (résultats financiers, fusion-acquisition, alerte résultat, changement de direction). C’est une brique essentielle de la financial AI et des systèmes de veille réglementaire (compliance IA).

Le défi des documents longs

La classification de documents longs (1 000+ mots) pose des défis spécifiques que les approches standard ne gèrent pas bien :

Limite de tokens : BERT est limité à 512 tokens (~350 mots). Les documents juridiques, médicaux ou scientifiques dépassent largement cette limite.

Stratégies de contournement : tronquer au début (fonctionne si le résumé ou l’introduction contient les informations discriminantes), chunking + vote majoritaire (chaque segment est classé indépendamment, la classe majoritaire gagne), modèles à longue fenêtre (Longformer à 4 096 tokens, BigBird), approche TF-IDF + XGBoost (pas de limite de longueur, très compétitif selon les benchmarks 2025), LLMs à contexte étendu (Claude Opus 4.6 jusqu’à 1M tokens, GPT-5.4 jusqu’à ~1M tokens).

RAG pour la classification : une approche avancée combine un système de retrieval-augmented generation avec un LLM. Les chunks les plus pertinents du document sont récupérés via recherche vectorielle, puis soumis au LLM avec l’instruction de classification. Cela permet de traiter des documents arbitrairement longs tout en concentrant l’attention du modèle sur les passages les plus discriminants.

Pipeline d’implémentation

Option rapide : LLM zero-shot (5 minutes)

# Avec la pipeline Hugging Face (gratuit, local)
from transformers import pipeline

classifier = pipeline(
    "zero-shot-classification",
    model="facebook/bart-large-mnli"
)

result = classifier(
    "La société XYZ a conclu un accord de cession...",
    candidate_labels=["Contrat", "Facture", "Rapport", "Email"]
)
print(result["labels"][0])  # → "Contrat"

Option production : BERT fine-tuné

# Fine-tuning avec Hugging Face Trainer
from transformers import AutoModelForSequenceClassification
from transformers import AutoTokenizer, Trainer, TrainingArguments

model_name = "camembert-base"  # pour le français
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(
    model_name, num_labels=5
)

training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=16,
    learning_rate=2e-5,
    evaluation_strategy="epoch"
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset
)
trainer.train()

Option few-shot : SetFit (8 exemples par classe)

from setfit import SetFitModel, SetFitTrainer

model = SetFitModel.from_pretrained(
    "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"
)

trainer = SetFitTrainer(
    model=model,
    train_dataset=train_dataset,  # 8-16 exemples par classe
    num_iterations=20,
    batch_size=16
)
trainer.train()

preds = model.predict(["Nouveau document à classifier"])

Comment choisir son approche

L’arbre de décision est simple :

Pas de données étiquetées ? → LLM zero-shot (API) ou modèle NLI (bart-large-mnli, gratuit et local).

Moins de 50 exemples par classe ? → SetFit ou LLM few-shot.

100-1 000 exemples par classe ? → BERT/CamemBERT fine-tuné. C’est le sweet spot qualité/coût.

Plus de 1 000 exemples et besoin de vitesse ? → TF-IDF + XGBoost (si la sémantique n’est pas critique) ou BERT fine-tuné (si elle l’est).

Documents scannés ou visuels ? → LayoutLMv3 fine-tuné.

Catégories qui changent fréquemment ? → LLM zero-shot (pas de ré-entraînement nécessaire).

Coût des LLMs en production La classification par LLM via API est puissante mais coûteuse à grande échelle. Classifier 100 000 documents par jour avec GPT-5.4 (~500 tokens par document + prompt) coûterait environ 150-300 $/jour. La même tâche avec un modèle BERT fine-tuné local coûte essentiellement le prix de l’électricité GPU. Pour la production à haut volume, le fine-tuning est presque toujours plus économique. Réservez les LLMs au prototypage, aux cas à faible volume, et aux situations où les catégories changent trop souvent pour justifier un ré-entraînement.

Évaluer la qualité de la classification

Le choix de la métrique dépend de votre contexte métier :

Accuracy : le pourcentage de documents correctement classés. Simple et intuitive, mais trompeuse quand les classes sont déséquilibrées. Si 95% de vos documents sont de type A, un modèle qui prédit toujours A a 95% d’accuracy sans rien avoir appris.

F1-score (macro / micro / weighted) : la métrique de référence. Le F1 macro moyennne le F1 de chaque classe sans pondération, ce qui donne un poids égal aux classes rares. Le F1 weighted pondère par la taille de chaque classe. Pour les datasets déséquilibrés, le F1 macro est le plus exigeant et le plus informatif.

Precision et Recall : la precision mesure la fiabilité des prédictions positives (combien de documents classés « Contrat » sont réellement des contrats ?). Le recall mesure la couverture (combien de vrais contrats ont été trouvés ?). Le compromis dépend du cas d’usage : en compliance, un recall élevé est prioritaire (ne pas rater de documents sensibles) ; en routage de tickets, la precision est plus importante (ne pas envoyer des tickets au mauvais service).

AUC-ROC : mesure la capacité du modèle à discriminer entre classes indépendamment du seuil de décision. Utile pour comparer des modèles et pour les classifications binaires.

Erreurs courantes et bonnes pratiques

Données déséquilibrées : si 80% de vos documents sont de type A et 5% de type D, le modèle aura naturellement de mauvaises performances sur la classe D. Solutions : suréchantillonnage (SMOTE, augmentation de données), sous-échantillonnage, pondération des classes dans la loss function, ou utilisation de métriques adaptées (F1 macro).

Fuite de données (data leakage) : vérifiez que vos données de test ne contiennent pas d’informations qui ne seraient pas disponibles en production. Par exemple, si vos documents contiennent un champ « type » dans les métadonnées, le modèle pourrait apprendre à lire ce champ plutôt que le contenu.

Dérive de distribution (concept drift) : le vocabulaire et les thèmes évoluent dans le temps. Un modèle entraîné sur des emails de 2023 peut dégrader en 2026 si le jargon a changé. Mettez en place un monitoring des performances et un pipeline de ré-entraînement périodique.

Ambiguïté inter-classes : certains documents appartiennent légitimement à plusieurs catégories. Si votre taxonomie force un single-label alors que la réalité est multi-label, les performances plafonneront. Analysez la matrice de confusion pour identifier les classes qui se confondent et ajustez votre taxonomie.

Qualité des labels : la performance d’un classifieur supervisé est plafonnée par la qualité des étiquettes d’entraînement. Un accord inter-annotateurs de 80% signifie que votre modèle ne pourra pas dépasser 80% sans apprendre les erreurs des annotateurs. Investissez dans des guidelines d’annotation claires et mesurez l’accord inter-annotateurs avant de blâmer le modèle.

Verdict

La classification de documents est une tâche résolue techniquement : avec suffisamment de données, un BERT fine-tuné atteint des performances quasi-humaines. L’innovation récente vient des LLMs qui ont démocratisé l’accès à la classification en supprimant le besoin de données étiquetées. Le choix de l’approche dépend de trois facteurs : votre volume de données étiquetées (zero → LLM, moyen → SetFit/BERT, élevé → BERT/XGBoost), votre volume de documents à traiter (faible → LLM API, élevé → modèle local), et la nature de vos documents (texte pur → BERT/LLM, scannés → LayoutLM).

Pour le français, CamemBERT fine-tuné reste le choix le plus robuste en production. Pour le prototypage ou les cas à faible volume, Claude Sonnet 4.6 ou GPT-5.4 en zero-shot vous donnent des résultats exploitables en quelques minutes.


Questions fréquentes sur la document classification

Quelle est la différence entre document classification et text classification ?

La text classification est le terme générique qui couvre la classification de tout type de texte : tweets, phrases, paragraphes, documents. La document classification désigne spécifiquement la classification de documents complets (emails, rapports, contrats, articles). En pratique, les mêmes techniques s’appliquent, mais la document classification pose des défis supplémentaires liés à la longueur des textes, à la structure multi-sections et parfois à la mise en page visuelle. Les modèles layout-aware (LayoutLM) sont spécifiques à la document classification.

Combien d’exemples étiquetés faut-il pour un bon classifieur ?

Cela dépend de l’approche. En zero-shot avec un LLM : 0 exemple. Avec SetFit : 8 à 16 exemples par classe suffisent pour des performances solides. Avec BERT fine-tuné : 100 à 500 exemples par classe donnent généralement un F1 supérieur à 90%. Avec TF-IDF + SVM : 500 à 1 000 exemples par classe. La règle empirique : si vos classes sont bien définies et distinctes, peu d’exemples suffisent. Si elles sont ambiguës ou se chevauchent, il en faut davantage. Commencez toujours par un LLM zero-shot pour valider que la tâche est réalisable, puis passez au fine-tuning si le volume ou le coût l’exige.

Les LLMs zero-shot sont-ils aussi bons que BERT fine-tuné ?

Pas toujours, mais l’écart se réduit. Sur des tâches bien définies avec des catégories claires, les meilleurs LLMs (GPT-5.4, Claude Opus 4.6) en zero-shot rivalisent avec BERT fine-tuné. Sur des tâches spécialisées ou ambiguës, BERT fine-tuné avec 500+ exemples reste supérieur. L’avantage du zero-shot est la flexibilité : changez les catégories simplement en modifiant le prompt, sans ré-entraînement. L’inconvénient est le coût et la latence. L’instruction-tuning (fine-tuning d’un LLM sur vos données) combine le meilleur des deux mondes mais est plus coûteux en compute.

Comment classifier des documents en français ?

Pour le fine-tuning : CamemBERT (camembert-base) est le modèle de référence pour le français. FlauBERT est une alternative. Les deux sont disponibles sur Hugging Face. Pour le zero-shot : la pipeline zero-shot-classification de Hugging Face avec joeddav/xlm-roberta-large-xnli fonctionne bien en français. Les LLMs commerciaux (Claude, GPT-5.4, Gemini) gèrent nativement le français en zero-shot. Pour le few-shot : SetFit avec paraphrase-multilingual-MiniLM-L12-v2 est le meilleur choix.

Comment gérer des documents scannés (images/PDF) ?

Deux approches : la première (pipeline OCR + classifieur texte) consiste à extraire le texte avec un OCR (Tesseract, AWS Textract, Google Vision), puis à le classifier avec un modèle texte classique (BERT, LLM). C’est simple mais perd l’information de mise en page. La seconde (modèle layout-aware) utilise LayoutLMv3 ou Donut, qui traitent conjointement le texte, sa position spatiale et l’image du document. LayoutLMv3 fine-tuné atteint des F1-scores de 90-97% sur la classification de documents scannés, nettement au-dessus des approches texte seul. C’est l’approche recommandée pour les factures, formulaires, contrats et tout document où la mise en page compte.

Polydesk.ai — Footer