Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
defaultLanguageCode. |
details |
Un array de cadenas que indican qué detalles específicos de dominio devolver. Tipos de características visuales válidas incluyen:
|
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
}
]