Catégories :

Fonctions de fichiers (Fonctions AI)

PARSE_DOCUMENT (SNOWFLAKE.CORTEX)

Note

AI_PARSE_DOCUMENT est la dernière version de cette fonction. Utilisez le site AI_PARSE_DOCUMENT pour bénéficier des dernières fonctionnalités. Vous pouvez continuer à utiliser PARSE_DOCUMENT (SNOWFLAKE.CORTEX).

Renvoie le contenu extrait d’un document sur une zone de préparation Snowflake sous forme de chaîne au format JSON. Cette fonction prend en charge deux types d’extractions, la reconnaissance optique de caractères (OCR) et la mise en page. Pour plus d’informations, voir AISQL AI_PARSE_DOCUMENT.

Syntaxe

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

Arguments

Obligatoire :

stage

Nom de la zone de préparation Snowflake.

path

Chemin relatif vers le document sur la zone de préparation Snowflake.

Facultatif :

options

Une valeur OBJECT qui contient des options en matière d’analyse de documents. Les clés prises en charge sont indiquées ci-dessous. Elles sont toutes facultatives.

  • 'mode' : Spécifie le mode d’analyse. Les modes pris en charge sont les suivants :

    • 'OCR' : La fonction extrait uniquement du texte. Il s’agit du mode par défaut.

    • 'LAYOUT' : La fonction extrait la mise en page ainsi que le texte, y compris le contenu structurel tel que les tables.

  • 'page_split' : Si définie sur TRUE, la fonction divise le document en pages et traite chaque page séparément. Seuls les documents PDF, PowerPoint (.pptx) et Word (.docx) sont pris en charge. Les documents dans d’autres formats renvoient une erreur. La valeur par défaut est FALSE.

    Astuce

    Pour traiter des documents longs qui dépassent la limite de jetons de PARSE_DOCUMENT, définissez cette option sur TRUE.

Renvoie

Un objet JSON (sous forme de chaîne) contenant les données extraites et les métadonnées associées. L’argument options détermine la structure de l’objet retourné.

Astuce

Pour utiliser la sortie en SQL, convertissez-la en valeur OBJECT en utilisant la fonction PARSE_JSON.

Si l’option 'page_split' est définie, la sortie sera dotée de la structure suivante :

  • "pages" : Un tableau d’objets JSON, chacun contenant du texte extrait du document. Si le document ne comporte qu’une seule page, la sortie contient toujours un tableau "pages" (qui contient un seul objet). Chaque page comporte les champs suivants :

    • "content" : Texte brut (en mode OCR) ou texte au format Markdown (en mode LAYOUT).

    • "index" : L’index de page dans le fichier, commençant à 0. Les numéros de page et les formats spécifiés dans le document sont ignorés.

  • "errorInformation" : contient des informations d’erreur si le document ne peut pas être analysé.

  • "metadata" : Contient des métadonnées sur le document, telles que le nombre de pages.

Note

Les champs "pages" et "metadata" sont présents dans la sortie lorsque l’analyse réussit. "errorInformation" n’est présent que si l’analyse échoue.

Si 'page_split' est FALSE ou n’est pas présent, la sortie sera dotée de la structure suivante :

  • "content" : Texte brut (en mode OCR) ou texte au format Markdown (en mode LAYOUT).

  • "errorInformation" : contient des informations d’erreur si le document ne peut pas être analysé.

  • "metadata" : Contient des métadonnées sur le document, telles que le nombre de pages.

Note

Les champs "content" et "metadata" sont présents dans la sortie lorsque l’analyse réussit. "errorInformation" n’est présent que si l’analyse échoue.

Exemples

Mode OCR

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

Sortie :

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

Mode LAYOUT

Cet exemple analyse un document avec une table affichée dans la capture d’écran suivante :

Exemple de contenu PDF avec une table
SELECT
  TO_VARCHAR (
    SNOWFLAKE.CORTEX.PARSE_DOCUMENT (
        '@PARSE_DOCUMENT.DEMO.documents',
        'document_1.pdf',
        {'mode': 'LAYOUT'} ) ) AS LAYOUT;
Copy

Sortie :

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

Diviser les pages

Cet exemple divise un document de plusieurs pages en pages distinctes, qui sont traitées séparément en utilisant le mode 'OCR'.

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

Sortie :

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

Limitations

Les fonctions de Snowflake Cortex ne prennent pas en charge les tables dynamiques.