Categorias:

Funções de arquivo (funções de AI)

PARSE_DOCUMENT (SNOWFLAKE.CORTEX)

Nota

AI_PARSE_DOCUMENT é a versão mais recente dessa função. Use o AI_PARSE_DOCUMENT para obter a funcionalidade mais recente. Você pode continuar a usar o PARSE_DOCUMENT (SNOWFLAKE.CORTEX).

Retorna o conteúdo extraído de um documento em uma preparação Snowflake como uma string formatada como JSON. Esta função oferece suporte a 2 tipos de extrações, reconhecimento óptico de caracteres (OCR) e layout. Para obter mais informações, consulte AISQL AI_PARSE_DOCUMENT.

Sintaxe

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

Argumentos

Obrigatório:

stage

Nome do estágio Snowflake.

path

Caminho relativo para o documento no estágio Snowflake.

Opcional:

options

Um valor OBJECT que contém opções para análise de documentos. As chaves compatíveis são mostradas abaixo. Todas são opcionais.

  • 'mode': especifica o modo de análise. Os modos compatíveis são:

    • 'OCR': a função extrai somente texto. É o modo padrão.

    • 'LAYOUT': a função extrai o layout e o texto, incluindo o conteúdo estrutural, como tabelas.

  • 'page_split': se definido como TRUE, a função divide o documento em páginas e processa cada página separadamente. Somente documentos em PDF, PowerPoint (.pptx) e Word (.docx) são compatíveis. Os documentos em outros formatos retornam um erro. O padrão é FALSE.

    Dica

    Para processar documentos longos que excedam o limite de token de PARSE_DOCUMENT, defina essa opção como TRUE.

Retornos

Um objeto JSON (como uma string) que contém os dados extraídos e os metadados associados. O argumento options determina a estrutura do objeto retornado.

Dica

Para utilizar a saída em SQL, converta-a em um valor OBJECT usando a função PARSE_JSON.

Se a opção 'page_split' estiver definida, a saída terá a seguinte estrutura:

  • "pages": uma matriz de objetos JSON, cada um contendo texto extraído do documento. Se o documento tiver apenas uma página, a saída ainda conterá uma matriz "pages" (que contém um único objeto). Cada página tem os seguintes campos:

    • "content": texto simples (no modo OCR) ou texto formatado em Markdown (no modo LAYOUT).

    • "index": o índice da página no arquivo, começando em 0. Os números de página e os formatos de especificados no documento são ignorados.

  • "errorInformation": contém informações de erro se o documento não puder ser analisado.

  • "metadata": contém metadados sobre o documento, como contagem de páginas.

Nota

Os campos "pages" e "metadata" estarão presentes na saída quando a análise for bem-sucedida. "errorInformation" estará presente somente se a análise falhar.

Se 'page_split' for FALSE ou não estiver presente, a saída terá a seguinte estrutura:

  • "content": texto simples (no modo OCR) ou texto formatado em Markdown (no modo LAYOUT).

  • "errorInformation": contém informações de erro se o documento não puder ser analisado.

  • "metadata": contém metadados sobre o documento, como contagem de páginas.

Nota

Os campos "content" e "metadata" estarão presentes na saída quando a análise for bem-sucedida. "errorInformation" estará presente somente se a análise falhar.

Exemplos

Modo OCR

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

Saída:

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

Modo LAYOUT

Este exemplo analisa um documento com uma tabela mostrada na captura de tela a seguir:

Exemplo de conteúdo de PDF com uma tabela
SELECT TO_VARCHAR ( SNOWFLAKE.CORTEX.PARSE_DOCUMENT ( '@PARSE_DOCUMENT.DEMO.documents', 'document_1.pdf', {'mode': 'LAYOUT'} ) ) AS LAYOUT; 
Copy

Saída:

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

Dividir páginas

Este exemplo divide um documento de várias páginas em páginas separadas, que são processadas separadamente usando o modo 'OCR'.

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

Saída:

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

Limitações

As funções do Snowflake Cortex não são compatíveis com tabelas dinâmicas.