L'API OCR de Mistral
L’endpoint OCR
L’API OCR de Mistral est accessible via l’endpoint /v1/ocr ou via le SDK Python avec client.ocr.process(). C’est le point d’entrée unique pour toutes les opérations d’extraction documentaire.
Installation et configuration
Commencez par installer le SDK Mistral :
pip install mistralai
Configurez votre client avec votre clé API :
from mistralai import Mistral
client = Mistral(api_key="votre-cle-api")
Vous pouvez également définir la clé via une variable d’environnement :
export MISTRAL_API_KEY="votre-cle-api"
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
Paramètres de l’appel OCR
Voici les paramètres disponibles pour client.ocr.process() :
Paramètres obligatoires
model: toujours"mistral-ocr-latest"document: le document à traiter (URL, base64 ou fichier uploadé)
Paramètres optionnels
table_format: format des tableaux (null,"markdown","html")include_image_base64:Truepour recevoir les images en base64bbox_annotation_format: schéma d’annotation des bounding boxesdocument_annotation_format: schéma d’annotation du document entierdocument_annotation_prompt: instructions haut niveau pour l’annotation
Trois méthodes d’envoi de documents
1. URL publique
La méthode la plus simple pour les documents accessibles en ligne :
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "document_url",
"document_url": "https://exemple.com/document.pdf"
}
)
2. Encodage base64
Pour les documents locaux, encodez-les en base64 :
import base64
with open("mon_document.pdf", "rb") as f:
document_base64 = base64.b64encode(f.read()).decode("utf-8")
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "document_base64",
"document_base64": document_base64
}
)
3. Upload via l’API Files
Pour les documents volumineux ou réutilisés :
# Upload du fichier
uploaded_file = client.files.upload(
file=open("mon_document.pdf", "rb"),
purpose="ocr"
)
# Utilisation du fichier uploadé
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "file_id",
"file_id": uploaded_file.id
}
)
Structure de la réponse
La réponse contient une liste de pages, chacune avec :
for page in ocr_response.pages:
print(f"Page {page.index}")
print(f"Contenu : {page.markdown[:200]}...")
print(f"Images : {len(page.images)} trouvée(s)")
print(f"En-tête : {page.header}")
print(f"Pied de page : {page.footer}")
print(f"Dimensions : {page.dimensions}")
Limites de l’API
Gardez en tête les contraintes suivantes :
- Taille maximale : 50 Mo par fichier
- Pages maximales : 1 000 pages par document
- Formats acceptés : PDF, PNG, JPEG, AVIF, PPTX, DOCX
- Rate limiting : dépend de votre tier d’abonnement
Gestion des erreurs
Pensez à gérer les erreurs courantes :
from mistralai import Mistral
from mistralai.exceptions import MistralAPIError
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
try:
ocr_response = client.ocr.process(
model="mistral-ocr-latest",
document={
"type": "document_url",
"document_url": "https://exemple.com/document.pdf"
}
)
except MistralAPIError as e:
print(f"Erreur API : {e.status_code} - {e.message}")
except Exception as e:
print(f"Erreur inattendue : {e}")
Points clés à retenir
- L’endpoint OCR est
client.ocr.process()avec le modèlemistral-ocr-latest - Trois méthodes d’envoi : URL publique, base64, fichier uploadé
- Les paramètres optionnels contrôlent le format des tableaux et l’inclusion des images
- La réponse est structurée page par page avec Markdown, images et métadonnées
- Respectez les limites de 50 Mo et 1 000 pages par document