Extraindo informações de documentos com AI_EXTRACT¶
AI_EXTRACT é uma função de AI do Cortex que permite extrair informações estruturadas, como entidades, listas e tabelas, de arquivos de texto ou de documento, fazendo perguntas em linguagem natural ou descrevendo as informações a serem extraídas. Ela pode ser usada com outras funções para criar pipelines de processamento de documentos personalizados para uma variedade de casos de uso (consulte Cortex AI Functions: documentos).
A AI_EXTRACT pode processar documentos de vários formatos (em 29 idiomas) e extrair informações tanto de parágrafos com muito texto quanto de conteúdo em formato gráfico, como logotipos, texto manuscrito (por exemplo, assinaturas), tabelas ou marcas de seleção. A AI_EXTRACT pode extrair informações nos seguintes formatos estruturados:
Entidade: faça perguntas em linguagem natural ou descreva as informações a serem extraídas (como cidade, rua ou código ZIP).
Lista (ou matriz): você pode fornecer um esquema JSON para extrair uma matriz ou lista de informações presentes no documento, como o nome de todos os titulares de contas em um extrato bancário ou uma lista de todos os endereços em um de documento.
Tabela: forneça um esquema JSON para extrair dados tabulares presentes no documento especificando o título da tabela e uma lista de colunas que devem ser extraídas.
A AI_EXTRACT é dimensionada automaticamente conforme sua carga de trabalho, processando vários documentos ao mesmo tempo. Os documentos podem ser processados diretamente do armazenamento de objetos para evitar movimentação desnecessária de dados.
Nota
AI_EXTRACT é atualmente incompatível com políticas de rede personalizadas.
Qualidade da extração¶
A AI_EXTRACT usa arctic-extract, um modelo de linguagem grande (Large Language Model, LLM) baseado em visão proprietária que entrega extração de alta precisão. A tabela a seguir apresenta as pontuações do modelo com base em vários parâmetros de comparação padrão, com as pontuações de outros modelos populares para comparação:
Resposta visual a perguntas (VQA)¶
Oferta |
Pontuação DocVQA |
|---|---|
Avaliação humana |
0.9811 |
Snowflake Arctic-Extract |
0.9433 |
Azure OpenAI GPT-o3 |
0.9339 |
Google Gemini 2.5-Pro |
0.9316 |
Google Anthropic Claude 4 Sonnet |
0.9119 |
Azure Document Intelligence + GPT-o3 |
0.8853 |
Google Document AI + Gemini |
0.8497 |
Azure OpenAI GPT-o3 |
0.9339 |
AWS Textract |
0.8313 |
Resposta somente texto a perguntas (SQuAD v2)¶
Oferta |
ANLS |
Correspondência exata |
|---|---|---|
Snowflake Arctic-Extract |
81.18 |
78.74 |
Anthropic Claude 4 Sonnet |
80.54 |
77.10 |
Meta LLaMA 3.1 405B |
80.37 |
76.56 |
Meta LLaMA 4 Scout |
74.30 |
70.70 |
OpenAI GPT 4.1 |
70.71 |
66.81 |
Meta LLaMA 3.1 8B |
59.13 |
54.48 |
Exemplos¶
Estes exemplos usam a imagem a seguir como documento de entrada. O documento é armazenado em uma área de preparação.
Extração de uma entidade¶
Extrai o nome do vendedor e a data de expiração da oferta do contrato de venda.
SELECT AI_EXTRACT(
file => TO_FILE('@db.schema.stage','document.pdf'),
responseFormat => [['seller_name', 'What is the seller name?'], ['address', 'What is the offer expiration date?']]
);
Resultado:
{
"error": null,
"response": {
"address": "12/12/2023",
"seller_name": "Paul Doyle"
}
}
Extraindo informações das caixas de seleção¶
Este exemplo extrai informações sobre itens que não estão incluídos, com base nas caixas de seleção marcadas no documento.
SELECT AI_EXTRACT(
file => TO_FILE('@db.schema.stage','document.pdf'),
responseFormat => [['flat_items', 'What items are not included with the flat?'], ['default', 'What Default is selected?']]
);
Resultado:
{
"error": null,
"response": {
"default": "Forfeiture of Earnest Money",
"flat_items": "dryer, security system, satellite dish, wood stove, fireplace insert, hot tub, attached speaker(s), generator, other"
}
}
Extraindo status da assinatura¶
Este exemplo extrai informações sobre o contrato ter sido ou não assinado.
SELECT AI_EXTRACT(
file => TO_FILE('@db.schema.stage','document.pdf'),
responseFormat => [['signature', 'Is this document signed?']]
);
Resultado:
{
"error": null,
"response": {
"signature": "no"
}
}
Extraindo uma lista de entidades¶
Este exemplo extrai uma lista de nomes de compradores.
SELECT AI_EXTRACT(
file => TO_FILE('@db.schema.files', 'report.pdf'),
responseFormat => {
'schema': {
'type': 'object',
'properties': {
'buyer_list': {
'description': 'What are the buyer names?',
'type': 'array'
}
}
}
}
);
Resultado:
{
"error": null,
"response": {
"buyer_list": [
"John Davis",
"Jane Davis"
]
}
}
Extrair informações da tabela¶
Este exemplo extrai dados tabulares do documento a seguir.
SELECT AI_EXTRACT(
file => TO_FILE('@db.schema.files', 'report.pdf'),
responseFormat => {
'schema': {
'type': 'object',
'properties': {
'income_table': {
'description': 'Table 2: Granger Causality Tests - P-values',
'type': 'object',
'column_ordering': ['description', 'countries','lags','z','z_approx'],
'properties': {
'description': {
'description': 'Description',
'type': 'array'
},
'countries': {
'description': 'Countries',
'type': 'array'
},
'lags': {
'description': 'Lags',
'type': 'array'
},
'z': {
'description': 'Z',
'type': 'array'
},
'z_approx': {
'description': 'Z approx.',
'type': 'array'
}
}
}
}
}
);
{
"error": null,
"response": {
"income_table": {
"countries": [
"33","80","29","84","34"
],
"description": [
"Commodity exporters",
"Non-commodity exporters",
"AE",
"EMDE",
"Large or market-dominant countries"
],
"lags": [
"2","1","1","1","1"
],
"z": [
"0.11","0.08","0.89","0.12","0.07"
],
"z_approx": [
"0.25","0.19","0.95","0.25","0.14"
]
}
}
}
Requisitos de entrada¶
A AI_EXTRACT é otimizada para documentos originalmente digitais e que foram digitalizados. A seguinte tabela 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 |
125 |
Máximo de perguntas |
|
Tipos de arquivos compatíveis |
PDF, PPT, PPTX, DOCX, EML, DOC, DOCX, HTM, HTML, TEXT, MD, TXT, BMP, JPEG, JPG, PNG, TIFF, TIF, WEBP |
Criptografia de estágio |
Criptografia do lado do servidor |
Requisitos de controle de acesso¶
Para usar a função AI_EXTRACT, 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 Cortex LLM privileges para mais detalhes.
Considerações sobre custo¶
A função AI_EXTRACT do Cortex incorre em custos de computação com base no número de páginas por documento, nos tokens de prompts de entrada e nos tokens de saída processados.
Para formatos de arquivo paginados (PDF, DOCX, TIF, TIFF), cada página é contada como 970 tokens.
Para formatos de arquivo de imagem (JPEG, JPG, PNG), cada arquivo de imagem individual é cobrado como uma página e contado como 970 tokens
O Snowflake recomenda a execução de consultas que chamem a função AI_EXTRACT do Cortex em um warehouse menor (até o tamanho MEDIUM). Warehouses maiores não aumentam o desempenho.
Linguagens compatíveis¶
A AI_EXTRACT oferece suporte aos seguintes idiomas:
Árabe
Bengali
Birmanês
Cebuano
Chinês
Tcheco
Holandês
Inglês
Francês
Alemão
Hebraico
Hindi
Indonésio
Italiano
Japonês
Quemer
Coreano
Lao
Malaio
Persa
Polonês
Português
Russo
Espanhol
Tagalo
Tailandês
Turco
Urdu
Vietnamita
Disponibilidade regional¶
O suporte para AI_EXTRACT está disponível para contas nas seguintes regiões Snowflake:
AWS |
Azure |
|---|---|
US West 2 |
East US 2 |
US East 1 |
West US 2 |
US CA Central 1 |
South Central US |
Europe Central 1 |
North Europe |
Europe West 1 |
West Europe |
SA East 1 |
Central India |
AP Northeast 1 |
Japan East |
AP Southeast 2 |
Southeast Asia Australia East |
A AI_EXTRACT tem suporte entre regiões. Para obter informações sobre como habilitar o suporte entre regiões do Cortex AI, consulte Inferência entre regiões.
Condições de erro¶
O Snowflake Cortex AI_EXTRACT pode produzir as seguintes mensagens de erro:
Mensagem |
Explicação |
|---|---|
|
Ocorreu um erro no sistema. Aguarde e tente novamente. Se o problema persistir, entre em contato com o suporte Snowflake. |
|
O arquivo não foi encontrado. |
|
O arquivo não foi encontrado. |
|
O usuário atual não tem privilégios suficientes para acessar o arquivo. |
|
O documento não está em um formato compatível. |
|
O documento não está armazenado em um área de preparação com criptografia do lado do servidor. |
|
Nenhum parâmetro foi fornecido. |
|
Nenhum formato de resposta foi fornecido. |
|
O formato de resposta não é um JSON válido. |
|
O formato de resposta contém um ou mais nomes de recursos duplicados. |
|
O número de perguntas excede o limite permitido. |
|
O documento excede o limite de 125 páginas. |
|
A entrada de imagem ou uma página de documento convertida é maior do que as dimensões permitidas. |
|
A página é maior do que as dimensões permitidas. |
|
O documento tem mais de 100 MB. |
Avisos legais¶
A classificação dos dados de entradas e saídas é definido na tabela a seguir.
Classificação de dados de entrada |
Classificação de dados de saída |
Designação |
|---|---|---|
Usage Data |
Customer Data |
As funções disponíveis ao público em geral são recursos de AI cobertos. As funções em versão preliminar são recursos de AI em versão preliminar. [1] |
Para obter informações adicionais, consulte AI e ML Snowflake.