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.
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?']]
);
Résultat :
{
"error": null,
"response": {
"address": "12/12/2023",
"seller_name": "Paul Doyle"
}
}
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?']]
);
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"
}
}
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?']]
);
Résultat :
{
"error": null,
"response": {
"signature": "no"
}
}
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'
}
}
}
}
);
Résultat :
{
"error": null,
"response": {
"buyer_list": [
"John Davis",
"Jane Davis"
]
}
}
Extraire des informations sur la table¶
Cet exemple extrait les données tabulaires du document suivant.
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'
}
}
}
}
}
);
{
"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"
]
}
}
}
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 |
|
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 |
|---|---|
|
Une erreur système s’est produite. Attendez et réessayez. Si le problème persiste, contactez le service d’assistance de Snowflake. |
|
Le fichier n’a pas été trouvé. |
|
Le fichier n’a pas été trouvé. |
|
L’utilisateur actuel ne dispose pas de privilèges suffisants pour accéder au fichier. |
|
Le document n’est pas dans un format pris en charge. |
|
Le document n’est pas stocké dans une zone de préparation avec chiffrement côté serveur. |
|
Aucun paramètre n’a été fourni. |
|
Aucun format de réponse n’a été fourni. |
|
Le format de réponse n’est pas un JSON valide. |
|
Le format de réponse contient un ou plusieurs noms de fonctionnalités en double. |
|
Le nombre de questions dépasse la limite autorisée. |
|
Le document dépasse la limite de 125 pages. |
|
L’image saisie ou la page du document converti dépasse les dimensions prises en charge. |
|
La page dépasse les dimensions prises en charge. |
|
Le document dépasse 100 MB. |
Avis juridiques¶
La classification des données d’entrées et de sorties est présentée dans la table suivante.
Classification des données d’entrée |
Classification des données de sortie |
Désignation |
|---|---|---|
Usage Data |
Customer Data |
Les fonctions généralement disponibles sont des fonctions AI couvertes. Les fonctions d’aperçu sont les fonctions AI d’aperçu. [1] |
Pour plus d’informations, reportez-vous à Snowflake AI et ML.