Aller au contenu principal

Analyser une image avec Grok

La vision par ordinateur avec l’API Grok

Les modèles Grok avec support vision peuvent analyser des images en plus du texte. Vous envoyez une image (par URL ou en base64) accompagnée d’une question, et le modèle décrit, analyse ou extrait des informations visuelles. Cette capacité ouvre des possibilités concrètes : extraction de données depuis des captures d’écran, analyse de graphiques, lecture de documents scannés.

Format d’entrée image

Pour envoyer une image, vous utilisez un tableau de contenus mixtes (texte et image) dans le champ input :

[
  {
    "type": "input_image",
    "image_url": "https://exemple.com/mon-image.jpg"
  },
  {
    "type": "input_text",
    "text": "Que voyez-vous sur cette image ?"
  }
]

Le type input_image accepte une URL publique vers l’image. Le type input_text contient votre question ou instruction.

Exemple en Python

from openai import OpenAI
import os

client = OpenAI(
    api_key=os.getenv("XAI_API_KEY"),
    base_url="https://api.x.ai/v1"
)

response = client.responses.create(
    model="grok-4",
    input=[
        {
            "type": "input_image",
            "image_url": "https://exemple.com/graphique-ventes.png"
        },
        {
            "type": "input_text",
            "text": "Analysez ce graphique. Quelle est la tendance principale ?"
        }
    ]
)

print(response.output[0].content[0].text)

Avec le format chat/completions

Si vous utilisez l’endpoint legacy /v1/chat/completions, le format est légèrement différent :

response = client.chat.completions.create(
    model="grok-4",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {"url": "https://exemple.com/photo.jpg"}
                },
                {
                    "type": "text",
                    "text": "Décrivez cette image en détail."
                }
            ]
        }
    ]
)

Différence de format

EndpointType imageType texte
/v1/responsesinput_imageinput_text
/v1/chat/completionsimage_urltext

Envoyer une image en base64

Si votre image n’est pas accessible par URL (fichier local, image générée), encodez-la en base64 :

import base64

with open("capture.png", "rb") as f:
    image_base64 = base64.b64encode(f.read()).decode("utf-8")

response = client.responses.create(
    model="grok-4",
    input=[
        {
            "type": "input_image",
            "image_url": f"data:image/png;base64,{image_base64}"
        },
        {
            "type": "input_text",
            "text": "Lisez le texte présent dans cette capture d'écran."
        }
    ]
)

Cas d’usage concrets

Extraction de données

Envoyez une photo de facture ou de reçu et demandez au modèle d’extraire les montants, dates et références.

Analyse de graphiques

Soumettez un graphique ou un diagramme et demandez une interprétation des tendances et des données clés.

Assistance au code

Partagez une capture d’écran d’une erreur dans votre IDE et demandez une explication et une solution.

Description d’interface

Envoyez une maquette ou une capture d’écran et demandez au modèle de décrire les éléments d’interface présents.

Modèles compatibles vision

Tous les modèles Grok ne supportent pas la vision. Utilisez grok-4 qui inclut le support des images. Les modèles de type « mini » ou « fast » peuvent avoir un support limité ou absent.

Points clés à retenir

  • Utilisez le type input_image avec l’endpoint /v1/responses pour envoyer des images
  • Les images peuvent être envoyées par URL publique ou encodées en base64
  • Le modèle grok-4 supporte l’analyse d’images
  • Combinez image et texte dans un tableau pour poser des questions sur le contenu visuel