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.
Note
Búsqueda de Azure AI está disponible a través del portal de Azure, las API REST y los SDK de Azure. También respalda Foundry IQ, la capa de conocimiento administrada que transforma el contenido empresarial en bases de conocimiento reutilizables y compatibles con permisos para agentes en el portal de Microsoft Foundry.
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 la solución requiere llamar a una versión más reciente de esa API de servicio, como la versión 4.0, considere la posibilidad de implementar a través de la aptitud Api web personalizada.
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
Parámetros de aptitud
Los parámetros distinguen mayúsculas de minúsculas.
| Nombre del parámetro | 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:
|
Entradas de habilidades
| Nombre de entrada | Description |
|---|---|
image |
Tipo complejo. 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. |
Resultados de habilidades
| Nombre de salida | 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"
}
]
}
Índice de ejemplo
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"
}
Entrada de ejemplo
{
"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 ejemplo
{
"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 error
En los siguientes casos de error, no se extraen elementos.
| Código de error | 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
}
]