Condividi tramite


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:
  • adulto - rileva se l'immagine è pornografica (raffigura nudità o un atto sessuale), gory (raffigura violenza estrema o sangue) o evocativo (noto anche come contenuto racy).
  • marchi : rileva vari marchi all'interno di un'immagine, inclusa la posizione approssimativa.
  • categorie : classifica il contenuto delle immagini in base a una tassonomia definita dai servizi di intelligenza artificiale di Azure.
  • description : descrive il contenuto dell'immagine con una frase completa nelle lingue supportate.
  • faces : rileva se i visi sono presenti. Se presente, genera coordinate, sesso e età.
  • objects : rileva vari oggetti all'interno di un'immagine, inclusa la posizione approssimativa.
  • tag - contrassegna l'immagine con un elenco dettagliato delle parole correlate con il contenuto dell'immagine.
I nomi delle caratteristiche visive fanno distinzione tra maiuscole e minuscole. Sia le funzionalità visive color che imageType sono state deprecate, ma è possibile accedere a questa funzionalità tramite una competenza personalizzata. Vedere la documentazione sull'analisi delle immagini di Visione artificiale di Azure in cui sono supportate le funzionalità visive con ogni defaultLanguageCode.
details Matrice di stringhe che indica quali dettagli specifici del dominio restituire. I tipi di funzionalità di visualizzazione validi includono:
  • celebrità : identifica le celebrità se rilevate nell'immagine.
  • punti di riferimento: identifica i punti di riferimento se rilevati nell'immagine.

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

Vedi anche