- 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> ] )
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;
Saída:
{
    "content": "content of the document"
}
Modo LAYOUT¶
Este exemplo analisa um documento com uma tabela mostrada na captura de tela a seguir:
 
SELECT
  TO_VARCHAR (
    SNOWFLAKE.CORTEX.PARSE_DOCUMENT (
        '@PARSE_DOCUMENT.DEMO.documents',
        'document_1.pdf',
        {'mode': 'LAYOUT'} ) ) AS LAYOUT;
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;
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.