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.

Graphique OCR de base
Avant de commencer

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, markdown et html via le paramètre table_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_header et extract_footer. Lorsque vous les utilisez, la réponse inclut le contenu des en-têtes et pieds de page dans les champs header et footer. 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 tableau blocks avec 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.

i
Information

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

OCR avec images et PDF

Traiter vos documents

Utilisez l’OCR avec des PDF et des images.

PDF

PDF

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
}
Note

Lorsque l’OCR extrait des images et des tableaux, la sortie Markdown utilise des balises de remplacement comme :

  • ![img-0.jpeg](img-0.jpeg)
  • [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

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
}
Note

Lorsque l’OCR extrait des images et des tableaux, la sortie Markdown utilise des balises de remplacement comme :

  • ![img-0.jpeg](img-0.jpeg)
  • [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

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 blocDescription
textUn paragraphe de texte principal.
titleUn titre de document ou de section.
listUne liste à puces ou numérotée.
tableUne zone de tableau. Lorsqu’un tableau est extrait, inclut un table_id référençant l’entrée correspondante dans tables.
imageUne zone d’image. Inclut un image_id référençant l’entrée correspondante dans images.
equationUne équation mathématique.
captionUne légende associée à une figure ou un tableau.
codeUn bloc de code.
referencesUne section de bibliographie ou de références.
aside_textUn encadré, une note latérale ou un bloc de texte marginal.
headerL’en-tête de page.
footerLe pied de page.
signatureUne 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"
)
i
Information

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

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 :

ValeurDescription
"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

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

Cookbooks

Pour plus d’exemples OCR, consultez ces cookbooks :

FAQ

FAQ