Kategorien:

Dateifunktionen (AI-Funktionen)

PARSE_DOCUMENT (SNOWFLAKE.CORTEX)

Bemerkung

AI_PARSE_DOCUMENT ist die neueste Version dieser Funktion. Verwenden Sie AI_PARSE_DOCUMENT für die neueste Funktionalität. Sie können weiterhin PARSE_DOCUMENT (SNOWFLAKE.CORTEX) verwenden.

Gibt den extrahierten Inhalt eines Dokuments in einem Snowflake-Stagingbereich als JSON-formatierte Zeichenfolge zurück. Diese Funktion unterstützt zwei Arten von Extraktionen: optische Zeichenerkennung (OCR) und Layout. Weitere Informationen dazu finden Sie unter AISQL-AI_PARSE_DOCUMENT.

Syntax

SNOWFLAKE.CORTEX.PARSE_DOCUMENT( '@<stage>', '<path>', [ <options> ] )
Copy

Argumente

Benötigt:

stage

Name des Snowflake-Stagingbereichs.

path

Relativer Pfad zu dem Dokument im Snowflake-Stagingbereich.

Optional:

options

Ein OBJECT-Wert, der Optionen für das Parsen von -Dokumenten enthält. Die unterstützten Schlüssel sind unten aufgeführt. Alle sind optional.

  • 'mode': Gibt den Parsing-Modus an. Folgende Modi werden unterstützt:

    • 'OCR': Die Funktion extrahiert nur Text. Dies ist der Standardmodus.

    • 'LAYOUT': Die Funktion extrahiert sowohl das Layout als auch Text, einschließlich struktureller Inhalte wie Tabellen.

  • 'page_split': Wenn auf TRUE gesetzt, teilt die Funktion das Dokument in Seiten auf und verarbeitet jede Seite separat. Nur PDF-, PowerPoint (.pptx)- und Word (.docx)-Dokumente werden unterstützt. Dokumente in anderen Formaten geben einen Fehler zurück. Der Standardwert ist FALSE.

    Tipp

    Zum Verarbeiten von langen Dokumenten, die die Token-Limit von PARSE_DOCUMENT überschreiten, setzen Sie diese Option auf TRUE.

Rückgabewerte

Ein JSON-Objekt (als Zeichenfolge), das die extrahierten Daten und die zugehörigen Metadaten enthält. Das options-Argument bestimmt die Struktur des zurückgegebenen Objekts.

Tipp

Um die Ausgabe inSQL zu verwenden, konvertieren Sie es anhand der PARSE_JSON-Funktion in einen OBJECT-Wert.

Wenn die 'page_split'-Option festgelegt ist, hat die Ausgabe die folgende Struktur:

  • "pages": Ein Array von JSON-Objekten, die jeweils Text enthalten, der aus dem Dokument extrahiert wurde. Wenn das Dokument nur eine Seite hat, enthält die Ausgabe trotzdem ein "pages"-Array (das ein einzelnes Objekt enthält). Jede Seite hat die folgenden Felder:

    • "content": Klartext (im OCR-Modus) oder Markdown-formatierter Text (im LAYOUT-Modus).

    • "index": Der Seitenindex in der Datei, beginnend bei 0. Die im Dokument angegebenen Seitenzahlen und Formate werden ignoriert.

  • "errorInformation": Enthält Fehlerinformationen, wenn das Dokument nicht geparst werden kann.

  • "metadata": Enthält Metadaten zum Dokument, z. B. die Seitenanzahl.

Bemerkung

Die Felder "pages" und "metadata" sind in der Ausgabe vorhanden, wenn das Parsen erfolgreich war. "errorInformation" ist nur dann vorhanden, wenn das Parsen fehlgeschlagen ist.

Wenn 'page_split' FALSE oder nicht vorhanden ist, hat die Ausgabe die folgende Struktur:

  • "content": Klartext (im OCR-Modus) oder Markdown-formatierter Text (im LAYOUT-Modus).

  • "errorInformation": Enthält Fehlerinformationen, wenn das Dokument nicht geparst werden kann.

  • "metadata": Enthält Metadaten zum Dokument, z. B. die Seitenanzahl.

Bemerkung

Die Felder "content" und "metadata" sind in der Ausgabe vorhanden, wenn das Parsen erfolgreich war. "errorInformation" ist nur dann vorhanden, wenn das Parsen fehlgeschlagen ist.

Beispiele

OCR-Modus

SELECT TO_VARCHAR(
    SNOWFLAKE.CORTEX.PARSE_DOCUMENT(
        '@PARSE_DOCUMENT.DEMO.documents',
        'document_1.pdf',
        {'mode': 'OCR'})
    ) AS OCR;
Copy

Ausgabe:

{
    "content": "content of the document"
}

LAYOUT-Modus

In diesem Beispiel wird ein Dokument mit einer Tabelle analysiert, die im folgenden Screenshot gezeigt wird:

Beispiel PDF-Inhalt mit einer Tabelle
SELECT
  TO_VARCHAR (
    SNOWFLAKE.CORTEX.PARSE_DOCUMENT (
        '@PARSE_DOCUMENT.DEMO.documents',
        'document_1.pdf',
        {'mode': 'LAYOUT'} ) ) AS LAYOUT;
Copy

Ausgabe:

{
  "content": "# This is PARSE DOCUMENT example
     Example table:
     |Header|Second header|Third Header|
     |:---:|:---:|:---:|
     |First row header|Data in first row|Data in first row|
     |Second row header|Data in second row|Data in second row|

     Some more text."
 }

Seiten teilen

In diesem Beispiel wird ein mehrseitiges Dokument in getrennte Seiten aufgeteilt, die separat mit dem:code:'OCR'-Modus verarbeitet werden.

SELECT
  TO_VARCHAR (
    SNOWFLAKE.CORTEX.PARSE_DOCUMENT (
        '@PARSE_DOCUMENT.DEMO.documents',
        'document_1.pdf',
        {'mode': 'OCR', 'page_split': TRUE} ) ) AS MULTIPAGE;
Copy

Ausgabe:

{
  "pages": [
    {
      "content": "content of the first page",
      "index": 0
    },
    {
      "content": "content of the second page",
      "index": 1
    },
    {
      "content": "content of the third page",
      "index": 2
    }
  ],
  "metadata": {
    "pageCount": 3
  }
}

Einschränkungen

Snowflake Cortex-Funktionen unterstützen keine dynamischen Tabellen.