Document AI - Processeur OCR

L'API Mistral Document AI intègre un processeur OCR (reconnaissance optique de caractères), propulsé par notre dernier modèle OCR mistral-ocr-latest, qui vous permet d'extraire du texte et du contenu structuré à partir de documents PDF.

Graphique OCR de base
Avant de commencer

Avant de commencer

Fonctionnalités principales

  • Extrait le texte du contenu tout en préservant la structure et la hiérarchie du document.
  • Préserve la mise en forme comme les en-têtes, paragraphes, listes et tableaux.
    • Le formatage des tableaux peut basculer entre null, markdown et html via le paramètre table_format.
      • null : les tableaux sont retournés en ligne sous forme de markdown dans la page extraite.
      • markdown : les tableaux sont retournés séparément sous forme de tableaux markdown.
      • html : les tableaux sont retournés séparément sous forme de tableaux html.
  • Option pour extraire les en-têtes et pieds de page via les paramètres extract_header et extract_footer. Lorsqu'ils sont utilisés, le contenu des en-têtes et pieds de page sera fourni dans les champs header et footer. Par défaut, les en-têtes et pieds de page sont considérés comme faisant partie du contenu principal.
  • Retourne les résultats au format markdown pour une analyse et un rendu faciles.
  • Gère les mises en page complexes incluant le texte en plusieurs colonnes et le contenu mixte, et retourne les hyperliens lorsqu'ils sont disponibles.
  • Fournit des scores de confiance pour le contenu extrait au niveau du mot ou de la page via le paramètre confidence_scores_granularity.
  • Traite les documents à grande échelle avec une grande précision.
  • Multilingue : performances élevées en anglais, allemand, français, russe, espagnol, néerlandais, italien, portugais, chinois, hongrois, coréen, turc, polonais, suédois, japonais, tchèque, danois, roumain, hébreu, tagalog, vietnamien, arabe, hindi, indonésien, marathi, norvégien, arménien, thaï, géorgien, gujarati, tamoul, bengali, persan, grec, finnois, ukrainien, télougou, népalais, pendjabi, kannada, catalan, serbe, et bien d’autres langues. Cette liste n’est pas exhaustive : le modèle peut également offrir de bonnes performances dans d’autres langues.
  • Prend en charge plusieurs formats de documents, notamment :
    • image_url : png, jpeg/jpg, avif et plus encore...
    • document_url : pdf, pptx, docx et plus encore...
    • Pour une liste plus complète (non exhaustive), consultez notre FAQ.

Découvrez-en plus sur notre API ici.

i
Information

Le formatage des tableaux ainsi que l'extraction des en-têtes et pieds de page ne sont disponibles qu'avec OCR 2512 ou versions ultérieures.

Le processeur OCR retourne le contenu textuel extrait, les bboxes des images et les métadonnées concernant la structure du document, facilitant ainsi le travail programmatique avec le contenu reconnu.

OCR avec images et PDF

OCR avec images et PDF

OCR de vos documents

Nous proposons différentes méthodes pour effectuer l'OCR de vos documents. Vous pouvez traiter un PDF ou une image.

PDF

PDF

Parmi les méthodes PDF, vous pouvez utiliser une URL publiquement accessible, un PDF encodé en base64 ou télécharger un PDF dans notre Cloud.

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
)

Le résultat sera un objet JSON contenant le contenu textuel extrait, les bboxes des images, les métadonnées et d'autres informations sur la structure du document.

{
  "pages": [ # The content of each page
    {
      "index": int, # The index of the corresponding page
      "markdown": str, # The main output and raw markdown content
      "images": list, # Image information when images are extracted
      "tables": list, # Table information when using `table_format=html` or `table_format=markdown`
      "hyperlinks": list, # Hyperlinks detected
      "header": str|null, # Header content when using `extract_header=True`
      "footer": str|null, # Footer content when using `extract_footer=True`
      "dimensions": dict, # The dimensions of the page
      "confidence_scores": dict|null # Confidence scores when `confidence_scores_granularity` is set (contains `average_page_confidence_score`, `minimum_page_confidence_score`, and `word_confidence_scores` for word granularity)
    }
  ],
  "model": str, # The model used for the OCR
  "document_annotation": dict|null, # Document annotation information when used, visit the Annotations documentation for more information
  "usage_info": dict # Usage information
}
Note

Lors de l'extraction d'images et de tableaux, ceux-ci seront remplacés par des balises de remplacement, telles que :

  • ![img-0.jpeg](img-0.jpeg)
  • [tbl-3.html](tbl-3.html)

Vous pouvez les associer aux images et tableaux réels en utilisant les champs images et tables.

Images

Images

Pour effectuer l'OCR sur une image, vous pouvez soit transmettre une URL vers l'image, soit utiliser directement 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
)

Le résultat sera un objet JSON contenant le contenu textuel extrait, les bboxes des images, les métadonnées et d'autres informations sur la structure du document.

{
  "pages": [ # The content of each page
    {
      "index": int, # The index of the corresponding page
      "markdown": str, # The main output and raw markdown content
      "images": list, # Image information when images are extracted
      "tables": list, # Table information when using `table_format=html` or `table_format=markdown`
      "hyperlinks": list, # Hyperlinks detected
      "header": str|null, # Header content when using `extract_header=True`
      "footer": str|null, # Footer content when using `extract_footer=True`
      "dimensions": dict, # The dimensions of the page
      "confidence_scores": dict|null # Confidence scores when `confidence_scores_granularity` is set (contains `average_page_confidence_score`, `minimum_page_confidence_score`, and `word_confidence_scores` for word granularity)
    }
  ],
  "model": str, # The model used for the OCR
  "document_annotation": dict|null, # Document annotation information when used, visit the Annotations documentation for more information
  "usage_info": dict # Usage information
}
Note

Lors de l'extraction d'images et de tableaux, ceux-ci seront remplacés par des balises de remplacement, telles que :

  • ![img-0.jpeg](img-0.jpeg)
  • [tbl-3.html](tbl-3.html)

Vous pouvez les associer aux images et tableaux réels en utilisant les champs images et tables.

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).
"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"  # or "page" for aggregate only
)
OCR à grande échelle

OCR à grande échelle

Lorsque vous effectuez de l'OCR à grande échelle, nous recommandons d'utiliser notre service d'inférence par lots, qui vous permet de traiter de grandes quantités de documents en parallèle tout en étant plus économique que l'utilisation directe de l'API OCR. Nous prenons également en charge les Annotations pour les sorties structurées et d'autres fonctionnalités.

Cookbooks

Cookbooks

Pour plus d'informations et de guides sur l'utilisation de l'OCR, nous avons les cookbooks suivants :

FAQ

FAQ