Analisi delle immagini capacità cognitive

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:
  • Adulto - rileva se l'immagine è pornografica (mostra nudità o un atto sessuale), sanguinosa (mostra violenza estrema o sangue) o allusiva (nota anche come contenuto piccante).
  • Marche - rileva vari marchi all'interno di un'immagine, inclusa la posizione approssimativa.
  • categorie - categorizza il contenuto dell'immagine secondo una tassonomia definita da Foundry Tools.
  • Descrizione - descrive il contenuto dell'immagine con una frase completa nelle lingue supportate.
  • Volti - Rileva se ci sono volti presenti. Se presente, genera coordinate, genere ed età.
  • Oggetti - rileva vari oggetti all'interno di un'immagine, inclusa la posizione approssimativa.
  • Tag - Etichetta l'immagine con una lista dettagliata di parole correlate al contenuto dell'immagine.
I nomi delle caratteristiche visive sono sensibili alla maiuscola. Sia le caratteristiche visive a colore che a immagine sono state deprecate, ma puoi accedere a questa funzionalità tramite una skill personalizzata. Consulta la documentazione Azure Vision Image Analysis su quali caratteristiche visive sono supportate con ciascun defaultLanguageCode.
details Un array di stringhe che indicano quali dettagli specifici del dominio restituire. I tipi validi di caratteristiche visive includono:
  • Celebrità - Identifica le celebrità se rilevate nell'immagine.
  • Punti di riferimento - identifica i punti di riferimento se rilevati nell'immagine.

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
               }
            ]

See also