Competenza cognitiva di Analisi delle immagini
La competenza di analisi delle immagini estrae una vasta gamma di caratteristiche visive in base al contenuto delle immagini. Ad esempio, si può generare una didascalia da un'immagine, generare tag o identificare personaggi famosi e luoghi di interesse. Questo articolo è la documentazione di riferimento per la competenza Analisi immagini. Per istruzioni sull'utilizzo, vedere Estrarre testo e informazioni dalle immagini .
Questa competenza usa i modelli di Machine Learning forniti da Visione artificiale di Azure nei servizi di intelligenza artificiale di Azure. L'analisi delle immagini funziona solo su immagini che soddisfano i requisiti seguenti:
- L'immagine deve essere presentata in formato JPEG, PNG, GIF o BMP
- Le dimensioni del file dell'immagine devono essere minori di 4 megabyte (MB)
- Le dimensioni dell'immagine devono essere superiori a 50 x 50 pixel
Le origini dati supportate per OCR e l'analisi delle immagini sono BLOB in Archiviazione BLOB di Azure e azure Data Lake Storage (ADLS) Gen2 e il contenuto delle immagini in OneLake. Le immagini possono essere file autonomi o immagini incorporate in un PDF o in altri file.
Questa competenza viene implementata usando l'API di analisi delle immagini di intelligenza artificiale versione 3.2. Se la soluzione richiede di chiamare una versione più recente dell'API del servizio (ad esempio la versione 4.0), valutare la possibilità di implementare tramite la competenza personalizzata dell'API Web.
Nota
Questa competenza è associata ai servizi di intelligenza artificiale di Azure e richiede una risorsa fatturabile per le transazioni che superano 20 documenti per indicizzatore al giorno. L'esecuzione delle competenze predefinite viene addebitata secondo gli attuali prezzi con pagamento in base al consumo dei Servizi di Azure AI.
Inoltre, l'estrazione di immagini è fatturabile da Azure AI Search.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Parametri della competenza
I parametri fanno distinzione tra maiuscole e minuscole.
Nome parametro | Descrizione |
---|---|
defaultLanguageCode |
Stringa che indica la lingua di restituzione. Il servizio restituisce i risultati di riconoscimento nella lingua specificata. Se questo parametro non è specificato, il valore predefinito è "en". I linguaggi supportati includono un subset di linguaggi disponibili a livello generale di Visione artificiale di Azure. Quando un linguaggio viene appena introdotto con lo stato di disponibilità generale nel servizio Visione artificiale, è previsto un ritardo prima che siano completamente integrati all'interno di questa competenza. |
visualFeatures |
Matrice di stringhe che indica i tipi di caratteristiche visive da restituire. I tipi di funzionalità di visualizzazione validi includono:
defaultLanguageCode . |
details |
Matrice di stringhe che indica quali dettagli specifici del dominio restituire. I tipi di funzionalità di visualizzazione validi includono:
|
Input competenze
Nome input | Descrizione |
---|---|
image |
Tipo complesso. Attualmente funziona solo con il campo "/document/normalized_images", prodotto dall'indicizzatore di BLOB di Azure quando imageAction è impostato su un valore diverso da none . |
Output competenze
Nome output | Descrizione |
---|---|
adult |
Output è un singolo oggetto per adulti di un tipo complesso, costituito da campi booleani (isAdultContent , isGoryContent , isRacyContent ) e punteggi di tipo doppio (adultScore , goreScore , racyScore ). |
brands |
L'output è una matrice di oggetti brand , in cui l'oggetto è un tipo complesso costituito da name (stringa) e un confidence punteggio (double). Restituisce inoltre un oggetto rectangle con quattro coordinate del rettangolo delimitatore (x , y , w , h , in pixel) che indica il posizionamento all'interno dell'immagine. Per il rettangolo x e y sono in alto a sinistra. In basso a sinistra è x , y+h . In alto a destra è x+w , y . In basso a destra è x+w , y+h . |
categories |
Output è una matrice di oggetti categoria , in cui ogni oggetto categoria è un tipo complesso costituito da una name (stringa), (double) score e facoltativa detail che contiene dettagli di celebrità o punti di riferimento. Per l'elenco completo dei nomi di categoria, vedere la tassonomia delle categorie. Un dettaglio è un tipo complesso annidato. Un dettaglio celebrità è costituito da un nome, un punteggio di attendibilità e un rettangolo di selezione del viso. Un dettaglio punto di riferimento è costituito da un nome e un punteggio di attendibilità. |
description |
Output è un singolo oggetto description di un tipo complesso, costituito da elenchi di tags e caption (matrice costituita da Text (stringa) e confidence (double)). |
faces |
Tipo complesso costituito da age , gender e faceBoundingBox con quattro coordinate del riquadro delimitatore (in pixel) che indicano la posizione all'interno dell'immagine. Le coordinate sono top , left , width , height . |
objects |
L'output è una matrice di oggetti funzione visiva. Ogni oggetto è un tipo complesso, costituito da object (stringa), (double), rectangle confidence (con quattro coordinate del rettangolo di delimitazione che indicano la posizione all'interno dell'immagine) e un oggetto che contiene un nome di oggetto e una parent confidenza. |
tags |
Output è una matrice di oggetti imageTag , in cui un oggetto tag è un tipo complesso costituito da name (stringa), (stringa) hint e confidence (double). L'aggiunta di un hint è rara. Viene generato solo se un tag è ambiguo. Ad esempio, un'immagine contrassegnata come "curling" potrebbe avere un suggerimento di "sport" per indicare meglio il suo contenuto. |
Definizione di competenza di esempio
{
"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"
}
]
}
Indice di esempio
Per i singoli oggetti , ad esempio adult
e description
, è possibile strutturarli nell'indice come oggetto Collection(Edm.ComplexType)
per restituire e restituire adult
l'output description
per tutti. Per altre informazioni sul mapping degli output ai campi di indice, vedere Flattening information from complex types .For more information about mapping outputs to index fields, see Flattening information from complex types.
{
"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
}
]
}
]
}
Mapping dei campi di output di esempio
Il campo di destinazione può essere un campo complesso o una raccolta. La definizione dell'indice specifica tutti i sottocampi.
"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"
}
Variazione dei mapping dei campi di output (proprietà annidate)
È possibile definire mapping dei campi di output a proprietà di livello inferiore, ad esempio solo celebrità o punti di riferimento. In questo caso, assicurarsi che lo schema dell'indice contenga un campo che contenga ogni dettaglio in modo specifico.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
"targetFieldName": "celebrities"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
"targetFieldName": "landmarks"
}
Input di esempio
{
"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
}
}
}
]
}
Output di esempio
{
"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
}
}
]
}
}
]
}
Casi di errore
Nei seguenti casi di errore, non viene estratto nessun elemento.
Codice di errore | Descrizione |
---|---|
NotSupportedLanguage |
La lingua fornita non è supportata. |
InvalidImageUrl |
L'URL dell'immagine è formattato in modo errato o non è accessibile. |
InvalidImageFormat |
I dati di input non sono un'immagine valida. |
InvalidImageSize |
L'immagine di input è troppo grande. |
NotSupportedVisualFeature |
Il tipo di funzionalità specificato non è valido. |
NotSupportedImage |
Immagine non supportata, ad esempio, contenuti pedopornografici. |
InvalidDetails |
Modello specifico del dominio non supportato. |
Se viene visualizzato l'errore simile a "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"
, controllare il percorso. Sia le celebrità che i luoghi di interesse sono proprietà in detail
.
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]