Extrahieren von Informationen aus Dokumenten mit AI_EXTRACT

AI_EXTRACT ist eine Cortex AI-Funktion, mit der Sie strukturierte Informationen, wie Entitäten, Listen und Tabellen, aus Text- oder Dokumentdateien extrahieren können, indem Sie Fragen in natürlicher Sprache stellen oder die zu extrahierenden Informationen beschreiben. Es kann zusammen mit anderen Funktionen verwendet werden, um kundenspezifische Dokumentenverarbeitungspipelines für eine Vielzahl von Anwendungsfällen zu erstellen (siehe Cortex AI-Funktionen: Dokumente).

AI_EXTRACT kann Dokumente verschiedener Formate (in 29 Sprachen) verarbeiten und Informationen sowohl aus textlastigen Absätzen als auch aus Inhalten in grafischer Form extrahieren, wie z. B. Logos, handschriftlicher Text (z. B. Signaturen), Tabellen oder Häkchen. AI_EXTRACT kann Informationen in den folgenden strukturierten Formaten extrahieren:

  • Entität: Stellen Sie Fragen in natürlicher Sprache, oder beschreiben Sie die zu extrahierenden Informationen (z. B. Stadt, Straße oder ZIP-Code).

  • Liste (oder Array): Sie können ein JSON-Schema bereitstellen, um ein Array oder eine Liste der im Dokument enthaltenen Informationen zu extrahieren, z. B. die Namen aller Kontoinhaber in einem Kontoauszug oder eine Liste aller Adressen in einem Dokument.

  • Tabelle: Geben Sie ein JSON-Schema an, um tabellarische Daten im Dokument zu extrahieren, indem der Tabellentitel und eine Liste der Spalten angegeben werden, die extrahiert werden sollen.

AI_EXTRACT wird automatisch mit Ihrem Workload skaliert, indem es mehrere Dokumente gleichzeitig verarbeitet. Dokumente können direkt aus dem Objektspeicher verarbeitet werden, um unnötige Datenbewegungen zu vermeiden.

Bemerkung

AI_EXTRACT ist derzeit nicht mit den benutzerdefinierten von Netzwerkrichtlinien kompatibel.

Qualität der Extraktion

AI_EXTRACT verwendet arctic-extract, ein proprietäres, visionsbasiertes großes Sprachmodell (LLM), das eine hohe Extraktionsgenauigkeit liefert. Die folgende Tabelle zeigt die Ergebnisse des Modells bei verschiedenen Standard-Benchmarks mit den Ergebnissen anderer beliebter Modelle zum Vergleich:

Visuelle Beantwortung von Fragen (VQA)

Angebot

DocVQA-Punktzahl

Bewertung durch Menschen

0.9811

Snowflake Arctic-Extract

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

Beantworten von Fragen mit Nur-Text (SQuAD v2)

Angebot

ANLS

Genaue Übereinstimmung

Snowflake Arctic-Extract

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

Beispiele

In diesen Beispielen wird die folgende Abbildung als Eingabedokument verwendet. Das Dokument ist in einem Stagingbereich gespeichert.

Vereinbarung über den Kauf und Verkauf von Eigentumsobjekten

Extrahieren einer Entität

Extrahiert den Namen des Verkäufers und das Ablaufdatum des Angebots aus dem Kaufvertrag.

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

Ergebnis:

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

Extrahieren von Kontrollkästcheninformationen

Dieses Beispiel extrahiert Informationen über Elemente, die nicht enthalten sind, basierend auf den im Dokument aktivierten Kontrollkästchen.

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

Ergebnis:

{
    "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

Extrahieren des Signaturstatus

Dieses Beispiel extrahiert Informationen darüber, ob die Vereinbarung unterzeichnet wurde.

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

Ergebnis:

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

Extrahieren einer Liste von Entitäten

Dieses Beispiel extrahiert eine Liste der Namen der Käufer.

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

Ergebnis:

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

Extrahieren von Tabelleninformationen

Dieses Beispiel extrahiert tabellarische Daten aus dem folgenden Dokument.

Granger-Kausalitätstests – P-Werte
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

Eingabeanforderungen

AI_EXTRACT ist sowohl für digital erstellte als auch für gescannte Dokumente optimiert. In der folgenden Tabelle sind die Beschränkungen und Anforderungen für Eingabedokumente aufgeführt:

Maximale Dateigröße

100 MB

Maximale Seitenzahl pro Dokument

125

Maximale Anzahl von Fragen

  • 100 Fragen zur Extraktion von Entitäten (einzelne oder Liste)

  • 10 Fragen zur Tabellenextraktion

Unterstützte Dateitypen

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

Stagingbereich-Verschlüsselung

Serverseitige Verschlüsselung:

Anforderungen an die Zugriffssteuerung

Um die Funktion AI_EXTRACT zu verwenden, muss ein Benutzer mit der Rolle ACCOUNTADMIN dem Benutzer, der die Funktion aufruft, die Datenbankrolle SNOWFLAKE.CORTEX_USER erteilen. Siehe Cortex LLM privileges für weitere Informationen.

Hinweise zu Kosten

Die Cortex AI_EXTRACT-Funktion verursacht Kosten, die von der Anzahl der Seiten pro Dokument, den Token der Eingabeaufforderung und den verarbeiteten Ausgabe-Token abhängen.

  • Für seitenbasierte Dateiformate (PDF, DOCX, TIF, TIFF) wird jede Seite als 970 Token gezählt.

  • Für Bilddateiformate (JPEG, JPG, PNG) wird jede einzelne Bilddatei als Seite abgerechnet und als 970 Token gezählt.

Snowflake empfiehlt die Ausführung von Abfragen, die die Cortex-Funktion AI_EXTRACT aufrufen, in einem kleineren Warehouse (nicht größer als MEDIUM). Größere Warehouses erhöhen die Leistung nicht.

Unterstützte Sprachen

AI_EXTRACT unterstützt die folgenden Sprachen:

  • Arabisch

  • Bengalisch

  • Birmanisch

  • Cebuano

  • Chinesisch

  • Tschechisch

  • Holländisch

  • Englisch

  • Französisch

  • Deutsch

  • Hebräisch

  • Hindi

  • Indonesisch

  • Italienisch

  • Japanisch

  • Khmer

  • Koreanisch

  • Lao

  • Malaiisch

  • Persisch

  • Polnisch

  • Portugiesisch

  • Russisch

  • Spanisch

  • Tagalog

  • Thailändisch

  • Türkisch

  • Urdu

  • Vietnamesisch

Regionale Verfügbarkeit

Unterstützung für AI_EXTRACT ist für Konten in den folgenden Snowflake-Regionen verfügbar:

AWS

Azure

US West 2

East US 2

US East 1

West US 2

US CA Zentrale 1

South Central US

Europe Central 1

North Europe

Europe West 1

West Europe

SA East 1

Central India

AP Northeast 1

Japan East

AP Southeast 2

Southeast Asia Australia East

AI_EXTRACT bietet regionenübergreifende Unterstützung. Weitere Informationen zur Aktivierung der regionenübergreifenden Unterstützung von Cortex AI finden Sie unter Regionenübergreifende Inferenz.

Fehlerbedingungen

Snowflake Cortex AI_EXTRACT kann die folgenden Fehlermeldungen erzeugen:

Meldung

Erläuterung

Internal error.

Es ist ein Systemfehler aufgetreten. Warten Sie und versuchen Sie es erneut. Wenn der Fehler weiterhin besteht, wenden Sie sich an den Snowflake-Support.

Not found.

Die Datei wurde nicht gefunden.

Provided file cannot be found.

Die Datei wurde nicht gefunden.

Provided file cannot be accessed.

Der aktuelle Benutzer hat nicht die erforderlichen Berechtigungen für den Zugriff auf die Datei.

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

Das Dokument hat kein unterstütztes Format.

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

Das Dokument ist nicht in einem Stagingbereich mit serverseitiger Verschlüsselung gespeichert.

Empty request.

Es wurden keine Parameter angegeben.

Missing or empty response format.

Es wurde kein Antwortformat angegeben.

Invalid response format.

Das Antwortformat ist kein gültiges JSON-Format.

Duplicate feature name found: {feature_name}.

Das Antwortformat enthält einen oder mehrere doppelte Feature-Namen.

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

Die Anzahl der Fragen überschreitet das zulässige Limit.

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

Das Dokument überschreitet das Limit von 125 Seiten.

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

Ein eingegebenes Bild oder eine konvertierte Dokumentseite ist größer als die unterstützten Abmessungen.

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

Die Seite ist größer als die unterstützten Abmessungen.

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

Das Dokument ist größer als 100 MB.