Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Note
Wyszukiwanie AI platformy Azure jest dostępna za pośrednictwem portalu Azure, interfejsów API REST i Azure SDKs. Stanowi ona również podstawę IQ rozwiązania Foundry, zarządzanej warstwy wiedzy, która przekształca zawartość przedsiębiorstwa w bazy wiedzy wielokrotnego użytku, uwzględniające uprawnienia dla agentów w portalu Microsoft Foundry.
Umiejętność analizy obrazów wydobywa bogaty zestaw cech wizualnych na podstawie treści obrazu. Na przykład możesz wygenerować podpis na podstawie obrazu, wygenerować tagi lub zidentyfikować celebrytów i punkty orientacyjne. Ten artykuł jest dokumentacją referencyjną dla umiejętności analizy obrazów . Zobacz Extract text and information from images , aby uzyskać instrukcje użycia.
Ta umiejętność wykorzystuje modele uczenia maszynowego oferowane przez Azure Vision w Foundry Tools. Analiza obrazów pracuje na obrazach spełniających następujące wymagania:
- Obraz musi być prezentowany w formatach JPEG, PNG, GIF lub BMP
- Rozmiar pliku obrazu musi być mniejszy niż 4 megabajty (MB)
- Wymiary obrazu muszą przekraczać 50 x 50 pikseli
Obsługiwane źródła danych do analizy OCR i obrazów to bloby w Azure Blob Storage i Azure Data Lake Storage (ADLS) Gen2 oraz zawartość obrazów w Microsoft OneLake. Obrazy mogą być samodzielnymi plikami lub osadzonymi obrazami w formacie PDF lub innych plikach.
Ta umiejętność jest implementowana za pomocą API AI Image Analysis w wersji 3.2. Jeśli twoje rozwiązanie wymaga wywołania nowszej wersji tego interfejsu API usługi, takiej jak wersja 4.0, rozważ wdrożenie za pomocą umiejętności niestandardowego internetowego interfejsu API.
Note
Ta umiejętność jest powiązana z Foundry Tools i wymaga rozliczalnego zasobu dla transakcji przekraczających 20 dokumentów na indeksującego dziennie. Wykonanie wbudowanych umiejętności jest naliczane za istniejącą cenę standardową narzędzi Foundry Tools.
Dodatkowo, ekstrakcja obrazów jest rozliczalna przez Wyszukiwanie AI platformy Azure.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Parametry umiejętności
W parametrach jest rozróżniana wielkość liter.
| Nazwa parametru | Opis |
|---|---|
defaultLanguageCode |
Ciąg wskazujący język do zwrotu. Usługa zwraca rozpoznanie w określonym języku. Jeśli ten parametr nie jest określony, domyślną wartością jest "en". Obsługiwane języki obejmują podzbiór ogólnie dostępnych języków Azure Vision. Gdy język jest nowo wprowadzany do Azure Vision o statusie ogólnej dostępności, spodziewane jest opóźnienie, zanim zostanie w pełni zintegrowany z tą umiejętnością. |
visualFeatures |
Tablica ciągów znaków wskazujących typy cech wizualnych do zwrócenia. Ważne typy cech wizualnych obejmują:
defaultLanguageCode. |
details |
Tablica ciągów znaków wskazujących, które dane dane domenowe należy zwracać. Ważne typy cech wizualnych obejmują:
|
Dane wejściowe dla umiejętności
| Nazwa danych wejściowych | Opis |
|---|---|
image |
Typ złożony. Obecnie działa tylko z polem "/document/normalized_images", generowanym przez indeksator Azure blobów, gdy imageAction jest ustawione na wartość inną niż none. |
Dane wyjściowe umiejętności
| Nazwa danych wyjściowych | Opis |
|---|---|
adult |
Wyjściem jest pojedynczy dorosły obiekt typu zespolonego, składający się z pól boole'owych (isAdultContent, isGoryContent, ) isRacyContentoraz podwójnych wyników typu (adultScore, goreScore, ). racyScore |
brands |
Output to tablica obiektów marki , gdzie obiekt jest typem złożonym składającym się z name (string) i confidence wyniku (double). Zwraca także a rectangle z czterema współrzędnymi ograniczającymi (x, y, w, h, w pikselach) wskazującymi położenie wewnątrz obrazu. Dla prostokąta x i y są w lewym górnym rogu. W lewym xdolnym rogu , y+h. W prawym górnym rogu x+wjest , y. W prawym x+wdolnym rogu jest , y+h. |
categories |
Wyjście to tablica obiektów kategorii , gdzie każdy obiekt kategorii to typ złożony składający się z name (string), score (double) oraz opcjonalnie detail , zawierający szczegóły celebryty lub punktu orientacyjnego. Zobacz taksonomię kategorii , aby poznać pełną listę nazw kategorii. Detal to typ zagnieżdżonego złożonego. Szczegół celebryty składa się z imienia, oceny pewności siebie oraz ramki z ograniczeniem twarzy. Szczegół charakterystyczny składa się z imienia i oceny pewności. |
description |
Wyjście to pojedynczy obiekt opisu typu zespolonego, składający się z list tags i ( caption tablica składająca się z Text (string) oraz confidence (double)). |
faces |
Typ zespolony składający się z age, gender, i faceBoundingBox posiadający cztery współrzędne ramek ograniczających (w pikselach) wskazujące położenie wewnątrz obrazu. Współrzędne to top, left, width, . height |
objects |
Wyjście to tablica obiektów cech wizualnych. Każdy obiekt jest typem zespolonym, składającym się z object (string), confidence (double), rectangle (z czterema współrzędnymi ograniczającymi wskazującymi położenie wewnątrz obrazu) oraz a parent zawierającym nazwę obiektu i pewność . |
tags |
Wyjście to tablica obiektów imageTag , gdzie obiekt tag to typ złożony składający się z name (string), hint (string) oraz confidence (double). Dodanie wskazówki jest rzadkie. Generuje się tylko wtedy, gdy tag jest niejednoznaczny. Na przykład obraz oznaczony jako "curling" może zawierać nutę "sport", aby lepiej zaznaczyć jego treść. |
Przykładowa definicja umiejętności
{
"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"
}
]
}
Przykładowy indeks
Dla pojedynczych obiektów (takich jak adult i description), możesz je strukturyzować w indeksie jako Collection(Edm.ComplexType) a to return adult i description output dla wszystkich. Więcej informacji o mapowaniu wyników na pola indeksowe można znaleźć w artykule Spłaszczanie informacji z typów zespolonych.
{
"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
}
]
}
]
}
Mapowanie pola wyjściowego próbki
Pole docelowe może być złożonym polem lub zbiorem. Definicja indeksu określa dowolne podpola.
"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"
}
Warianty odwzorowań pól wyjściowych (właściwości zagnieżdżone)
Możesz zdefiniować mapowania pól wyjściowych do niższych obiektów, takich jak tylko celebryci czy punkty orientacyjne. W takim przypadku upewnij się, że schemat indeksu ma pole zawierające każdy szczegół konkretnie.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
"targetFieldName": "celebrities"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
"targetFieldName": "landmarks"
}
Przykładowe dane wejściowe
{
"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
}
}
}
]
}
Przykładowe dane wyjściowe
{
"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
}
}
]
}
}
]
}
Przypadki błędów
W poniższych przypadkach błędów nie są wyodrębniane żadne elementy.
| Kod błędu | Opis |
|---|---|
NotSupportedLanguage |
Podana sformułowanie nie jest wspierane. |
InvalidImageUrl |
URL obrazu jest źle sformatowany lub niedostępny. |
InvalidImageFormat |
Dane wejściowe nie są poprawnym obrazem. |
InvalidImageSize |
Obraz wejściowy jest za duży. |
NotSupportedVisualFeature |
Określony typ funkcji nie jest poprawny. |
NotSupportedImage |
Na przykład niepoparte obrazy, pornografia dziecięca. |
InvalidDetails |
Nieobsługiwany model specyficzny dla domeny. |
Jeśli pojawi się błąd podobny do "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", sprawdź ścieżkę. Zarówno celebryci, jak i zabytki należą do nieruchomości podlegających .detail
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]