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.
Note
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.
A habilidade de Análise de Imagem extrai um conjunto rico de recursos visuais com base no conteúdo da imagem. Por exemplo, você pode gerar uma legenda a partir de uma imagem, gerar tags ou identificar celebridades e pontos turísticos. Este artigo é a documentação de referência para a habilidade de Análise de Imagens . Veja Extrair texto e informações das imagens para instruções de uso.
Essa habilidade utiliza os modelos de aprendizado de máquina fornecidos pelo Azure Vision no Foundry Tools. A Análise de Imagens trabalha com imagens que atendem aos seguintes requisitos:
- A imagem deve ser apresentada em formato JPEG, PNG, GIF ou BMP
- O tamanho do arquivo da imagem deve ser menor que 4 megabytes (MB)
- As dimensões da imagem devem ser maiores que 50 x 50 pixels
Fontes de dados suportadas para OCR e análise de imagens são blobs no Armazenamento de Blobs do Azure e Azure Data Lake Storage (ADLS) Gen2, e conteúdo de imagens no Microsoft OneLake. Imagens podem ser arquivos independentes ou imagens incorporadas em PDF ou outros arquivos.
Essa habilidade é implementada usando a API de Análise de Imagens de IA versão 3.2. Se sua solução exigir a chamada de uma versão mais recente dessa API de serviço, como a versão 4.0, considere implementar por meio da habilidade de API Web Personalizada.
Note
Essa habilidade está vinculada ao Foundry Tools e requer um recurso faturável para transações que ultrapassem 20 documentos por indexador por dia. A execução de habilidades internas é cobrada pelo preço padrão das Ferramentas de Fundiária existentes.
Além disso, a extração de imagem é faturável por Pesquisa de IA do Azure .
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Parâmetros de habilidade
Os parâmetros diferenciam maiúsculas de minúsculas.
| Nome do parâmetro | Description |
|---|---|
defaultLanguageCode |
Uma string indicando o idioma a ser retornado. O serviço retorna resultados de reconhecimento em uma linguagem especificada. Se esse parâmetro não for especificado, o valor padrão é "en". Linguagens suportadas incluem um subconjunto de linguagens geralmente disponíveis do Azure Vision. Quando uma linguagem é recém-introduzida com status de disponibilidade geral no Azure Vision, há um atraso esperado até que ela seja totalmente integrada a essa habilidade. |
visualFeatures |
Um array de strings indicando os tipos de características visuais a serem retornadas. Tipos válidos de características visuais incluem:
defaultLanguageCode. |
details |
Um array de strings indicando quais detalhes específicos do domínio devolver. Tipos válidos de características visuais incluem:
|
Entradas de competências
| Nome do campo de entrada | Description |
|---|---|
image |
Tipo complexo. Atualmente só funciona com o campo "/document/normalized_images", produzido pelo indexador de blob Azure quando imageAction está definido para um valor diferente de none. |
Resultados de competências
| Nome do resultado | Description |
|---|---|
adult |
Output é um único objeto adulto de tipo complexo, composto por campos booleanos (isAdultContent, isGoryContent, isRacyContent) e pontuações do tipo duplo (adultScore, goreScore, racyScore). |
brands |
A saída é um array de objetos de marca , onde o objeto é um tipo complexo composto por name (string) e uma confidence pontuação (double). Também retorna a rectangle com quatro coordenadas de caixa delimitadora (x, y, w, h, em pixels) indicando a posição dentro da imagem. Para o retângulo, x e y são o canto superior esquerdo. No canto inferior esquerdo é x, y+h. Canto superior direito é x+w, y. No canto inferior direito está x+w, y+h. |
categories |
Output é um array de objetos categoria , onde cada objeto categoria é um tipo complexo composto por ( name string), score (double) e opcional detail que contém detalhes de celebridades ou pontos de referência. Veja a taxonomia das categorias para a lista completa dos nomes das categorias. Um detalhe é um tipo complexo aninhado. Um detalhe de celebridade consiste em nome, pontuação de confiança e caixa de delimitação facial. Um detalhe marco consiste em um nome e uma pontuação de confiança. |
description |
Saída é um único objeto de descrição de tipo complexo, consistindo em listas de tags e caption (um array composto por Text (string) e confidence (duplo)). |
faces |
Tipo complexo consistindo em age, gender, e faceBoundingBox com quatro coordenadas de caixa delimitadora (em pixels) indicando a posição dentro da imagem. As coordenadas são top, left, width, height. |
objects |
A saída é um conjunto de objetos de características visuais. Cada objeto é de um tipo complexo, consistindo em object (string), confidence (double), rectangle (com quatro coordenadas de caixa delimitadora indicando a posição dentro da imagem) e a parent que contém um nome de objeto e confiança . |
tags |
Output é um array de objetos imageTag , onde um objeto tag é um tipo complexo composto por name (string), hint (string) e confidence (double). A adição de uma dica é rara. Só é gerado se uma tag for ambígua. Por exemplo, uma imagem marcada como "curling" pode ter um toque de "esportes" para indicar melhor seu conteúdo. |
Definição de habilidade de exemplo
{
"description": "Extract image analysis.",
"@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": "en",
"visualFeatures": [
"adult",
"brands",
"categories",
"description",
"faces",
"objects",
"tags"
],
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "adult"
},
{
"name": "brands"
},
{
"name": "categories"
},
{
"name": "description"
},
{
"name": "faces"
},
{
"name": "objects"
},
{
"name": "tags"
}
]
}
Índice de exemplo
Para objetos individuais (como adult e description), você pode estruturá-los no índice como um Collection(Edm.ComplexType) para retornar adult e description sair para todos eles. Para mais informações sobre mapeamento de saídas para campos de índice, veja Achatamento de informações de tipos complexos.
{
"fields": [
{
"name": "metadata_storage_name",
"type": "Edm.String",
"key": true,
"searchable": true,
"filterable": false,
"facetable": false,
"sortable": true
},
{
"name": "metadata_storage_path",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false,
"sortable": true
},
{
"name": "content",
"type": "Edm.String",
"sortable": false,
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "adult",
"type": "Edm.ComplexType",
"fields": [
{
"name": "isAdultContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "isGoryContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "isRacyContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "adultScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "goreScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "racyScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "brands",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "rectangle",
"type": "Edm.ComplexType",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "w",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "h",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "categories",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "score",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "detail",
"type": "Edm.ComplexType",
"fields": [
{
"name": "celebrities",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "faceBoundingBox",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "landmarks",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
}
]
},
{
"name": "description",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "tags",
"type": "Collection(Edm.String)",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "captions",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "text",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "faces",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "age",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "gender",
"type": "Edm.String",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "faceBoundingBox",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "top",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "left",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "width",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "height",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "objects",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "object",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "rectangle",
"type": "Edm.ComplexType",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "w",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "h",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "parent",
"type": "Edm.ComplexType",
"fields": [
{
"name": "object",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "tags",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "hint",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
}
Mapeamento de campo de saída de exemplo
O campo alvo pode ser um campo complexo ou uma coleção. A definição de índice especifica quaisquer subcampos.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/adult",
"targetFieldName": "adult"
},
{
"sourceFieldName": "/document/normalized_images/*/brands/*",
"targetFieldName": "brands"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/*",
"targetFieldName": "categories"
},
{
"sourceFieldName": "/document/normalized_images/*/description",
"targetFieldName": "description"
},
{
"sourceFieldName": "/document/normalized_images/*/faces/*",
"targetFieldName": "faces"
},
{
"sourceFieldName": "/document/normalized_images/*/objects/*",
"targetFieldName": "objects"
},
{
"sourceFieldName": "/document/normalized_images/*/tags/*",
"targetFieldName": "tags"
}
Variação nos mapeamentos de campo de saída (propriedades aninhadas)
Você pode definir mapeamentos de campo de saída para propriedades de nível inferior, como apenas celebridades ou pontos de referência. Nesse caso, certifique-se de que seu esquema de índice tenha um campo contendo cada detalhe especificamente.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
"targetFieldName": "celebrities"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
"targetFieldName": "landmarks"
}
Entrada de exemplo
{
"values": [
{
"recordId": "1",
"data": {
"image": {
"data": "BASE64 ENCODED STRING OF A JPEG IMAGE",
"width": 500,
"height": 300,
"originalWidth": 5000,
"originalHeight": 3000,
"rotationFromOriginal": 90,
"contentOffset": 500,
"pageNumber": 2
}
}
}
]
}
Saída de exemplo
{
"values": [
{
"recordId": "1",
"data": {
"categories": [
{
"name": "abstract_",
"score": 0.00390625
},
{
"name": "people_",
"score": 0.83984375,
"detail": {
"celebrities": [
{
"name": "Satya Nadella",
"faceBoundingBox": [
{
"x": 273,
"y": 309
},
{
"x": 395,
"y": 309
},
{
"x": 395,
"y": 431
},
{
"x": 273,
"y": 431
}
],
"confidence": 0.999028444
}
],
"landmarks": [ ]
}
}
],
"adult": {
"isAdultContent": false,
"isRacyContent": false,
"isGoryContent": false,
"adultScore": 0.0934349000453949,
"racyScore": 0.068613491952419281,
"goreScore": 0.08928389008070282
},
"tags": [
{
"name": "person",
"confidence": 0.98979085683822632
},
{
"name": "man",
"confidence": 0.94493889808654785
},
{
"name": "outdoor",
"confidence": 0.938492476940155
},
{
"name": "window",
"confidence": 0.89513939619064331
}
],
"description": {
"tags": [
"person",
"man",
"outdoor",
"window",
"glasses"
],
"captions": [
{
"text": "Satya Nadella sitting on a bench",
"confidence": 0.48293603002174407
}
]
},
"faces": [
{
"age": 44,
"gender": "Male",
"faceBoundingBox": [
{
"x": 1601,
"y": 395
},
{
"x": 1653,
"y": 395
},
{
"x": 1653,
"y": 447
},
{
"x": 1601,
"y": 447
}
]
}
],
"objects": [
{
"rectangle": {
"x": 25,
"y": 43,
"w": 172,
"h": 140
},
"object": "person",
"confidence": 0.931
}
],
"brands":[
{
"name":"Microsoft",
"confidence": 0.903,
"rectangle":{
"x":20,
"y":97,
"w":62,
"h":52
}
}
]
}
}
]
}
Casos de erro
Nos casos de erro seguintes, nenhum elemento é extraído.
| Código de erro | Description |
|---|---|
NotSupportedLanguage |
O idioma fornecido não é suportado. |
InvalidImageUrl |
A URL da imagem está mal formatada ou não está acessível. |
InvalidImageFormat |
Os dados de entrada não são uma imagem válida. |
InvalidImageSize |
A imagem de entrada está grande demais. |
NotSupportedVisualFeature |
O tipo de recurso especificado não é válido. |
NotSupportedImage |
Imagem sem suporte, por exemplo, pornografia infantil. |
InvalidDetails |
Modelo específico de domínio não suportado. |
Se você receber um erro semelhante ao "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", verifique o caminho. Tanto celebridades quanto marcos são propriedades sob detail.
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]