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 Parsing documents with 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': If set to TRUE, the function splits the output of the function to return content per page. Only PDF, PowerPoint (.pptx), and Word (.docx) documents are supported. Documents in other formats return an error. The default is FALSE.

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.