Aller au contenu principal

Graphiques et diagrammes

Analyser des données visuelles

Grok analyse un graphique financier Les graphiques, diagrammes et tableaux sont omniprésents dans le monde professionnel : rapports financiers, dashboards, présentations, publications scientifiques. La vision Grok vous permet d’extraire automatiquement les données et les insights contenus dans ces visuels.

Pourquoi c’est différent de l’OCR

L’analyse de graphiques va bien au-delà de la simple extraction de texte. Le modèle doit :

  • Identifier le type de graphique (barres, lignes, camembert, scatter plot, etc.)
  • Lire les axes et leurs échelles
  • Extraire les valeurs des données
  • Comprendre les légendes et les associer aux séries de données
  • Interpréter les tendances et les patterns

Analyse d’un graphique simple

def analyser_graphique(image_url):
    prompt = """Analyse ce graphique et fournis :

1. Type de graphique (barres, lignes, camembert, etc.)
2. Titre du graphique (si visible)
3. Labels des axes X et Y
4. Données extraites sous forme de tableau
5. Tendance principale observée
6. Toute annotation ou point notable

Présente les données dans un tableau markdown."""

    response = client.responses.create(
        model="grok-4",
        input=[
            {"type": "input_image", "image_url": image_url, "detail": "high"},
            {"type": "input_text", "text": prompt}
        ],
        store=False
    )
    return response.output_text

Le mode detail: "high" est indispensable pour lire les valeurs précises sur les axes et les légendes.

Extraction de données tabulaires

Pour obtenir des données directement exploitables par votre code :

def extraire_donnees_graphique(image_url):
    prompt = """Extrais les données de ce graphique en JSON.
Format attendu :
{
  "type": "bar|line|pie|scatter",
  "titre": "...",
  "axe_x": {"label": "...", "valeurs": [...]},
  "axe_y": {"label": "...", "unite": "..."},
  "series": [
    {
      "nom": "Série 1",
      "valeurs": [10, 20, 30, ...]
    }
  ]
}

Estime les valeurs numériques aussi précisément que possible
en vous basant sur la position des points/barres par rapport
aux graduations."""

    response = client.responses.create(
        model="grok-4",
        input=[
            {"type": "input_image", "image_url": image_url, "detail": "high"},
            {"type": "input_text", "text": prompt}
        ],
        store=False
    )
    return response.output_text

Analyse de diagrammes techniques

Les diagrammes d’architecture, les organigrammes et les schémas de flux sont également bien compris par Grok :

def analyser_diagramme(image_url):
    prompt = """Analyse ce diagramme technique et décris :

1. Le type de diagramme (architecture, flux, organigramme, UML, etc.)
2. Les composants/entités principaux
3. Les connexions et relations entre composants
4. Le flux de données ou de processus (si applicable)
5. Les technologies ou outils mentionnés

Si c'est un diagramme de flux, décris le chemin principal
de bout en bout."""

    response = client.responses.create(
        model="grok-4",
        input=[
            {"type": "input_image", "image_url": image_url, "detail": "high"},
            {"type": "input_text", "text": prompt}
        ],
        store=False
    )
    return response.output_text

Comparaison de graphiques

Vous pouvez envoyer plusieurs graphiques dans la même requête pour une analyse comparative :

def comparer_graphiques(url_graphique_1, url_graphique_2):
    prompt = """Compare ces deux graphiques et identifie :

1. Les points communs (variables mesurées, période, etc.)
2. Les différences de tendance
3. Les écarts significatifs
4. Une synthèse en 3-4 phrases"""

    response = client.responses.create(
        model="grok-4",
        input=[
            {"type": "input_text", "text": "Graphique 1 :"},
            {"type": "input_image", "image_url": url_graphique_1, "detail": "high"},
            {"type": "input_text", "text": "Graphique 2 :"},
            {"type": "input_image", "image_url": url_graphique_2, "detail": "high"},
            {"type": "input_text", "text": prompt}
        ],
        store=False
    )
    return response.output_text

Cas d’usage professionnel : rapports automatisés

Imaginez un pipeline qui transforme les captures de dashboards en rapports textuels :

def generer_rapport_dashboard(screenshots):
    rapport_sections = []

    for i, screenshot in enumerate(screenshots, 1):
        prompt = f"""Tu es un analyste business. Cette capture d'écran
est la section {i} d'un dashboard. Analyse les métriques affichées
et rédige un paragraphe de synthèse professionnel.

Inclus :
- Les KPI principaux et leurs valeurs
- Les tendances (hausse, baisse, stabilité)
- Les alertes ou anomalies visibles
- Une recommandation si pertinent"""

        response = client.responses.create(
            model="grok-4",
            input=[
                {"type": "input_image", "image_url": screenshot, "detail": "high"},
                {"type": "input_text", "text": prompt}
            ],
            store=False
        )
        rapport_sections.append(response.output_text)

    return "\n\n".join(rapport_sections)

Limites de l’analyse graphique

  • Précision des valeurs : Grok estime les valeurs en se basant sur la position visuelle. Pour des valeurs exactes, préférez les données sources
  • Graphiques 3D : les représentations en perspective compliquent la lecture des valeurs
  • Graphiques superposés : quand plusieurs séries se chevauchent, la distinction peut être difficile
  • Petites légendes : les légendes en très petit texte peuvent être mal lues même en mode high

Points clés à retenir

  • Grok analyse les graphiques en comprenant le contexte, pas seulement le texte
  • Utilisez detail: "high" pour une lecture précise des valeurs et légendes
  • Demandez un format structuré (JSON, tableau markdown) pour exploiter les données
  • La comparaison multi-images fonctionne bien pour les analyses croisées
  • Les valeurs extraites sont des estimations visuelles, pas des données exactes