Gerar legendas para imagens noutra língua

Nota

O Pesquisa de IA do Azure está disponível através do portal Azure, APIs REST e SDKs do Azure. Também sustenta o Foundry IQ, a camada de conhecimento gerida que transforma conteúdos empresariais em bases de conhecimento reutilizáveis e conscientes de permissões para agentes no portal Microsoft Foundry.

Important

Estas funcionalidades e capacidades permitem a ligação a outros serviços da Microsoft e a serviços de terceiros. A utilização destes serviços está sujeita aos respetivos termos e pode resultar no processamento ou armazenamento de dados fora do limite de conformidade do Azure, bem como no fluxo de dados para o limite de conformidade do Azure.

É sua responsabilidade gerir se os seus dados irão fluir para além dos limites de conformidade e geográficos da sua organização e quaisquer implicações relacionadas, e garantir que as permissões, limites e aprovações apropriadas sejam providenciadas.

És responsável por rever e testar cuidadosamente as aplicações que constróis no contexto dos teus casos de uso específicos e por tomar todas as decisões e personalizações apropriadas. Isto inclui implementar as suas próprias mitigações de IA responsável, como metaprompts, filtros de conteúdo ou outros sistemas de segurança, e assegurar que as suas aplicações cumprem os padrões adequados de qualidade, fiabilidade, segurança e confiabilidade. Para mais informações, consulte a Nota de Transparência Pesquisa de IA do Azure.

Neste artigo, aprenda como gerar legendas usando enriquecimento por IA e um conjunto de competências. As imagens frequentemente contêm informações úteis que são relevantes em cenários de pesquisa. Pode vetorizar imagens para representar conteúdo visual no seu índice de pesquisa. Ou pode usar o enriquecimento e competências de IA para criar e extrair texto pesquisável a partir de imagens.

A competência GenAI Prompt pode gerar uma descrição de cada imagem na sua fonte de dados, e o indexador insere essa descrição num índice de pesquisa. Para visualizar as descrições, execute uma consulta que as inclua na resposta.

Pré-requisitos

Para trabalhar com conteúdo de imagem num conjunto de competências, precisa de:

  • Uma fonte de dados suportada. Recomendamos o Armazenamento do Azure.
  • Arquivos ou "blobs" contendo imagens.
  • Leia o acesso à fonte de dados suportada. Este artigo utiliza autenticação baseada em chaves, mas os indexadores também podem ligar-se usando a identidade do serviço de pesquisa e a autenticação do Microsoft Entra ID. Para controlo de acesso baseado em funções, atribua funções à fonte de dados para permitir o acesso de leitura pela identidade do serviço. Se estiver a testar numa máquina de desenvolvimento local, certifique-se de que também tem acesso de leitura na fonte de dados suportada.
  • Um indexador de pesquisa, configurado para ações de imagem.
  • Um conjunto de competências com a habilidade GenAI Prompt.
  • Um índice de pesquisa com campos para receber a saída de texto gerada, além de mapeamentos de campos de saída no indexador que estabelecem as associações.

Opcionalmente, pode definir projeções para aceitar resultados analisados por imagens num armazenamento de conhecimento para cenários de mineração de dados.

Configurar indexadores para processamento de imagem

Depois de configurados os ficheiros fonte, ative 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 a jusante. A normalização de imagem inclui as seguintes operações:

  • As imagens grandes são redimensionadas para uma altura e largura máximas para as tornar uniformes.
  • Para imagens que têm metadados que especificam a orientação, a rotação da imagem é ajustada para carregamento vertical.

Note que ativar imageAction (definir este parâmetro para diferente de none) terá um custo adicional pela extração de imagens de acordo com os preços de Pesquisa de IA do Azure.

  1. Crie ou atualize um indexador para definir as propriedades de configuração:

    {
      "parameters": {
        "configuration": {
          "dataToExtract": "contentAndMetadata",
          "parsingMode": "default",
          "imageAction": "generateNormalizedImages"
        }
      }
    }
    
  2. Definir dataToExtract para contentAndMetadata (obrigatório).

  3. Verifique se está definido parsingMode como padrão (obrigatório).

    Este parâmetro determina a granularidade dos documentos de pesquisa criados no índice. O modo padrão estabelece uma correspondência um-para-um para que um blob resulte num documento de pesquisa. Se os documentos forem grandes, ou se as competências exigirem blocos de texto mais pequenos, pode adicionar a competência Text Split, que subdivide um documento em paginação para fins de processamento. Mas para cenários de pesquisa, é necessário um blob por documento se o enriquecimento incluir processamento de imagem.

  4. Definir imageAction para ativar o nó normalized_images na árvore de enriquecimento (obrigatório):

    • generateNormalizedImages para gerar um conjunto de imagens normalizadas como parte da quebra de documentos.

    • generateNormalizedImagePerPage (aplica-se apenas ao PDF) para gerar um array de imagens normalizadas onde cada página do PDF é renderizada numa imagem de saída. Para ficheiros que não são PDF, o comportamento deste parâmetro é semelhante ao de se tivesse definido generateNormalizedImages. No entanto, a configuração generateNormalizedImagePerPage pode tornar a operação de indexação menos eficiente por design (especialmente para documentos grandes), uma vez que várias imagens teriam de ser geradas.

  5. Opcionalmente, ajuste a largura ou altura das imagens normalizadas geradas:

normalizedImageMaxWidth mede-se em píxeis. O padrão é 2.000. O valor máximo é 10.000.

normalizedImageMaxHeight mede-se em píxeis. O padrão é 2.000. O valor máximo é 10.000.

Sobre imagens normalizadas

Quando imageAction está definido para um valor diferente de nenhum, o novo normalized_images campo contém um array de imagens. Cada imagem é um tipo complexo que tem os seguintes membros:

Elemento de imagem Descrição
dados Sequência codificada em BASE64 da imagem normalizada em formato JPEG.
largura Largura da imagem normalizada em píxeis.
Altura Altura da imagem normalizada em pixels.
larguraOriginal A largura original da imagem antes da normalização.
original Altura A altura original da imagem antes da normalização.
rotaçãoDesdeOriginal Rotação anti-horária em graus que ocorreu para criar a imagem normalizada. Um valor entre 0 e 360 graus. Este passo lê metadados da imagem gerada por uma câmara ou scanner. Normalmente um múltiplo de 90 graus.
Posição do Conteúdo O deslocamento do carácter dentro do campo de conteúdo de onde a imagem foi extraída. Este campo é aplicável apenas a ficheiros com imagens incorporadas. O contentOffset para imagens extraídas de documentos PDF está sempre no final do texto na página onde foi extraído no documento. Isto significa que as imagens aparecem depois de todo o texto nessa página, independentemente da localização original da imagem na página.
Número da página Se a imagem foi extraída ou renderizada a partir de um PDF, este campo contém o número da página no PDF de onde foi extraída ou renderizada, começando por 1. Se a imagem não for de um PDF, este campo é 0.

Valor amostral 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
  }
]

Defina competências para processamento de imagens

Esta secção complementa os artigos de referência de competências fornecendo contexto para trabalhar com entradas, saídas e padrões de competências, no que diz respeito ao processamento de imagens.

  • Crie ou atualize um conjunto de competências para adicionar competências.

Depois de criada a estrutura básica do seu conjunto de competências e configurar o Foundry Tools, pode focar-se em cada competência individual de imagem, definir entradas e contexto de origem, e mapear as saídas para campos num índice ou numa loja de conhecimento.

Nota

Para um conjunto de competências que combina processamento de imagem com processamento de linguagem natural a jusante, veja REST Tutorial: Use REST e IA para gerar conteúdo pesquisável a partir de Azure blobs. Mostra como alimentar a saída de imagem de competências no reconhecimento de entidades e extração de palavras-chave.

Exemplos de entradas para processamento de imagem

Como referido, as imagens são extraídas durante a fissuração do documento e depois normalizadas como passo preliminar. As imagens normalizadas são as entradas para qualquer competência de processamento de imagem, e são sempre representadas numa árvore de documentos enriquecida de duas formas:

  • /document/normalized_images/* é para documentos que são processados na totalidade.
{
  "@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 de utilização de respostas de esquema JSON com entradas de texto

Este exemplo mostra como usar saídas estruturadas para modelos de linguagem. Esta capacidade é atualmente suportada principalmente por 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"
    }
  ]
}

Saídas de mapas para campos de pesquisa

O texto de saída é representado como nós numa árvore de documentos enriquecida internamente, e cada nó deve ser mapeado para campos num índice de pesquisa ou para projeções num repositório de conhecimento, para que o conteúdo fique disponível na sua aplicação.

Primeiro, use Criar ou Atualizar - Índice para adicionar campos e aceitar as saídas das competências.

No exemplo de coleção de campos seguinte:

  • content é conteúdo de blob.
  • metadata_storage_name contém o nome do ficheiro (definido retrievable como verdadeiro).
  • metadata_storage_path é o caminho único do blob e é a chave padrão do documento.
  • merged_content é o output do Text Merge (útil quando imagens estão incorporadas).
  • captioned_image é uma saída de competência e deve ser um campo de cadeia para capturar toda a saída do modelo de linguagem 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
  }
]

De seguida, use Update - Indexer para associar a saída do conjunto de habilidades (nós numa árvore de enriquecimento) a campos de indexação.

Documentos enriquecidos são internos. Para externalizar os nós numa árvore de documentos enriquecida, configure um mapeamento de campo de saída que especifique qual o campo índice que recebe o conteúdo do nó. Os dados enriquecidos são acedidos pela sua aplicação através de um campo de índice. O exemplo seguinte mostra um nó de texto (saída OCR) num documento enriquecido que é mapeado para um campo de texto num índice de pesquisa.

"outputFieldMappings": [
  {
    "sourceFieldName": "/document/normalized_images/*/captionedImage",
    "targetFieldName": "captioned_image"
  }
]

Execute o indexador para invocar a recuperação de documentos de origem, processamento de imagem através de legendas de modelos de linguagem e indexação.

Verificar resultados

Execute uma consulta ao índice para verificar os resultados do processamento de imagem. Use o Explorador de Pesquisa como cliente de pesquisa, ou qualquer ferramenta que envie pedidos HTTP. A consulta seguinte 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"
}