Mistral AI a lancé OCR 4 le 24 juin 2026, transformant son moteur d'extraction documentaire en une plateforme complète d'intelligence documentaire. Les ajouts principaux — boîtes englobantes, classification des blocs par type et scores de confiance au niveau du mot — font passer un extracteur de texte brut à un pipeline de données structurées prêt pour les systèmes RAG, l'automatisation agentique et les workflows de conformité dans les secteurs réglementés.
Ce guide parcourt l'API du premier appel jusqu'au pipeline de production, avec des exemples Python et TypeScript tout au long.
Ce qui change dans OCR 4
Les versions précédentes de Mistral OCR extrayaient du texte et des tableaux. La version 4 ajoute trois fonctionnalités structurelles déterminantes pour les systèmes en production :
Boîtes englobantes — Chaque élément extrait est désormais accompagné de coordonnées en pixels. Cela permet de surligner des passages dans le document original, de relier les données extraites à leur emplacement source pour la citation, et de construire des interfaces de révision où des humains vérifient les extractions incertaines.
Classification des blocs typés — Chaque page est segmentée en 13 types de blocs : text, title, list, table, image, equation, caption, code, references, aside_text, header, footer et signature. Les applications en aval peuvent filtrer par type, router les équations vers un moteur de rendu LaTeX, ou extraire uniquement les tableaux pour un export tableur — sans parsing supplémentaire.
Scores de confiance intégrés — Disponibles au niveau de la page ou du mot. Tout mot dont le score est en dessous du seuil déclenche une étape de révision humaine plutôt que de propager silencieusement des erreurs dans les enregistrements en aval.
Le modèle couvre maintenant 170 langues réparties en 10 groupes linguistiques, avec un support dédié pour l'arabe et les autres scripts du Moyen-Orient, ce qui en fait un choix solide pour les workflows documentaires multilingues.
Installation
Installez le SDK Python ou le package Node.js :
pip install mistralai
npm install @mistralai/mistralaiConfigurez votre clé API en variable d'environnement :
export MISTRAL_API_KEY="your_key_here"Extraction OCR de base
L'appel le plus simple traite un PDF via URL et retourne du Markdown structuré :
Python
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
result = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "document_url",
"document_url": "https://example.com/facture.pdf"
},
table_format="markdown"
)
for page in result.pages:
print(f"Page {page.index}:\n{page.markdown}\n")TypeScript
import Mistral from "@mistralai/mistralai";
const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY! });
const result = await client.ocr.process({
model: "mistral-ocr-latest",
document: {
type: "document_url",
documentUrl: "https://example.com/facture.pdf"
},
tableFormat: "markdown"
});
for (const page of result.pages) {
console.log(`Page ${page.index}:\n${page.markdown}\n`);
}Pour les fichiers locaux, envoyez-les d'abord via le Files API, puis référencez l'URL retournée :
with open("contrat.pdf", "rb") as f:
upload = client.files.upload(
file={"file_name": "contrat.pdf", "content": f},
purpose="ocr"
)
result = client.ocr.process(
model="mistral-ocr-latest",
document={"type": "document_url", "document_url": upload.url}
)Extraction des blocs
Activez include_blocks=True pour obtenir une liste segmentée d'éléments typés par page, chacun avec sa boîte englobante et son contenu textuel :
result = client.ocr.process(
model="mistral-ocr-latest",
document={"type": "document_url", "document_url": url},
include_blocks=True
)
for page in result.pages:
for block in page.blocks:
if block.type == "equation":
print(f"Équation à {block.bounding_box}: {block.text}")
elif block.type == "table":
print(f"Tableau à {block.bounding_box}")
elif block.type == "signature":
print(f"Signature détectée à {block.bounding_box}")Les coordonnées des boîtes englobantes sont normalisées par rapport aux dimensions de la page, ce qui les rend directement utilisables quelle que soit la résolution d'affichage, pour superposer des surlignages sur le document original dans une visionneuse PDF ou une interface web.
Scores de confiance
Les scores de confiance au niveau de la page permettent de construire des pipelines de révision sélective. Interceptez les pages de mauvaise qualité avant tout traitement en aval :
result = client.ocr.process(
model="mistral-ocr-latest",
document={"type": "document_url", "document_url": url},
confidence_scores_granularity="page"
)
SEUIL = 0.80
for page in result.pages:
score = page.confidence_scores.get("overall", 1.0)
if score < SEUIL:
print(f"Page {page.index} signalée pour révision : confiance {score:.2f}")Pour les contrats juridiques, les dossiers médicaux et les états financiers, ce schéma garantit que les scans de mauvaise qualité sont détectés à l'entrée plutôt que découverts des mois plus tard lors d'un audit.
Mode Document AI : sortie JSON structurée
Le mode Document AI accepte un schéma JSON personnalisé et retourne directement des données structurées, supprimant ainsi l'étape d'extraction LLM séparée. C'est le chemin le plus rapide du PDF à l'enregistrement en base de données :
schema_facture = {
"type": "object",
"properties": {
"nom_fournisseur": {"type": "string"},
"numero_facture": {"type": "string"},
"montant_total": {"type": "number"},
"devise": {"type": "string"},
"lignes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {"type": "string"},
"quantite": {"type": "number"},
"prix_unitaire": {"type": "number"}
}
}
}
}
}
result = client.ocr.process(
model="mistral-ocr-latest",
document={"type": "document_url", "document_url": url_facture},
document_annotation_schema=schema_facture
)
data = result.document_annotation
print(f"Facture #{data['numero_facture']}: {data['montant_total']} {data['devise']}")En TypeScript :
const result = await client.ocr.process({
model: "mistral-ocr-latest",
document: { type: "document_url", documentUrl: urlFacture },
documentAnnotationSchema: schemaFacture
});
const data = result.documentAnnotation;
console.log(`Facture #${data.numeroFacture}: ${data.montantTotal} ${data.devise}`);Le mode Document AI coûte 5 dollars pour 1 000 pages — un dollar de plus que l'OCR pur — mais élimine une étape d'inférence LLM complète dans la plupart des pipelines d'extraction structurée, ce qui le rend moins cher au total.
Auto-hébergement pour la souveraineté des données
OCR 4 se déploie en tant que conteneur unique pour les organisations qui ne peuvent pas router leurs documents sensibles vers des API cloud tierces. Cela est particulièrement pertinent pour :
- Les établissements financiers en Tunisie soumis aux exigences de résidence des données de l'INPDP, ou en Arabie Saoudite sous le PDPL
- Les prestataires de santé traitant des dossiers patients sous réglementation locale
- Les cabinets juridiques manipulant des documents confidentiels
- Les administrations publiques exigeant un traitement documentaire sur site
Le conteneur effectue l'inférence localement : aucun contenu de document ne quitte votre réseau. Contactez l'équipe enterprise de Mistral pour l'image du conteneur et les conditions de licence.
Pour les déploiements cloud nécessitant malgré tout un contrôle régional, OCR 4 est disponible sur Amazon SageMaker et Microsoft Azure Foundry, avec l'intégration Snowflake à venir prochainement.
Tarification
| Mode | API standard | Batch API |
|---|---|---|
| OCR pur | 4 $ pour 1 000 pages | 2 $ pour 1 000 pages |
| Document AI | 5 $ pour 1 000 pages | 2,50 $ pour 1 000 pages |
Pour les workflows à grand volume — numérisation d'archives documentaires, traitement de milliers de factures par jour — le Batch API à 2 dollars pour 1 000 pages est compétitif face aux prestataires OCR traditionnels, tout en étant environ 4 fois plus rapide par page selon les retours utilisateurs.
Exemple de pipeline complet
Un pipeline minimal de traitement de factures combinant filtrage par confiance et extraction structurée :
def traiter_facture(url_pdf: str) -> dict | None:
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
# Passe 1 : vérification rapide de la qualité OCR
ocr = client.ocr.process(
model="mistral-ocr-latest",
document={"type": "document_url", "document_url": url_pdf},
confidence_scores_granularity="page"
)
scores = [p.confidence_scores.get("overall", 1.0) for p in ocr.pages]
confiance_moy = sum(scores) / len(scores)
if confiance_moy < 0.75:
mettre_en_file_revision_humaine(url_pdf)
return None
# Passe 2 : extraction structurée pour les documents de haute qualité uniquement
result = client.ocr.process(
model="mistral-ocr-latest",
document={"type": "document_url", "document_url": url_pdf},
document_annotation_schema=schema_facture
)
return result.document_annotationL'approche en deux passes maintient les coûts du mode Document AI au minimum en n'exécutant l'extraction structurée que sur les documents dont la qualité OCR est suffisante.
Performances
OCR 4 obtient un taux de victoire de 72 % lors de tests de préférence humaine en aveugle sur plus de 600 documents réels dans plus de 12 langues. Sur les benchmarks automatisés :
- OlmOCRBench : 85,20 (meilleur score de la catégorie)
- OmniDocBench : 93,07
- Crawl Multilingual : 0,98 sur les 10 groupes linguistiques
Prochaines étapes
Mistral OCR 4 est disponible dès aujourd'hui via la console Mistral API, Amazon SageMaker et Microsoft Azure Foundry. Le Getting Started Cookbook officiel inclut des workflows complets pour les boîtes englobantes et la classification des blocs. Un webinaire de production couvrant les patterns batch à haut débit et l'intégration dans les pipelines RAG est prévu le 7 juillet 2026.
Pour les équipes utilisant déjà Mistral Small 4 pour la génération de texte, OCR 4 ajoute une couche d'ingestion documentaire fonctionnant avec le même SDK et la même clé API — permettant des pipelines de compréhension documentaire de bout en bout sans changer de fournisseur.