Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La competenza Analisi Immagini estrae un ricco insieme di caratteristiche visive basate sul contenuto dell'immagine. Ad esempio, puoi generare una didascalia da un'immagine, generare tag o identificare celebrità e luoghi di riferimento. Questo articolo è la documentazione di riferimento per la competenza Analisi delle Immagini . Vedi Estrae testo e informazioni dalle immagini per le istruzioni d'uso.
Questa competenza utilizza i modelli di machine learning forniti da Azure Vision in Foundry Tools. L'analisi delle immagini funziona su immagini che soddisfano i seguenti requisiti:
- L'immagine deve essere presentata in formato JPEG, PNG, GIF o BMP
- Le dimensioni del file dell'immagine devono essere inferiori a 4 megabyte (MB)
- Le dimensioni dell'immagine devono essere superiori a 50 x 50 pixel
Le fonti di dati supportate per OCR e analisi delle immagini sono i blob in Archiviazione BLOB di Azure e Azure Data Lake Storage (ADLS) Gen2, e i contenuti delle immagini in Microsoft OneLake. Le immagini possono essere file autonomi o immagini incorporate in un PDF o altri file.
Questa abilità è implementata utilizzando l'API AI Image Analysis versione 3.2. Se la tua soluzione richiede di chiamare una versione più recente di quell'API di servizio (come la versione 4.0), considera di implementare tramite Web API skill oppure usa la power skill ImageAnalysisV4.
Note
Questa competenza è vincolata a Foundry Tools e richiede una risorsa fatturabile per transazioni che superano i 20 documenti per indicizzatore al giorno. L'esecuzione di competenze predefinite viene addebitata al prezzo standard degli strumenti Foundry esistenti.
Inoltre, l'estrazione dell'immagine è fatturabile per Azure AI Search.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Skill parameters
I parametri fanno distinzione tra maiuscole e minuscole.
| Parameter name | Description |
|---|---|
defaultLanguageCode |
Una stringa che indica la lingua da restituire. Il servizio restituisce i risultati di riconoscimento in un linguaggio specificato. Se questo parametro non è specificato, il valore predefinito è "en". I linguaggi supportati includono un sottoinsieme di lingue generalmente disponibili di Azure Vision. Quando un linguaggio viene introdotto con stato di disponibilità generale in Azure Vision, ci sono ritardi previsti prima che vengano completamente integrati in questa competenza. |
visualFeatures |
Un array di stringhe che indicano i tipi di caratteristiche visive da restituire. I tipi validi di caratteristiche visive includono:
defaultLanguageCode. |
details |
Un array di stringhe che indicano quali dettagli specifici del dominio restituire. I tipi validi di caratteristiche visive includono:
|
Skill inputs
| Input name | Description |
|---|---|
image |
Complex Type. Attualmente funziona solo con il campo "/document/normalized_images", prodotto dal blob indexer Azure quando imageAction è impostato a un valore diverso da none. |
Skill outputs
| Output name | Description |
|---|---|
adult |
Output è un singolo oggetto adulto di tipo complesso, costituito da campi booleani (isAdultContent, isGoryContent, isRacyContent) e punteggi di tipo doppio (adultScore, goreScore, racyScore). |
brands |
L'output è un array di oggetti di marca , dove l'oggetto è un tipo complesso composto da name (stringa) e uno confidence score (doppio). Restituisce inoltre a rectangle con quattro coordinate di riquadro delimitatore (x, y, w, h, in pixel) che indicano la posizione 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 è un array di oggetti categoria , dove ogni oggetto categoria è un tipo complesso composto da una name (stringa), score (doppio), ed opzionale detail che contiene dettagli di celebrità o punti di riferimento. Vedi la tassonomia delle categorie per l'elenco completo dei nomi delle categorie. Un dettaglio è un tipo complesso annidato. Un dettaglio di celebrità consiste in un nome, un punteggio di fiducia e una casella di ripetizione del volto. Un dettaglio di riferimento consiste in un nome e un punteggio di fiducia. |
description |
Output è un singolo oggetto descrizione di tipo complesso, costituito da liste di tags e caption (un array composto da Text (stringa) e confidence (doppio)). |
faces |
Tipo complesso composto da age, gender, e faceBoundingBox con quattro coordinate di scatola delimitante (in pixel) che indicano la posizione all'interno dell'immagine. Le coordinate sono top, left, width, height. |
objects |
L'output è un array di oggetti di caratteristiche visive. Ogni oggetto è di tipo complesso, composto da object (stringa), confidence (doppio), rectangle (con quattro coordinate di riquadro che indicano la posizione all'interno dell'immagine) e un parent che contiene un nome e una fiducia dell'oggetto . |
tags |
Output è un array di oggetti imageTag , dove un oggetto tag è un tipo complesso composto da name (stringa), hint (stringa) e confidence (doppio). L'aggiunta di un indizio è rara. Viene generato solo se un tag è ambiguo. Ad esempio, un'immagine etichettata come "curling" potrebbe avere un accenno di "sport" per indicare meglio il contenuto. |
Definizione di abilità campione
{
"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
Per oggetti singoli (come adult e ), puoi strutturarli nell'indice come un Collection(Edm.ComplexType) to return adult e description output per descriptiontutti. Per maggiori informazioni sulla mappatura degli output ai campi indicizzati, vedi Appiattimento delle informazioni da tipi complessi.
{
"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
}
]
}
]
}
Mappatura del campo di output di esempio
Il campo target può essere un campo complesso o una collezione. La definizione dell'indice specifica qualsiasi sottocampo.
"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 delle mappature del campo di uscita (proprietà annidate)
Puoi definire mappature di campo di output a proprietà di livello inferiore, come solo celebrità o punti di riferimento. In questo caso, assicurati che lo schema dell'indice abbia un campo che contenga ogni dettaglio nello specifico.
"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
Nei seguenti casi di errore, nessun elemento viene estratto.
| Error Code | Description |
|---|---|
NotSupportedLanguage |
Il linguaggio fornito non è supportato. |
InvalidImageUrl |
L'URL dell'immagine è formattato male o non accessibile. |
InvalidImageFormat |
I dati di input non sono un'immagine valida. |
InvalidImageSize |
L'immagine di input è troppo grande. |
NotSupportedVisualFeature |
Il tipo di caratteristica specificato non è valido. |
NotSupportedImage |
Immagini non supportate, ad esempio, pornografia infantile. |
InvalidDetails |
Modello specifico di dominio non supportato. |
Se ricevi un errore simile a "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", controlla il percorso. Sia le celebrità che i punti di riferimento sono proprietà sotto detail.
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]