Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nota
Pesquisa de IA do Azure está disponível por meio do portal Azure, APIs REST e SDKs do Azure. Ele também sustenta o IQ do Foundry, a camada de conhecimento gerenciado que transforma o conteúdo da empresa em bases de conhecimento reutilizáveis e com reconhecimento de permissão para agentes no portal do Microsoft Foundry.
Importante
Esses recursos e funcionalidades dão suporte a conexões com outros serviços de serviços Microsoft e de terceiros. O uso desses serviços está sujeito aos respectivos termos e pode resultar em processamento ou armazenamento de dados fora do limite de conformidade Azure, bem como dados que fluem para o limite de conformidade Azure.
É sua responsabilidade gerenciar se os seus dados serão transferidos para fora dos limites geográficos e de conformidade da sua organização, bem como quaisquer implicações relacionadas, e garantir que as permissões, os limites e as aprovações apropriados estejam devidamente estabelecidos.
Você é responsável por examinar e testar cuidadosamente os aplicativos que cria no contexto de seus casos de uso específicos e tomar todas as decisões e personalizações apropriadas. Isso inclui implementar suas próprias mitigações de IA responsáveis, como metaprompts, filtros de conteúdo ou outros sistemas de segurança, e garantir que seus aplicativos atendam aos padrões adequados de qualidade, confiabilidade, segurança e confiabilidade. Para obter mais informações, consulte a Pesquisa de IA do Azure Nota de Transparência.
Neste artigo, saiba como gerar legendas usando o enriquecimento de IA e um conjunto de habilidades. As imagens geralmente contêm informações úteis relevantes em cenários de pesquisa. Você pode vetorizar imagens para representar o conteúdo visual no índice de pesquisa. Ou você pode usar o enriquecimento de IA e conjuntos de habilidades para criar e extrair texto pesquisável de imagens.
A funcionalidade de Prompt do GenAI pode gerar uma descrição de cada imagem na fonte de dados, e o indexador insere essa descrição em um índice de pesquisa. Para exibir as descrições, execute uma consulta que as inclua na resposta.
Pré-requisitos
Para trabalhar com o conteúdo da imagem em um conjunto de habilidades, você precisa:
- Uma fonte de dados com suporte. Recomendamos Armazenamento do Azure.
- Arquivos ou blobs que contêm imagens.
- Leia o acesso à fonte de dados com suporte. Este artigo usa a autenticação baseada em chave, mas os indexadores também podem se conectar usando a identidade do serviço de pesquisa e a autenticação Microsoft Entra ID. Para controle de acesso baseado em função, atribua funções na fonte de dados para permitir acesso de leitura pela identidade do serviço. Se você estiver testando em um computador de desenvolvimento local, verifique se você também tem acesso de leitura na fonte de dados com suporte.
- Um indexador de pesquisa, configurado para ações de imagem.
- Um conjunto de habilidades com a habilidade Prompt de GenAI.
- Um índice de pesquisa com campos para receber a saída de texto gerada, além de mapeamentos de campo de saída no indexador que estabelece as associações.
Opcionalmente, você pode definir projeções para aceitar a saída analisada por imagem em um repositório de conhecimento para cenários de mineração de dados.
Configurar indexadores para processamento de imagem
Depois que os arquivos de origem forem configurados, habilite a normalização da imagem definindo o imageAction parâmetro na configuração do indexador. A normalização da imagem ajuda a tornar as imagens mais uniformes para o processamento downstream. A normalização da imagem inclui as seguintes operações:
- Imagens grandes são redimensionadas para uma altura e largura máximas para torná-las uniformes.
- Para imagens que têm metadados que especificam orientação, a rotação de imagem é ajustada para carregamento vertical.
Observe que habilitar imageAction (definindo esse parâmetro como diferente de none) incorrerá em uma cobrança adicional para extração de imagem de acordo com a tabela de preços do Pesquisa de IA do Azure .
Crie ou atualize um indexador para definir as propriedades de configuração:
{ "parameters": { "configuration": { "dataToExtract": "contentAndMetadata", "parsingMode": "default", "imageAction": "generateNormalizedImages" } } }Definido
dataToExtractcomocontentAndMetadata(obrigatório).Verifique se o
parsingModeestá definido como padrão (obrigatório).Esse parâmetro determina a granularidade dos documentos de pesquisa criados no índice. O modo padrão configura uma correspondência um-para-um para que um blob resulte em um documento de pesquisa. Se os documentos forem grandes ou se as habilidades exigirem partes menores de texto, você poderá adicionar a habilidade de Divisão de Texto que subdivide um documento na paginação para fins de processamento. No entanto, para cenários de pesquisa, um blob por documento será necessário se o enriquecimento incluir o processamento de imagem.
Defina
imageActionpara habilitar o nónormalized_imagesem uma árvore de enriquecimento (obrigatório):generateNormalizedImagespara gerar um conjunto de imagens normalizadas como parte da decodificação de documento.generateNormalizedImagePerPage(aplica-se somente a PDF) para gerar uma matriz de imagens normalizadas em que cada página no PDF é renderizada em uma imagem de saída. Para arquivos não PDF, o comportamento desse parâmetro é semelhante a se você tivesse definidogenerateNormalizedImages. No entanto, a configuraçãogenerateNormalizedImagePerPagepode tornar a operação de indexação menos performante por design (especialmente para documentos grandes), pois várias imagens teriam que ser geradas.
Opcionalmente, ajuste a largura ou a altura das imagens normalizadas geradas:
normalizedImageMaxWidth é medido em pixels. O padrão é 2.000. O valor máximo é 10.000.
normalizedImageMaxHeight é medido em pixels. O padrão é 2.000. O valor máximo é 10.000.
Sobre imagens normalizadas
Quando imageAction é definido como um valor diferente de nenhum, o novo normalized_images campo contém uma matriz de imagens. Cada imagem é um tipo complexo que tem os seguintes membros:
| Membro de imagem | Descrição |
|---|---|
| dados | Cadeia codificada em Base64 da imagem normalizada no formato JPEG. |
| Largura | Largura da imagem normalizada em pixels. |
| Altura | Altura da imagem normalizada em pixels. |
| originalWidth | A largura original da imagem antes da normalização. |
| originalHeight | A altura original da imagem antes da normalização. |
| rotationFromOriginal (rotação a partir do original) | Rotação no sentido anti-horário em graus que ocorreu para criar a imagem normalizada. Um valor entre 0 graus e 360 graus. Esta etapa lê metadados da imagem gerada por uma câmera ou scanner. Normalmente um múltiplo de 90 graus. |
| contentOffset | O deslocamento de caractere dentro do campo de conteúdo do qual a imagem foi extraída. Esse campo só é aplicável para arquivos com imagens inseridas. O contentOffset para imagens extraídas de documentos PDF estão sempre no final do texto na página em que foi extraído no documento. Isso significa que as imagens aparecem após todo o texto nessa página, independentemente do local original da imagem na página. |
| número da página | Se a imagem tiver sido extraída ou renderizada de um PDF, esse campo conterá o número da página no PDF do qual foi extraída ou renderizada, começando por 1. Se a imagem não for de um PDF, esse campo será 0. |
Valor de exemplo de normalized_images:
[
{
"data": "BASE64 ENCODED STRING OF A JPEG IMAGE",
"width": 500,
"height": 300,
"originalWidth": 5000,
"originalHeight": 3000,
"rotationFromOriginal": 90,
"contentOffset": 500,
"pageNumber": 2
}
]
Definir conjuntos de habilidades para processamento de imagem
Esta seção complementa os artigos de referência de habilidade fornecendo contexto para trabalhar com entradas, saídas e padrões de habilidade, conforme eles se relacionam com o processamento de imagens.
- Crie ou atualize um conjunto de habilidades para adicionar habilidades.
Depois que a estrutura básica do conjunto de habilidades for criada e as Ferramentas Foundry estiverem configuradas, você poderá se concentrar em cada habilidade de imagem individual, definindo as entradas e o contexto de origem, além de mapear as saídas para campos em um índice ou repositório de conhecimento.
Nota
Para obter um exemplo de conjunto de habilidades que combina o processamento de imagem com o processamento de linguagem natural downstream, consulte REST Tutorial: Usar REST e IA para gerar conteúdo pesquisável de blobs Azure. Ele mostra como alimentar a saída de imagens de habilidades em reconhecimento de entidade e extração de frases-chave.
Entradas de exemplo para processamento de imagem
Conforme observado, as imagens são extraídas durante a quebra de documento e, em seguida, normalizadas como uma etapa preliminar. As imagens normalizadas são as entradas para qualquer habilidade de processamento de imagem e são sempre representadas em uma árvore de documentos enriquecida de uma das duas maneiras:
-
/document/normalized_images/*é para documentos que são processados inteiros.
{
"@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
"context": "/document/normalized_images/*",
"uri": "https://contoso.openai.azure.com/openai/deployments/contoso-gpt-4o/chat/completions?api-version=2025-01-01-preview",
"apiKey": "<YOUR-API-KEY here>",
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*/data"
},
{
"name": "systemMessage",
"source": "='You are a useful artificial intelligence assistant that helps people.'"
},
{
"name": "userMessage",
"source": "='Describe what you see in this image in 20 words or less in Spanish.'"
}
],
"outputs": [
{
"name": "response",
"targetName": "captionedImage"
}
]
}
Exemplo usando respostas de esquema JSON com entradas de texto
Este exemplo mostra como usar saídas estruturadas para modelos de linguagem. Atualmente, essa funcionalidade tem suporte principalmente em modelos de linguagem OpenAI, embora isso possa mudar no futuro.
{
"@odata.type": "#Microsoft.Skills.Custom.ChatCompletionSkill",
"context": "/document/content",
"uri": "https://contoso.openai.azure.com/openai/deployments/contoso-gpt-4o/chat/completions?api-version=2025-01-01-preview",
"apiKey": "<YOUR-API-KEY here>",
"inputs": [
{
"name": "systemMessage",
"source": "='You are a useful artificial intelligence assistant that helps people.'"
},
{
"name": "userMessage",
"source": "='How many languages are there in the world and what are they?'"
}
],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "structured_output",
"strict": true,
"schema": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"languages": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"total",
"languages"
],
"additionalProperties": false
}
}
},
"outputs": [
{
"name": "response",
"targetName": "responseJsonForLanguages"
}
]
}
Mapear resultados para campos de pesquisa
O texto de saída é representado como nós em uma árvore de documento enriquecido interna, e cada nó deve ser mapeado para campos em um índice de pesquisa ou para projeções em um repositório de conhecimento, para que o conteúdo fique disponível no seu aplicativo.
Primeiro, use Criar ou Atualizar – Índice para adicionar campos a fim de aceitar os outputs de habilidade.
No exemplo da coleção de campos a seguir:
-
contenté conteúdo de blob. -
metadata_storage_namecontém o nome do arquivo (definidoretrievablecomo true). -
metadata_storage_pathé o caminho exclusivo do blob e é a chave de documento padrão. -
merged_contenté a saída de Mesclagem de Texto (útil quando as imagens estão incorporadas). -
captioned_imageé uma saída de habilidade e deve ser um campo de cadeia de caracteres para capturar toda a saída do modelo de idioma no índice de pesquisa.
"fields": [
{
"name": "content",
"type": "Edm.String",
"filterable": false,
"retrievable": true,
"searchable": true,
"sortable": false
},
{
"name": "metadata_storage_name",
"type": "Edm.String",
"filterable": true,
"retrievable": true,
"searchable": true,
"sortable": false
},
{
"name": "metadata_storage_path",
"type": "Edm.String",
"filterable": false,
"key": true,
"retrievable": true,
"searchable": false,
"sortable": false
},
{
"name": "captioned_image",
"type": "Edm.String",
"filterable": false,
"retrievable": true,
"searchable": true,
"sortable": false
}
]
Em seguida, use Atualizar – Indexador para mapear a saída do conjunto de habilidades (nós em uma árvore de enriquecimento) para os campos do índice.
Documentos enriquecidos são internos. Para externalizar os nós em uma árvore de documentos sofisticados, configure um mapeamento de campo de saída que especifique o campo de índice que recebe o conteúdo do nó. Os dados enriquecidos são acessados pelo aplicativo por meio de um campo de índice. O exemplo a seguir mostra um nó de texto (saída OCR) em um documento enriquecido mapeado para um campo de texto em um índice de pesquisa.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/captionedImage",
"targetFieldName": "captioned_image"
}
]
Execute o indexador para recuperar documentos de origem, processar imagens utilizando legendas geradas por modelos de linguagem e realizar a indexação.
Verificar resultados
Execute uma consulta no índice para verificar os resultados do processamento de imagem. Use o Gerenciador de Pesquisa como um cliente de pesquisa ou qualquer ferramenta que envie solicitações HTTP. A consulta a seguir seleciona campos que contêm a saída do processamento de imagem.
POST /indexes/[index name]/docs/search?api-version=[api-version]
{
"search": "A cat in a picture",
"select": "metadata_storage_name, captioned_image"
}