Cortex PARSE_DOCUMENT

A função PARSE_DOCUMENT é uma das funções Funções AISQL da Cortex AI que oferece a capacidade de extrair texto, dados e elementos de layout de documentos. Você pode usar PARSE_DOCUMENT para extrair texto de vários documentos e formulários para implementar o seguinte:

  • Pipelines RAG que alimentam o Cortex Search

  • Processamento LLM, como resumo ou tradução de documentos, usando as funções da Cortex AI

  • Extração de entidades zero-shot usando as saídas estruturadas de Cortex AI

Como a PARSE_DOCUMENT funciona

A função PARSE_DOCUMENT oferece dois modos de processamento de documentos PDF:

  • O modo OCR é a opção recomendada para extração de texto rápida e de alta qualidade de documentos como manuais, contratos, páginas de detalhes de produtos, apólices de seguro e reclamações, bem como documentos SharePoint.

  • LAYOUT é otimizado para extrair texto e elementos de layout, como tabelas. Essa é a opção recomendada para melhorar o contexto de uma base de conhecimento de documentos para otimizar os sistemas de informações de recuperação e para a inferência do modelo de linguagem grande (LLM).

Nota

O modo de layout PARSE_DOCUMENT está atualmente na visualização. O modo OCR tem disponibilidade geral na maioria das regiões.

Uso de PARSE_DOCUMENT

O Cortex PARSE_DOCUMENT é uma função SQL. Como é totalmente hospedado e gerenciado pela Snowflake, sua utilização não requer configuração. Aponte a função PARSE_DOCUMENT para um estágio que contenha seus documentos PDF para extrair dados deles. O exemplo a seguir extrai as informações de texto e layout do arquivo document_1.pdf no estágio documents no banco de dados parse_document e no esquema demo.

Nota

PARSE_DOCUMENT é atualmente incompatível com políticas de rede personalizadas.

SELECT
  SNOWFLAKE.CORTEX.PARSE_DOCUMENT(
    @parse_document.demo.documents,
    'document_1.pdf',
    {'mode': 'LAYOUT'}
  ) AS layout;
Copy

Como criar um estágio para o processamento de documentos

Crie um estágio interno ou externo para armazenar os documentos que deseja processar. Ao criar seu estágio, ative criptografia do lado de servidor. Caso contrário, PARSE_DOCUMENT retorna um erro informando que o arquivo fornecido não está no formato esperado ou está criptografado no lado do cliente.

O SQL abaixo cria um estágio interno adequado.

CREATE OR REPLACE STAGE input_stage
    DIRECTORY = ( ENABLE = true )
    ENCRYPTION = ( TYPE = 'SNOWFLAKE_SSE' );
Copy

O SQL a seguir cria um estágio externo no Amazon S3. Também há suporte para os estágios externos do Azure e GCP.

CREATE OR REPLACE STAGE input_stage
    URL='s3://<s3-path>/'
    CREDENTIALS=(AWS_KEY_ID=<aws_key_id>
    AWS_SECRET_KEY=<aws_secret_key>)
    ENCRYPTION=( TYPE = 'AWS_SSE_S3' );
Copy

Nota

Atualmente, o processamento de arquivos de estágios é incompatível com as políticas de rede personalizadas.

Dica

Se você se deparar com a mensagem de erro “A expiração em segundos para a função AWS é inválida” de um estágio externo, verifique se o tempo de expiração do URL predefinido está definido com precisão. O valor padrão desse parâmetro de conta é otimizado para estágios internos, mas há uma opção para ajustá-lo para funcionar com estágios externos. Para alterá-lo, entre em contato com o suporte Snowflake.

Exemplo

Este exemplo usa o modo OCR da função PARSE_DOCUMENT para extrair texto da primeira página de um documento de seguro contra condições climáticas, mostrado abaixo.

Exemplo de documento de seguro contra condições climáticas

Para analisar esse documento, você faria o upload dele em um estágio nomeado document_stage e executaria a seguinte consulta:

SELECT SNOWFLAKE.CORTEX.PARSE_DOCUMENT(
    @document_stage,
    'weather_policy.pdf'
  ) AS weather_policy_doc
Copy

A resposta bruta de PARSE_DOCUMENT é a seguinte:

{
  "content": "SOME INSURANCE COMPANY\nWEATHER PROTECTION INSURANCE POLICY\nPolicy Number: WP-2025-789456\nEffective Date: April 1, 2025\nExpiration Date: April 1, 2026\nNAMED INSURED AND PROPERTY:\nJohn and Mary Homeowner\n123 Shelter Lane\nWeatherton, ST 12345\n

SECTION I - DEFINITIONS\nThroughout this policy, \"you\" and \"your\" refer to the Named Insured shown in the Declarations and the spouse if a\nresident of the same household. \"We,\" \"us,\" and \"our\" refer to Evergreen Insurance Company providing this\ninsurance. In addition, certain words and phrases are defined as follows:\n1. Weather Event means a natural atmospheric occurrence including but not limited to: a. Wind (including\nhurricanes, tornadoes, and straight-line winds) b. Hail c. Lightning d. Snow, ice, and freezing rain e.\nExcessive rainfall resulting in flooding f. Extreme temperatures causing damage\n2. Named Storm means any storm or weather disturbance that has been declared and named as a tropical\nstorm or hurricane by the National Weather Service or National Hurricane Center.\n3. Actual Cash Value (ACV) means the cost to repair or replace damaged property with new material of like\nkind and quality, less depreciation due to age, wear and condition.\n4. Replacement Cost means the cost to repair or replace damaged property with new material of like kind\nand quality, without deduction for depreciation.\n5. Dwelling means the building structure at the insured location including attached structures and fixtures.\n6. Other Structures means structures on the residence premises separated from the dwelling by clear\nspace or connected only by a fence, utility line, or similar connection.\n7. Personal Property means movable items owned by you and located at the insured property.\n

SECTION II - COVERAGE\nA. PROPERTY COVERAGE\nWe will pay for direct physical loss to property described in the Declarations caused by a Weather Event unless\nthe loss is excluded in Section III - Exclusions.\n1. Dwelling Protection We will cover: a. Your dwelling, including attached structures b. Materials and\nsupplies located on or adjacent to the residence premises for use in construction, alteration, or repair of\nthe dwelling or other structures c. Foundation, floor slab, and footings supporting the dwelling d.\nWall-to-wall carpeting attached to the dwelling\n2. Other Structures Protection We will cover structures on your property separated from your dwelling by\nclear space, including: a. Detached garages b. Storage sheds c. Fences d. Driveways and walkways e.\nPatios and retaining walls\n3. Personal Property Protection We will cover personal property owned or used by you while it is on the\nresidence premises. Coverage includes but is not limited to: a. Furniture b. Clothing c. Electronic\nequipment d. Appliances e. Sporting goods\n4. Loss of Use Protection If a Weather Event makes your residence uninhabitable, we will cover: a.\nAdditional living expenses incurred to maintain your normal standard of living b. Fair rental value if part of\nyour residence is rented to others c. Necessary expenses required to make the residence habitable or\nmove to temporary housing\nB. ADDITIONAL COVERAGES",
  "metadata": {
    "pageCount": 1
  }
}
Copy

Ao processar essa resposta com o as funções LLM de Cortex AI, você pode realizar facilmente a análise de dados não estruturados. O exemplo a seguir demonstra uma tarefa simples de resposta a perguntas:

SELECT SNOWFLAKE.CORTEX.COMPLETE('claude-3-5-sonnet',
  CONCAT ('Is clothing covered as part of the weather protection insurance policy?',
    TO_VARCHAR(weather_policy_doc))) FROM ocr_example_docs
Copy

Resposta:

Yes, clothing is covered under the insurance policy. According to Section II - Coverage, Part A.3 (Personal Property Protection), clothing is specifically listed as one of the covered personal property items while it is on the residence premises. The policy states: "We will cover personal property owned or used by you while it is on the residence premises. Coverage includes but is not limited to: a. Furniture b. Clothing c. Electronic equipment d. Appliances e. Sporting goods"

Requisitos de entrada

A função PARSE_DOCUMENT é otimizada para documentos digitais e escaneados. A tabela a seguir lista as limitações e os requisitos dos documentos de entrada:

Tamanho máximo do arquivo

100 MB

Máximo de páginas por documento

300 páginas

Tipo de arquivo permitido

PDF, PPTX, DOCX, JPEG, JPG, PNG, TIFF, TIF

Criptografia de estágio

Criptografia do lado do servidor

Tamanho da fonte

8 pontos ou maior para obter melhores resultados

Recursos de documentos compatíveis

Recurso

Descrição

Orientação da página

PARSE_DOCUMENT detecta automaticamente a orientação da página.

Caracteres

PARSE_DOCUMENT detecta os seguintes caracteres:

  • a-z

  • A-Z

  • 0-9

  • À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ Ą ą Ć ć Č č Đ đ Ę ę ı Ł ł Ń ń ō Œ œ Ś ś Š š Ÿ Ź ź Ż ż Ž ž ʒ β δ ε з Ṡ

  • ! « # $ % & “ ( ) * + , - . / : ; < = > ? @ [ ] ^ _ ` { | } ~ ¡ ¢ £ ¥ § © ª « ­ ® ¯ ° ± ² ³ ´ µ ¶ · º » ¿ “ † ‡ • ‣ ⁋ ₣ ₤ ₦ ₩ € ₭ ₹ ™ ← ↑ → ↓ ↔ ↕ ↖ ↗ ↘ ↙ ↰ ↱ ↲ ↳ ↴ ↵

Nota

A função PARSE_DOCUMENT não é treinada para o reconhecimento de escrita à mão.

Linguagens compatíveis

A função PARSE_DOCUMENT é deliberadamente treinada para os seguintes idiomas:

Modo OCR

Modo LAYOUT

  • Inglês

  • Francês

  • Alemão

  • Italiano

  • Norueguês

  • Polonês

  • Português

  • Espanhol

  • Sueco

  • Inglês

O modo LAYOUT também é compatível, mas não é otimizado para francês, alemão, italiano, norueguês, polonês, português, espanhol e sueco.

Disponibilidade regional

O suporte para esse recurso está disponível para contas nas seguintes regiões do Snowflake:

AWS

Azure

Google Cloud Platform

US West 2 (Oregon)

East US 2 (Virginia)

US Central 1 (Iowa)

US East (Ohio)

West US 2 (Washington)

US East 1 (N. Virginia)

Europa (Holanda)

Europe (Ireland)

Europe Central 1 (Frankfurt)

Asia Pacific (Sydney)

Asia Pacific (Tokyo)

Requisitos de controle de acesso

Para usar a função PARSE_DOCUMENT, um usuário com a função ACCOUNTADMIN deve conceder a função de banco de dados SNOWFLAKECORTEX_USER ao usuário que chamará a função. Veja o tópico Privilégios obrigatórios para mais detalhes.

Considerações sobre custo

A função Cortex PARSE_DOCUMENT incorre em custos de computação com base no número processado de páginas por documento.

  • Para formatos de arquivo de documento (PDF, DOCX), cada página do documento é cobrada como uma página.

  • Para formatos de arquivo de imagem (JPEG, JPG, TIF, TIFF, PNG), cada arquivo de imagem individual é cobrado como uma página.

O Snowflake recomenda a execução de consultas que chamem a função PARSE_DOCUMENT do Cortex em um warehouse menor (até o tamanho MEDIUM). Warehouses maiores não aumentam o desempenho.

Condições de erro

O Snowflake Cortex PARSE_DOCUMENT pode produzir as seguintes mensagens de erro:

Mensagem

Explicação

O documento contém um idioma que não é compatível.

O documento de entrada contém um idioma não compatível

O formato de arquivo fornecido {file_extension} não é compatível. Formatos compatíveis: .docx, .pptx, .pdf.

Retornado quando o documento não está em um formato compatível.

O formato de arquivo fornecido .bin não é compatível. Formatos compatíveis: .docx, .pptx, .pdf. Certifique-se de que o arquivo esteja armazenado com criptografia no lado do servidor.

Retornado quando o formato do arquivo não é compatível e entendido como um arquivo binário. Certifique-se de que o estágio use criptografia no lado do servidor.

Número máximo de 300 páginas excedido.

Retornado quando o PDF contém mais de 300 páginas.

O tamanho máximo do arquivo de 104857600 bytes foi excedido.

Retornado quando o documento tem mais de 100 MB.

O arquivo fornecido não pode ser encontrado.

O arquivo não existe.

O arquivo fornecido não pode ser acessado.

O arquivo não pode ser acessado devido a privilégios insuficientes.

A função Parse Document não respondeu no tempo permitido.

Tempo limite atingido.

Erro interno.

Ocorreu um erro no sistema. Aguarde e tente novamente.