Processeur OCR Document AI
Utilisez le processeur OCR Document AI pour extraire du texte et du contenu structuré à partir de documents PDF et d’images. L’alias mistral-ocr-latest pointe vers notre dernier modèle OCR.

Avant de commencer
Fonctionnalités principales
- Extraction de texte préserve la structure et la hiérarchie du document.
- Formatage des tableaux prend en charge les valeurs
null,markdownethtmlvia le paramètretable_format.null: retourne les tableaux en ligne sous forme de Markdown dans la page extraite.markdown: retourne les tableaux séparément sous forme de tableaux Markdown.html: retourne les tableaux séparément sous forme de tableaux HTML.
- Extraction des en-têtes et pieds de page utilise les paramètres
extract_headeretextract_footer. Lorsque vous les utilisez, la réponse inclut le contenu des en-têtes et pieds de page dans les champsheaderetfooter. Par défaut, l’OCR traite les en-têtes et pieds de page comme du contenu principal. - Extraction des blocs utilise le paramètre
include_blocks. Lorsqu’elle est activée, chaque page contient un tableaublocksavec les boîtes englobantes au niveau des paragraphes, les types de blocs structurels et le contenu extrait dans l’ordre de lecture. - Scores de confiance sont disponibles pour le contenu extrait au niveau de la page, du bloc ou du mot via le paramètre
confidence_scores_granularity. - OCR multilingue offre de bonnes performances dans plus de 40 langues. Pour la liste complète, consultez les langues prises en charge.
- Formats de documents incluent :
image_url: PNG, JPEG/JPG, AVIF et d’autres formats d’image.document_url: PDF, PPTX, DOCX et d’autres formats de documents.- Pour plus de formats pris en charge, consultez la FAQ.
Pour les détails de l’endpoint, consultez la référence de l’API OCR.
La mise en forme des tableaux ainsi que l’extraction des en-têtes et pieds de page ne sont disponibles que pour OCR 2512 ou versions ultérieures.
L’extraction des blocs via include_blocks n’est disponible que pour OCR 4 (mistral-ocr-4-0) ou versions ultérieures.
Le processeur OCR retourne le texte extrait, les boîtes englobantes des images et les métadonnées sur la structure du document.
OCR avec images et PDF
Traiter vos documents
Utilisez l’OCR avec des PDF et des images.
Pour les PDF, transmettez une URL publiquement accessible, un PDF encodé en Base64 ou un fichier PDF téléchargé.
Assurez-vous que l'URL est publique et accessible par notre API.
import os
from mistralai.client import Mistral
api_key = os.environ["MISTRAL_API_KEY"]
client = Mistral(api_key=api_key)
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "document_url",
"document_url": "https://arxiv.org/pdf/2201.04234"
},
table_format="html", # default is None
# extract_header=True, # default is False
# extract_footer=True, # default is False
include_image_base64=True
)La sortie est un objet JSON qui contient le texte extrait, les boîtes englobantes des images, les métadonnées et d’autres informations sur la structure du document.
{
"pages": [ # Le contenu de chaque page
{
"index": int, # L'index de la page correspondante
"markdown": str, # Le résultat principal et le contenu markdown brut
"images": list, # Informations sur les images lorsque celles-ci sont extraites
"tables": list, # Informations sur les tableaux lors de l'utilisation de `table_format=html` ou `table_format=markdown`
"hyperlinks": list, # Hyperliens détectés
"header": str|null, # Contenu de l'en-tête lors de l'utilisation de `extract_header=True`
"footer": str|null, # Contenu du pied de page lors de l'utilisation de `extract_footer=True`
"dimensions": dict, # Les dimensions de la page
"confidence_scores": dict|null, # Scores de confiance lorsque `confidence_scores_granularity` est défini (contient `average_page_confidence_score`, `minimum_page_confidence_score` et `word_confidence_scores` pour la granularité au niveau du mot)
"blocks": list|null # Boîtes englobantes au niveau des paragraphes avec étiquettes de blocs lors de l'utilisation de `include_blocks=True`
}
],
"model": str, # Le modèle utilisé pour l'OCR
"document_annotation": dict|null, # Informations d'annotation du document lorsqu'utilisées, consultez la documentation Annotations pour plus d'informations
"usage_info": dict # Informations d'utilisation
}Lorsque l’OCR extrait des images et des tableaux, la sortie Markdown utilise des balises de remplacement comme :
[tbl-3.html](tbl-3.html)
Utilisez les champs images et tables pour associer chaque balise de remplacement à l’image ou au tableau extrait.
Images
Pour les images, transmettez une URL d’image ou une image encodée en Base64.
Vous pouvez effectuer de l'OCR avec n'importe quelle image publique tant qu'une URL directe est disponible.
import os
from mistralai.client import Mistral
api_key = os.environ["MISTRAL_API_KEY"]
client = Mistral(api_key=api_key)
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "image_url",
"image_url": "https://raw.githubusercontent.com/mistralai/cookbook/refs/heads/main/mistral/ocr/receipt.png"
},
# table_format=None,
include_image_base64=True
)La sortie est un objet JSON qui contient le texte extrait, les boîtes englobantes des images, les métadonnées et d’autres informations sur la structure du document.
{
"pages": [ # Le contenu de chaque page
{
"index": int, # L'index de la page correspondante
"markdown": str, # Le résultat principal et le contenu markdown brut
"images": list, # Informations sur les images lorsque celles-ci sont extraites
"tables": list, # Informations sur les tableaux lors de l'utilisation de `table_format=html` ou `table_format=markdown`
"hyperlinks": list, # Hyperliens détectés
"header": str|null, # Contenu de l'en-tête lors de l'utilisation de `extract_header=True`
"footer": str|null, # Contenu du pied de page lors de l'utilisation de `extract_footer=True`
"dimensions": dict, # Les dimensions de la page
"confidence_scores": dict|null, # Scores de confiance lorsque `confidence_scores_granularity` est défini (contient `average_page_confidence_score`, `minimum_page_confidence_score` et `word_confidence_scores` pour la granularité au niveau du mot)
"blocks": list|null # Boîtes englobantes au niveau des paragraphes avec étiquettes de blocs lors de l'utilisation de `include_blocks=True`
}
],
"model": str, # Le modèle utilisé pour l'OCR
"document_annotation": dict|null, # Informations d'annotation du document lorsqu'utilisées, consultez la documentation Annotations pour plus d'informations
"usage_info": dict # Informations d'utilisation
}Lorsque l’OCR extrait des images et des tableaux, la sortie Markdown utilise des balises de remplacement comme :
[tbl-3.html](tbl-3.html)
Utilisez les champs images et tables pour associer chaque balise de remplacement à l’image ou au tableau extrait.
Extraction des blocs
Extraire les blocs structurels avec des boîtes englobantes
Définissez include_blocks=True pour recevoir un tableau blocks sur chaque page. Chaque bloc décrit une zone de contenu spécifique avec son libellé (type), les coordonnées de sa boîte englobante et le contenu extrait. Les blocs sont renvoyés dans l’ordre de lecture.
Chaque bloc inclut type, top_left_x, top_left_y, bottom_right_x, bottom_right_y et content.
Lorsque confidence_scores_granularity est défini sur "block", chaque bloc inclut aussi confidence_scores avec :
average_content_confidence_score: score de confiance moyen pour le contenu extrait du bloc.minimum_content_confidence_score: score de confiance le plus faible dans le contenu extrait du bloc.block_type_confidence_score: score de confiance pour le type de bloc détecté.
Les scores de confiance du contenu peuvent valoir null pour les blocs sans contenu textuel, comme les blocs d’image.
Types de blocs disponibles
| Type de bloc | Description |
|---|---|
text | Un paragraphe de texte principal. |
title | Un titre de document ou de section. |
list | Une liste à puces ou numérotée. |
table | Une zone de tableau. Lorsqu’un tableau est extrait, inclut un table_id référençant l’entrée correspondante dans tables. |
image | Une zone d’image. Inclut un image_id référençant l’entrée correspondante dans images. |
equation | Une équation mathématique. |
caption | Une légende associée à une figure ou un tableau. |
code | Un bloc de code. |
references | Une section de bibliographie ou de références. |
aside_text | Un encadré, une note latérale ou un bloc de texte marginal. |
header | L’en-tête de page. |
footer | Le pied de page. |
signature | Une zone de signature. Le champ content contient le nom transcrit lorsqu’il est lisible, sinon une chaîne vide. |
import os
from mistralai.client import Mistral
api_key = os.environ["MISTRAL_API_KEY"]
client = Mistral(api_key=api_key)
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "document_url",
"document_url": "https://arxiv.org/pdf/2201.04234"
},
include_blocks=True,
confidence_scores_granularity="block"
)L’extraction des blocs n’est disponible que pour OCR 4 (mistral-ocr-4-0) ou versions ultérieures. Les anciens modèles acceptent le paramètre mais renvoient un tableau vide.
Scores de confiance
Extraire les scores de confiance
Le processeur OCR peut renvoyer des scores de confiance pour le contenu extrait afin de vous aider à évaluer la qualité de la reconnaissance. Utilisez le paramètre confidence_scores_granularity pour contrôler le niveau de détail :
| Valeur | Description |
|---|---|
"page" | Renvoie un objet confidence_scores sur chaque page avec des statistiques agrégées (average_page_confidence_score, minimum_page_confidence_score). |
"block" | Renvoie tout ce que renvoie "page", plus confidence_scores sur chaque bloc lorsque include_blocks est défini sur true. |
"word" | Renvoie tout ce que renvoie "page", plus un tableau word_confidence_scores avec les valeurs de confiance par mot sur chaque page et chaque entrée de tableau. |
import os
from mistralai.client import Mistral
api_key = os.environ["MISTRAL_API_KEY"]
client = Mistral(api_key=api_key)
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "document_url",
"document_url": "https://arxiv.org/pdf/2201.04234"
},
confidence_scores_granularity="word" # Use "block" with include_blocks=True
)OCR à grande échelle
Pour les charges OCR à volume élevé, utilisez le service d’inférence par lots pour traiter les documents en parallèle. Pour les sorties structurées, utilisez les Annotations.
Cookbooks
Pour plus d’exemples OCR, consultez ces cookbooks :
