Aptitud cognitiva de análisis de imágenesImage Analysis cognitive skill

La aptitud de Análisis de imágenes extrae un amplio conjunto de características visuales en función del contenido de la imagen.The Image Analysis skill extracts a rich set of visual features based on the image content. Por ejemplo, puede generar una leyenda a partir de una imagen, generar etiquetas o identificar celebridades y lugares de referencia.For example, you can generate a caption from an image, generate tags, or identify celebrities and landmarks. Esta aptitud utiliza los modelos de aprendizaje automático proporcionados por Computer Vision en Cognitive Services.This skill uses the machine learning models provided by Computer Vision in Cognitive Services.

Nota

Los volúmenes pequeños (menos de 20 transacciones) se pueden ejecutar gratis en Búsqueda cognitiva de Azure, pero las cargas de trabajo más grandes requieren la asociación de un recurso de Cognitive Services facturable.Small volumes (under 20 transactions) can be executed for free in Azure Cognitive Search, but larger workloads require attaching a billable Cognitive Services resource. Se acumulan cargos cuando se llama a las API de Cognitive Services y en la extracción de imágenes como parte de la fase de descifrado de documentos de Búsqueda cognitiva de Azure.Charges accrue when calling APIs in Cognitive Services, and for image extraction as part of the document-cracking stage in Azure Cognitive Search. No hay ningún cargo por la extracción de texto de documentos.There are no charges for text extraction from documents.

La ejecución de aptitudes integradas se cobra según los precios de pago por uso de Cognitive Services existentes.Execution of built-in skills is charged at the existing Cognitive Services pay-as-you go price. Los precios de la extracción de imágenes se describen en la página de precios de Búsqueda cognitiva de Azure.Image extraction pricing is described on the Azure Cognitive Search pricing page.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkillMicrosoft.Skills.Vision.ImageAnalysisSkill

Parámetros de las aptitudesSkill parameters

Los parámetros distinguen mayúsculas de minúsculas.Parameters are case-sensitive.

Nombre de parámetroParameter name DESCRIPCIÓNDescription
defaultLanguageCodedefaultLanguageCode Cadena que indica el idioma que se devolverá.A string indicating the language to return. Este servicio devuelve los resultados de reconocimiento en un idioma concreto.The service returns recognition results in a specified language. Si esta no se especifica este parámetro, se usa el valor predeterminado "en".If this parameter is not specified, the default value is "en".

Estos son los idiomas admitidos:Supported languages are:
en: inglés (predeterminado)en - English (default)
zh: chino simplificadozh - Simplified Chinese
visualFeaturesvisualFeatures Matriz de cadenas que indica los tipos de características visual que se devolverán.An array of strings indicating the visual feature types to return. Los tipos de características visuales válidos incluyen:Valid visual feature types include:
  • categories: clasifica el contenido de la imagen según una taxonomía definida en la documentación de Computer Vision de Cognitive Services.categories - categorizes image content according to a taxonomy defined in the Cognitive Services Computer Vision documentation.
  • Etiquetas: etiquetas de la imagen con una lista detallada de palabras relacionadas con el contenido de la imagen.tags - tags the image with a detailed list of words related to the image content.
  • description: describe el contenido de la imagen con una oración completa en inglés.description - describes the image content with a complete English sentence.
  • faces: detecta si hay caras presentes.faces - detects if faces are present. Si hay caras, indica las coordenadas, el sexo y la edad.If present, generates coordinates, gender, and age.
  • ImageType: detecta si la imagen está prediseñada o si es un dibujo lineal.imageType - detects if image is clip art or a line drawing.
  • color: determina el color de énfasis, el color dominante y si la imagen está en blanco y negro.color - determines the accent color, dominant color, and whether an image is black&white.
  • adult: detecta si la imagen es de naturaleza pornográfica (representa desnudez o un acto sexual).adult - detects if the image is pornographic in nature (depicts nudity or a sex act). También se detecta contenido provocativo.Sexually suggestive content is also detected.
Los nombres de las características visuales distinguen entre mayúsculas y minúsculas.Names of visual features are case-sensitive.
detailsdetails Matriz de cadenas que indica qué detalles específicos del dominio que se devolverán.An array of strings indicating which domain-specific details to return. Los tipos de características visuales válidos incluyen:Valid visual feature types include:
  • celebrities: identifica celebridades si se detectan en la imagen.celebrities - identifies celebrities if detected in the image.
  • landmarks: identifica puntos de referencia si se detectan en la imagen.landmarks - identifies landmarks if detected in the image.

Entradas de la aptitudSkill inputs

Nombre de entradaInput name DESCRIPCIÓNDescription
imagenimage Tipo complejo.Complex Type. Actualmente, solo funciona con el campo "/document/normalized_images", que crea el indexador de Azure Blob cuando imageAction está establecido en un valor diferente a none.Currently only works with "/document/normalized_images" field, produced by the Azure Blob indexer when imageAction is set to a value other than none. Para obtener más información, consulte este ejemplo.See the sample for more information.

Ejemplo de definición de la aptitudSample skill definition

        {
            "description": "Extract image analysis.",
            "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
            "context": "/document/normalized_images/*",
            "defaultLanguageCode": "en",
            "visualFeatures": [
                "Tags",
                "Categories",
                "Description",
                "Faces"
            ],
            "inputs": [
                {
                    "name": "image",
                    "source": "/document/normalized_images/*"
                }
            ],
            "outputs": [
                {
                    "name": "categories"
                },
                {
                    "name": "tags"
                },
                {
                    "name": "description"
                },
                {
                    "name": "faces"
                }
            ]
        }

Índice de ejemplo (solo para los campos de categorías, descripción, etiquetas y caras)Sample index (for only the categories, description, faces and tags fields)

{
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "searchable": true,
            "filterable": false,
            "facetable": false,
            "sortable": true
        },
        {
            "name": "blob_uri",
            "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": "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": "x",
                            "type": "Edm.Int32",
                            "searchable": false,
                            "filterable": false,
                            "facetable": false
                        },
                        {
                            "name": "y",
                            "type": "Edm.Int32",
                            "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": "confidence",
                    "type": "Edm.Double",
                    "searchable": false,
                    "filterable": false,
                    "facetable": false
                }
            ]
        }
    ]
}

Asignación de campos de salida de ejemplo (para el índice anterior)Sample output field mapping (for the above index)

    "outputFieldMappings": [
        {
            "sourceFieldName": "/document/normalized_images/*/categories/*",
            "targetFieldName": "categories"
        },
        {
            "sourceFieldName": "/document/normalized_images/*/tags/*",
            "targetFieldName": "tags"
        },
        {
            "sourceFieldName": "/document/normalized_images/*/description",
            "targetFieldName": "description"
        },
        {
            "sourceFieldName": "/document/normalized_images/*/faces/*",
            "targetFieldName": "faces"
        }

Variación en las asignaciones de campos de salida (propiedades anidadas)Variation on output field mappings (nested properties)

Puede definir asignaciones de campos de salida para propiedades de nivel inferior, como puntos de referencia o celebridades.You can define output field mappings to lower-level properties, such as just landmarks or celebrities. En este caso, asegúrese de que el esquema de índice tiene un campo para contener puntos de referencia específicamente.In this case, make sure your index schema has a field to contain landmarks specifically.

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

Entrada de ejemploSample 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
                }
            }
        }
    ]
}

Salida de ejemploSample 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": [
                                {
                                    "name": "Forbidden City",
                                    "confidence": 0.9978346
                                }
                            ]
                        }
                    }
                ],
                "adult": {
                    "isAdultContent": false,
                    "isRacyContent": false,
                    "adultScore": 0.0934349000453949,
                    "racyScore": 0.068613491952419281
                },
                "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
                        }
                    ]
                },
                "requestId": "0dbec5ad-a3d3-4f7e-96b4-dfd57efe967d",
                "metadata": {
                    "width": 1500,
                    "height": 1000,
                    "format": "Jpeg"
                },
                "faces": [
                    {
                        "age": 44,
                        "gender": "Male",
                        "faceBoundingBox": [
                            {
                                "x": 1601,
                                "y": 395
                            },
                            {
                                "x": 1653,
                                "y": 395
                            },
                            {
                                "x": 1653,
                                "y": 447
                            },
                            {
                                "x": 1601,
                                "y": 447
                            }
                        ]
                    }
                ],
                "color": {
                    "dominantColorForeground": "Brown",
                    "dominantColorBackground": "Brown",
                    "dominantColors": [
                        "Brown",
                        "Black"
                    ],
                    "accentColor": "873B59",
                    "isBwImg": false
                    },
                "imageType": {
                    "clipArtType": 0,
                    "lineDrawingType": 0
                }
            }
        }
    ]
}

Casos de errorError cases

En los siguientes casos de error, no se extrae ningún elemento.In the following error cases, no elements are extracted.

Código de errorError Code DESCRIPCIÓNDescription
NotSupportedLanguageNotSupportedLanguage El idioma proporcionado no se admite.The language provided is not supported.
InvalidImageUrlInvalidImageUrl La dirección URL de la imagen tiene un formato que no se admite o no es accesible.Image URL is badly formatted or not accessible.
InvalidImageFormatInvalidImageFormat Los datos de entrada no son una imagen válida.Input data is not a valid image.
InvalidImageSizeInvalidImageSize La imagen de entrada es demasiado grande.Input image is too large.
NotSupportedVisualFeatureNotSupportedVisualFeature El tipo de característica especificado no es válido.Specified feature type is not valid.
NotSupportedImageNotSupportedImage La imagen no se admite como, por ejemplo, pornografía infantil.Unsupported image, for example, child pornography.
InvalidDetailsInvalidDetails El modelo específico del dominio no se admite.Unsupported domain-specific model.

Si recibe el error similar a "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", compruebe la ruta de acceso.If you get the error similar to "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", check the path. Tanto las celebridades como los puntos de referencia son propiedades en detail.Both celebrities and landmarks are properties under detail.

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

Otras referenciasSee also