Extractions d’informations de documents avec AI_EXTRACT

AI_EXTRACT est une fonction Cortex AI qui vous permet d’extraire des informations structurées, telles que des entités, des listes et des tables, à partir de fichiers texte ou de documents, en posant des questions en langage naturel ou en décrivant les informations à extraire. Elle peut être utilisée avec d’autres fonctions pour créer des pipelines de traitement de documents personnalisés pour de nombreux cas d’utilisation (voir Fonctions Cortex AI : Documents).

AI_EXTRACT peut traiter des documents de différents formats (dans 29 langues) et extraire des informations à la fois des paragraphes avec beaucoup de texte et du contenu sous une forme graphique, comme des logos, du texte écrit (par exemple, des signatures), des tables ou des marques de contrôle). AI_EXTRACT peut extraire des informations dans les formats structurés suivants :

  • Entité : Posez des questions en langage naturel ou décrivez les informations à extraire (comme la ville, la route ou le code ZIP).

  • Liste (ou tableau) : Vous pouvez fournir un schéma JSON pour extraire un tableau ou une liste d’informations présentes dans le document, telles que le nom de tous les titulaires de comptes dans un relevé bancaire ou une liste de toutes les adresses dans un document.

  • Table : Fournissez un schéma JSON pour extraire les données tabulaires présentes dans le document en spécifiant le titre de la table et une liste des colonnes à extraire.

AI_EXTRACT s’adapte automatiquement à votre charge de travail en traitant plusieurs documents simultanément. Les documents peuvent être traités directement à partir du stockage d’objets pour éviter les mouvements de données inutiles.

Note

AI_EXTRACT est actuellement incompatible avec les politiques de réseau personnalisées.

Qualité de l’extraction

AI_EXTRACT utilise arctic-extract, un grand modèle de langage (LLM) propriétaire basé sur une vue qui offre une grande précision d’extraction. Le tableau suivant présente les scores du modèle sur différents benchmarks standard, avec les scores d’autres modèles populaires à des fins de comparaison :

Réponse visuelle aux questions (VQA)

Offre

Score DocVQA

Évaluation humaine

0.9811

Extrait de Snowflake Arctic-Extraction

0.9433

Azure OpenAI GPT-o3

0.9339

Google Gemini 2.5-Pro

0.9316

Google Anthropic Claude 4 Sonnet

0.9119

Azure Document Intelligence + GPT-o3

0.8853

Google Document AI + Gemini

0.8497

Azure OpenAI GPT-o3

0.9339

AWS Textract

0.8313

Réponse aux questions en texte seul (SQuAD v2)

Offre

ANLS

Correspondance exacte

Extrait de Snowflake Arctic-Extraction

81.18

78.74

Anthropic Claude 4 Sonnet

80.54

77.10

Meta LLaMA 3.1 405B

80.37

76.56

Meta LLaMA 4 Scout

74.30

70.70

OpenAI GPT 4.1

70.71

66.81

Meta LLaMA 3.1 8B

59.13

54.48

Exemples

Ces exemples utilisent l’image suivante comme document d’entrée. Le document est stocké dans une zone de préparation.

Accord d'achat et de vente de copropriété

Extraction d’une entité

Extrait le nom du vendeur et la date d’expiration de l’offre du contrat de vente.

SELECT AI_EXTRACT(
  file => TO_FILE('@db.schema.stage','document.pdf'),
  responseFormat => [['seller_name', 'What is the seller name?'], ['address', 'What is the offer expiration date?']]
);
Copy

Résultat :

{
    "error": null,
    "response": {
        "address": "12/12/2023",
        "seller_name": "Paul Doyle"
    }
}
Copy

Extraction des informations relatives aux cases à cocher

Cet exemple extrait des informations sur les éléments qui ne sont pas inclus, en fonction des cases à cocher marquées dans le document.

SELECT AI_EXTRACT(
  file => TO_FILE('@db.schema.stage','document.pdf'),
  responseFormat => [['flat_items', 'What items are not included with the flat?'], ['default', 'What Default is selected?']]
);
Copy

Résultat :

{
    "error": null,
    "response": {
        "default": "Forfeiture of Earnest Money",
        "flat_items": "dryer, security system, satellite dish, wood stove, fireplace insert, hot tub, attached speaker(s), generator, other"
    }
}
Copy

Extraction de l’état de la signature

Cet exemple permet d’extraire des informations sur la signature de l’accord.

SELECT AI_EXTRACT(
    file => TO_FILE('@db.schema.stage','document.pdf'),
    responseFormat => [['signature', 'Is this document signed?']]
);
Copy

Résultat :

{
  "error": null,
    "response": {
        "signature": "no"
    }
}
Copy

Extraction d’une liste d’entités

Cet exemple extrait une liste de noms d’acheteurs.

SELECT AI_EXTRACT(
    file => TO_FILE('@db.schema.files', 'report.pdf'),
    responseFormat => {
        'schema': {
        'type': 'object',
        'properties': {
            'buyer_list': {
            'description': 'What are the buyer names?',
            'type': 'array'
            }
        }
        }
    }
);
Copy

Résultat :

{
    "error": null,
    "response": {
        "buyer_list": [
        "John Davis",
        "Jane Davis"
        ]
    }
}
Copy

Extraire des informations sur la table

Cet exemple extrait les données tabulaires du document suivant.

Tests de causalité de Granger - Valeurs P
SELECT AI_EXTRACT(
    file => TO_FILE('@db.schema.files', 'report.pdf'),
    responseFormat => {
        'schema': {
            'type': 'object',
            'properties': {
                'income_table': {
                'description': 'Table 2: Granger Causality Tests - P-values',
                'type': 'object',
                'column_ordering': ['description', 'countries','lags','z','z_approx'],
                'properties': {
                    'description': {
                        'description': 'Description',
                        'type': 'array'
                        },
                    'countries': {
                        'description': 'Countries',
                        'type': 'array'
                        },
                    'lags': {
                        'description': 'Lags',
                        'type': 'array'
                        },
                    'z': {
                        'description': 'Z',
                        'type': 'array'
                    },
                    'z_approx': {
                        'description': 'Z approx.',
                        'type': 'array'
                    }
                }
            }
        }
    }
);
Copy
{
    "error": null,
    "response": {
        "income_table": {
            "countries": [
                "33","80","29","84","34"
            ],
            "description": [
                "Commodity exporters",
                "Non-commodity exporters",
                "AE",
                "EMDE",
                "Large or market-dominant countries"
            ],
            "lags": [
                "2","1","1","1","1"
            ],
            "z": [
                "0.11","0.08","0.89","0.12","0.07"
            ],
            "z_approx": [
                "0.25","0.19","0.95","0.25","0.14"
            ]
        }
    }
}
Copy

Exigences en matière d’entrées

AI_EXTRACT est optimisé pour les documents numériques et numérisés. La table suivante répertorie les limitations et les exigences relatives aux documents d’entrée :

Taille maximale du fichier

100 MB

Nombre maximal de pages par document

125

Nombre de questions maximum

  • 100 questions pour l’extraction d’entités (simple ou liste)

  • 10 questions pour l’extraction de table

Types de fichiers pris en charge

PDF, PPT, PPTX, DOCX, EML, DOC, DOCX, HTM, HTML, TEXT, MD, TXT, BMP, JPEG, JPG, PNG, TIFF, TIF, WEBP

Chiffrement de la zone de préparation

Chiffrement côté serveur

Exigences en matière de contrôle d’accès

Pour utiliser la fonction AI_EXTRACT, un utilisateur ayant un rôle ACCOUNTADMIN doit accorder le rôle de base de données SNOWFLAKE.CORTEX_USER à l’utilisateur qui appellera la fonction. Consultez la rubrique Cortex LLM privileges pour plus de détails.

Considérations relatives aux clients

La fonction Cortex AI_EXTRACT entraîne des coûts de calcul basés sur le nombre de pages par document, de jetons d’invite d’entrée et de jetons de sortie traités.

  • Pour les formats de fichiers paginés (PDF, DOCX, TIF, TIFF), chaque page est comptée comme 970 jetons.

  • Pour les formats de fichier image (JPEG, JPG, PNG), chaque fichier image individuel est facturé comme une page et compté comme 970 jetons

Snowflake recommande d’exécuter les requêtes qui font appel à la fonction Cortex AI_EXTRACT dans un entrepôt plus petit (pas plus grand que MEDIUM). Des entrepôts plus grands n’augmentent pas les performances.

Langues acceptées

AI_EXTRACT prend en charge les langues suivantes :

  • Arabe

  • Bengali

  • Birman

  • Cebuano

  • Chinois

  • Tchèque

  • Néerlandais

  • Anglais

  • Français

  • Allemand

  • Hébreu

  • Hindi

  • Indonésien

  • Italien

  • Japonais

  • Khmer

  • Coréen

  • Lao

  • Malais

  • Persan

  • Polonais

  • Portugais

  • Russe

  • Espagnol

  • Tagalog

  • Thaïlandais

  • Turc

  • Ourdou

  • Vietnamien

Disponibilité régionale

La prise en charge de AI_EXTRACT est disponible pour les comptes dans les régions Snowflake suivantes :

AWS

Azure

US West 2

US Est 2

US East 1

Ouest US 2

US CA Central 1

South Central US

Europe Centrale 1

Europe du Nord

Europe Ouest 1

Europe de l’Ouest

SA Est 1

Inde centrale

AP Nord-Est 1

Japon Est

AP Sud-Est 2

Asie du Sud-Est Australie orientale

AI_EXTRACT dispose d’une prise en charge interrégionale. pour plus d’informations sur l’activation de la prose en charge interrégionale de cortex AI, consultez Inférence interrégionale.

Conditions d’erreur

Snowflake Cortex AI_EXTRACT peut produire les messages d’erreur suivants.

Message

Explication

Internal error.

Une erreur système s’est produite. Attendez et réessayez. Si le problème persiste, contactez le service d’assistance de Snowflake.

Not found.

Le fichier n’a pas été trouvé.

Provided file cannot be found.

Le fichier n’a pas été trouvé.

Provided file cannot be accessed.

L’utilisateur actuel ne dispose pas de privilèges suffisants pour accéder au fichier.

The provided file format {fil_extension} isn't supported.

Le document n’est pas dans un format pris en charge.

The provided file isn't in the expected format or is client-side encrypted or is corrupted.

Le document n’est pas stocké dans une zone de préparation avec chiffrement côté serveur.

Empty request.

Aucun paramètre n’a été fourni.

Missing or empty response format.

Aucun format de réponse n’a été fourni.

Invalid response format.

Le format de réponse n’est pas un JSON valide.

Duplicate feature name found: {feature_name}.

Le format de réponse contient un ou plusieurs noms de fonctionnalités en double.

Too many questions: {number} complex and {number} simple = {number} total, complex question weight {number}.

Le nombre de questions dépasse la limite autorisée.

Maximum number of 125 pages exceeded. The document has {actual_pages} pages.

Le document dépasse la limite de 125 pages.

Page size in pixels exceeds 10000x10000. The page size is {actual_px} pixels.

L’image saisie ou la page du document converti dépasse les dimensions prises en charge.

Page size in inches exceeds 50x50 (3600x3600 pt). The page size is {actual_in} inches ({actual_pt} pt).

La page dépasse les dimensions prises en charge.

Maximum file size of 104857600 bytes exceeded. The file size is {actual_size} bytes.

Le document dépasse 100 MB.