Análisis de imágenes Capacidad cognitiva

La habilidad de Análisis de Imágenes extrae un conjunto completo de características visuales basadas en el contenido de la imagen. Por ejemplo, puedes generar un pie de foto a partir de una imagen, generar etiquetas o identificar celebridades y monumentos. Este artículo es la documentación de referencia para la habilidad de Análisis de Imágenes . Consulta Extraer texto e información de imágenes para instrucciones de uso.

Esta habilidad utiliza los modelos de aprendizaje automático proporcionados por Azure Vision en Foundry Tools. El análisis de imágenes funciona sobre imágenes que cumplen los siguientes requisitos:

  • La imagen debe presentarse en formato JPEG, PNG, GIF o BMP
  • El tamaño de archivo de la imagen debe ser inferior a 4 megabytes (MB)
  • Las dimensiones de la imagen deben ser mayores a 50 x 50 píxeles

Las fuentes de datos soportadas para OCR y análisis de imágenes son los blobs en Azure Blob Storage y Azure Data Lake Storage (ADLS) Gen2, y el contenido de imágenes en Microsoft OneLake. Las imágenes pueden ser archivos independientes o imágenes incrustadas en un PDF u otros archivos.

Esta habilidad se implementa utilizando la versión 3.2 de la API de Análisis de Imágenes de IA . Si tu solución requiere llamar a una versión más reciente de esa API de servicio (como la versión 4.0), considera implementarla a través de Web API skill o usa la habilidad de poder ImageAnalysisV4 power skill.

Note

Esta habilidad está vinculada a Foundry Tools y requiere un recurso facturable para transacciones que superen los 20 documentos por indexador al día. La ejecución de aptitudes integradas se cobra por el precio estándar de Las herramientas de foundry existentes.

Además, la extracción de imágenes es facturable por Búsqueda de Azure AI.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Skill parameters

Los parámetros distinguen mayúsculas de minúsculas.

Parameter name Description
defaultLanguageCode Una cadena que indica el idioma que debe devolver. El servicio devuelve resultados de reconocimiento en un lenguaje especificado. Si este parámetro no se especifica, el valor predeterminado es "en".

Los lenguajes soportados incluyen un subconjunto de lenguajes generalmente disponibles de Azure Vision. Cuando un lenguaje se introduce recientemente con estado de disponibilidad general en Azure Vision, se espera un retraso antes de que estén completamente integrados en esta habilidad.
visualFeatures Un conjunto de cadenas que indican los tipos de características visuales a devolver. Tipos de características visuales válidas incluyen:
  • Adulto - detecta si la imagen es pornográfica (muestra desnudez o un acto sexual), sangrienta (muestra violencia extrema o sangre) o sugerente (también conocida como contenido subido de tono).
  • Marcas - detecta varias marcas dentro de una imagen, incluyendo la ubicación aproximada.
  • categorías - categoriza el contenido de la imagen según una taxonomía definida por Foundry Tools.
  • Descripción - describe el contenido de la imagen con una oración completa en los idiomas compatibles.
  • Caras - detecta si hay rostros presentes. Si está presente, genera coordenadas, género y edad.
  • Objetos - Detecta varios objetos dentro de una imagen, incluida la ubicación aproximada.
  • Etiquetas - Etiqueta la imagen con una lista detallada de palabras relacionadas con el contenido de la imagen.
Los nombres de las características visuales son sensibles a mayúsculas y mayúsculas. Tanto las características visuales de color como de imageType han sido obsoletas, pero puedes acceder a esta funcionalidad mediante una habilidad personalizada. Consulte la documentación de Análisis de Imágenes Visuales Azure en qué características visuales se soportan cada defaultLanguageCode.
details Un array de cadenas que indican qué detalles específicos de dominio devolver. Tipos de características visuales válidas incluyen:
  • Celebridades - identifica a las celebridades si se detecta en la imagen.
  • Puntos de referencia - identifica los puntos de referencia si se detectan en la imagen.

Skill inputs

Input name Description
image Complex Type. Actualmente solo funciona con el campo "/document/normalized_images", producido por el indexador de blob de Azure cuando imageAction está asignado a un valor distinto de none.

Skill outputs

Output name Description
adult Output es un único objeto adulto de tipo complejo, que consiste en campos booleanos (isAdultContent, isGoryContent, isRacyContent) y puntuaciones de doble tipo (adultScore, goreScore, racyScore).
brands La salida es un array de objetos de marca , donde el objeto es un tipo complejo que consiste en name (cadena) y una confidence puntuación (doble). También devuelve a rectangle con cuatro coordenadas de caja delimitadora (x, y, w, h, en píxeles) que indican la ubicación dentro de la imagen. Para el rectángulo, x y y son la parte superior izquierda. En la parte inferior izquierda está x, y+h. Arriba a la derecha es x+w, y. En la parte inferior derecha está x+w, y+h.
categories Output es un array de objetos de categoría , donde cada objeto categoría es un tipo complejo que consiste en una name (cadena), score (doble) y opcional detail que contiene detalles de celebridades o puntos de referencia. Consulte la taxonomía de categorías para la lista completa de nombres de categorías. Un detalle es un tipo complejo anidado. Un detalle de celebridad consiste en un nombre, puntuación de confianza y un cuadro delimitador. Un detalle emblemático consiste en un nombre y una puntuación de confianza.
description Salida es un objeto de descripción único de tipo complejo, que consiste en listas de tags y caption (un array formado por Text (cadena) y confidence (doble)).
faces Tipo complejo que consiste en age, gender, y faceBoundingBox que tiene cuatro coordenadas de caja delimitadora (en píxeles) que indican la ubicación dentro de la imagen. Las coordenadas son top, left, width, height.
objects La salida es una matriz de objetos visuales de características. Cada objeto es de tipo complejo, compuesto por object (cadena), confidence (doble), rectangle (con cuatro coordenadas de caja delimitadora que indican la ubicación dentro de la imagen) y una parent que contiene un nombre de objeto y confianza .
tags Output es un array de objetos imageTag , donde un objeto tag es un tipo complejo formado por name (cadena), hint (cadena) y confidence (doble). La adición de una pista es rara. Solo se genera si una etiqueta es ambigua. Por ejemplo, una imagen etiquetada como "curling" podría tener un toque de "deportes" para indicar mejor su contenido.

Definición de habilidad de ejemplo

{
    "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"
        }
    ]
}

Sample index

Para objetos individuales (como adult y description), puedes estructurarlos en el índice como Collection(Edm.ComplexType) un para devolver adult y description exportar para todos ellos. Para más información sobre el mapeo de salidas a campos de índice, véase Aplanamiento de información de tipos complejos.

{
    "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
                }
            ]
        }
    ]
}

Mapeo de campo de salida de ejemplo

El campo objetivo puede ser un campo complejo o una colección. La definición del índice especifica cualquier subcampo.

"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"
    }

Variación en los mapeos de campo de salida (propiedades anidadas)

Puedes definir mapeos de campo de salida a propiedades de nivel inferior, como solo celebridades o puntos de referencia. En este caso, asegúrate de que tu esquema índice tenga un campo que contenga cada detalle específicamente.

"outputFieldMappings": [
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
        "targetFieldName": "celebrities"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
        "targetFieldName": "landmarks"
    }

Sample input

{
    "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
                }
            }
        }
    ]
}

Sample output

{
  "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
              }
           }
        ]
      }
    }
  ]
}

Error cases

En los siguientes casos de error, no se extraen elementos.

Error Code Description
NotSupportedLanguage El lenguaje proporcionado no está soportado.
InvalidImageUrl La URL de la imagen está mal formateada o no es accesible.
InvalidImageFormat Los datos de entrada no son una imagen válida.
InvalidImageSize La imagen de entrada es demasiado grande.
NotSupportedVisualFeature El tipo de característica especificado no es válido.
NotSupportedImage Imágenes sin respaldo, por ejemplo, pornografía infantil.
InvalidDetails Modelo específico de dominio no soportado.

Si te da un error similar al "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", revisa el camino. Tanto celebridades como monumentos son propiedades bajo detail.

"categories":[  
      {  
         "name":"building_",
         "score":0.97265625,
         "detail":{  
            "landmarks":[  
               {  
                  "name":"Forbidden City",
                  "confidence":0.92013400793075562
               }
            ]

See also