Megosztás a következőn keresztül:


Az Image Analysis 4.0 Analyze API meghívása

Ez a cikk bemutatja, hogyan hívhatja meg az Image Analysis 4.0 API-t a kép vizuális funkcióival kapcsolatos információk visszaadásához. Azt is bemutatja, hogyan elemezheti a visszaadott információkat.

Előfeltételek

Ez az útmutató feltételezi, hogy követte a rövid útmutatóban említett lépéseket. Ez a következőket jelenti:

Az ügyfél létrehozása és hitelesítése

A Képelemzési szolgáltatáson való hitelesítéshez a Computer Vision-kulcsra és a végpont URL-címére van szükség. Ez az útmutató feltételezi, hogy definiálta a környezeti változókat VISION_KEY VISION_ENDPOINT , valamint a kulcsot és a végpontot.

Fontos

HA API-kulcsot használ, biztonságosan tárolja valahol máshol, például az Azure Key Vaultban. Ne foglalja bele közvetlenül az API-kulcsot a kódba, és soha ne tegye közzé nyilvánosan.

Az AI-szolgáltatások biztonságáról további információt az Azure AI-szolgáltatásokhoz érkező kérelmek hitelesítése című témakörben talál.

Először hozzon létre egy ImageAnalysisClient objektumot. Példa:

string endpoint = Environment.GetEnvironmentVariable("VISION_ENDPOINT");
string key = Environment.GetEnvironmentVariable("VISION_KEY");

// Create an Image Analysis client.
ImageAnalysisClient client = new ImageAnalysisClient(
    new Uri(endpoint),
    new AzureKeyCredential(key));

Jelölje ki az elemezni kívánt képet

A rendszerképet úgy választhatja ki, hogy megad egy nyilvánosan elérhető kép URL-címét, vagy bináris adatokat ad át az SDK-nak. Tekintse meg a támogatott képformátumokra vonatkozó képkövetelményeket .

Kép URL-címe

Hozzon létre egy Uri-objektumot az elemezni kívánt képhez.

Uri imageURL = new Uri("https://aka.ms/azsdk/image-analysis/sample.jpg");

Képpuffer

Azt is megteheti, hogy egy BinaryData-objektumon keresztül továbbítja a képadatokat az SDK-nak . Olvasson például egy elemezni kívánt helyi képfájlból.

using FileStream stream = new FileStream("sample.jpg", FileMode.Open);
BinaryData imageData = BinaryData.FromStream(stream);

Vizuális funkciók kiválasztása

Az Analysis 4.0 API hozzáférést biztosít a szolgáltatás képelemzési funkcióihoz. Válassza ki, hogy a saját használati esete alapján mely műveleteket végezze el. Az egyes funkciók leírását az áttekintésben tekintheti meg. Az ebben a szakaszban szereplő példa az összes elérhető vizualizációs funkciót hozzáadja, de a gyakorlati használathoz valószínűleg kevesebbre van szükség.

Fontos

A vizualizációs funkciók Captions és DenseCaptions csak bizonyos Azure-régiókban támogatottak: lásd : Régió rendelkezésre állása

VisualFeatures visualFeatures =
    VisualFeatures.Caption |
    VisualFeatures.DenseCaptions |
    VisualFeatures.Objects |
    VisualFeatures.Read |
    VisualFeatures.Tags |
    VisualFeatures.People |
    VisualFeatures.SmartCrops;

Elemzési beállítások kiválasztása

Az ImageAnalysisOptions objektummal különböző beállításokat adhat meg az Analyze Image API-híváshoz.

  • Nyelv: Megadhatja a visszaadott adatok nyelvét. A nyelv nem kötelező, az alapértelmezett angol. A támogatott nyelvi kódok listáját és az egyes nyelvekhez támogatott vizualizációs funkciókat a Nyelvi támogatás című témakörben találja.
  • Nemek közötti semleges feliratok: Ha feliratokat vagy sűrű feliratokat nyer ki (VisualFeatures.Caption vagy VisualFeatures.DenseCaptions használatával), kérheti a nemek közötti semleges feliratok használatát. A nemek közötti semleges feliratok megadása nem kötelező, az alapértelmezett pedig a nem szerinti feliratok. Ha például a nemek közötti semleges feliratokat választja, az olyan kifejezések, mint a nő vagy a férfi, személy, a fiú vagy a lány helyébe pedig a gyermek lép.
  • Körülvágási méretarány: Az oldalarány kiszámítása a célterület szélességének a magassággal való osztásával történik. A támogatott értékek 0,75-től 1,8-ra (beleértve) vannak. A tulajdonság beállítása csak akkor releváns, ha a VisualFeatures.SmartCrops a vizualizációs funkciólista részeként lett kiválasztva. Ha a VisualFeatures.SmartCrops lehetőséget választja, de nem ad meg méretarányokat, a szolgáltatás egyetlen körülvágási javaslatot ad vissza, amelynek méretaránya illeszkedik. Ebben az esetben a méretarány 0,5 és 2,0 között van (beleértve a különbséget).
ImageAnalysisOptions options = new ImageAnalysisOptions { 
    GenderNeutralCaption = true,
    Language = "en",
    SmartCropsAspectRatios = new float[] { 0.9F, 1.33F }};

Az Analyze API meghívása

Ez a szakasz bemutatja, hogyan kezdeményezhet elemzési hívást a szolgáltatáshoz.

Hívja meg az Elemzés metódust az ImageAnalysisClient objektumon az itt látható módon. A hívás szinkron, és letiltja a végrehajtást, amíg a szolgáltatás vissza nem adja az eredményeket vagy hiba történt. Másik lehetőségként meghívhatja a nem blokkoló AnalyzeAsync metódust.

Használja a fenti szakaszokban létrehozott bemeneti objektumokat. Ha URL-cím helyett képpufferből szeretne elemezni, cserélje le imageURL a metódushívást a imageData változóra.

ImageAnalysisResult result = client.Analyze(
    imageURL,
    visualFeatures,
    options);

Eredmények lekérése a szolgáltatásból

Az alábbi kód bemutatja, hogyan elemezheti a különböző elemzési műveletek eredményeit.

Console.WriteLine("Image analysis results:");

// Print caption results to the console
Console.WriteLine(" Caption:");
Console.WriteLine($"   '{result.Caption.Text}', Confidence {result.Caption.Confidence:F4}");

// Print dense caption results to the console
Console.WriteLine(" Dense Captions:");
foreach (DenseCaption denseCaption in result.DenseCaptions.Values)
{
    Console.WriteLine($"   '{denseCaption.Text}', Confidence {denseCaption.Confidence:F4}, Bounding box {denseCaption.BoundingBox}");
}

// Print object detection results to the console
Console.WriteLine(" Objects:");
foreach (DetectedObject detectedObject in result.Objects.Values)
{
    Console.WriteLine($"   '{detectedObject.Tags.First().Name}', Bounding box {detectedObject.BoundingBox.ToString()}");
}

// Print text (OCR) analysis results to the console
Console.WriteLine(" Read:");
foreach (DetectedTextBlock block in result.Read.Blocks)
    foreach (DetectedTextLine line in block.Lines)
    {
        Console.WriteLine($"   Line: '{line.Text}', Bounding Polygon: [{string.Join(" ", line.BoundingPolygon)}]");
        foreach (DetectedTextWord word in line.Words)
        {
            Console.WriteLine($"     Word: '{word.Text}', Confidence {word.Confidence.ToString("#.####")}, Bounding Polygon: [{string.Join(" ", word.BoundingPolygon)}]");
        }
    }

// Print tags results to the console
Console.WriteLine(" Tags:");
foreach (DetectedTag tag in result.Tags.Values)
{
    Console.WriteLine($"   '{tag.Name}', Confidence {tag.Confidence:F4}");
}

// Print people detection results to the console
Console.WriteLine(" People:");
foreach (DetectedPerson person in result.People.Values)
{
    Console.WriteLine($"   Person: Bounding box {person.BoundingBox.ToString()}, Confidence {person.Confidence:F4}");
}

// Print smart-crops analysis results to the console
Console.WriteLine(" SmartCrops:");
foreach (CropRegion cropRegion in result.SmartCrops.Values)
{
    Console.WriteLine($"   Aspect ratio: {cropRegion.AspectRatio}, Bounding box: {cropRegion.BoundingBox}");
}

// Print metadata
Console.WriteLine(" Metadata:");
Console.WriteLine($"   Model: {result.ModelVersion}");
Console.WriteLine($"   Image width: {result.Metadata.Width}");
Console.WriteLine($"   Image hight: {result.Metadata.Height}");

Hibaelhárítás

Kivételkezelés

Ha a .NET SDK-val kommunikál az Image Analysis szolgáltatással, a szolgáltatásból érkező minden olyan válasz, amely nem rendelkezik 200 (sikeres) állapotkóddal, kivételt eredményez. Ha például egy hibás URL-cím miatt nem elérhető képet próbál elemezni, a rendszer egy hibás kérést jelző állapotot 400 ad vissza, és egy megfelelő kivétel jelenik meg.

Az alábbi kódrészletben a hibák kezelése a kivétel elfogásával és a hibával kapcsolatos további információk megjelenítésével történik.

var imageUrl = new Uri("https://some-host-name.com/non-existing-image.jpg");

try
{
    var result = client.Analyze(imageUrl, VisualFeatures.Caption);
}
catch (RequestFailedException e)
{
    if (e.Status != 200)
    {
        Console.WriteLine("Error analyzing image.");
        Console.WriteLine($"HTTP status code {e.Status}: {e.Message}");
    }
    else
    {
        throw;
    }
}

Az SDK-naplózás engedélyezéséről itt tudhat meg többet.

Előfeltételek

Ez az útmutató feltételezi, hogy követte a rövid útmutató lépéseit. Ez a következőket jelenti:

Az ügyfél létrehozása és hitelesítése

A Képelemzési szolgáltatáson való hitelesítéshez a Computer Vision-kulcsra és a végpont URL-címére van szükség. Ez az útmutató feltételezi, hogy definiálta a környezeti változókat VISION_KEY VISION_ENDPOINT , valamint a kulcsot és a végpontot.

Fontos

HA API-kulcsot használ, biztonságosan tárolja valahol máshol, például az Azure Key Vaultban. Ne foglalja bele közvetlenül az API-kulcsot a kódba, és soha ne tegye közzé nyilvánosan.

Az AI-szolgáltatások biztonságáról további információt az Azure AI-szolgáltatásokhoz érkező kérelmek hitelesítése című témakörben talál.

Először hozzon létre egy ImageAnalysisClient objektumot az egyik konstruktor használatával. Példa:

client = ImageAnalysisClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(key)
)

Jelölje ki az elemezni kívánt képet

A rendszerképek kiválasztásához meg kell adnia egy nyilvánosan elérhető kép URL-címét, vagy beolvassa a képadatokat az SDK bemeneti pufferébe. Tekintse meg a támogatott képformátumokra vonatkozó képkövetelményeket .

Kép URL-címe

A következő minta kép URL-címét használhatja.

# Define image URL
image_url = "https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png"

Képpuffer

Azt is megteheti, hogy bájt objektumként adja át a képet. Olvasson például egy elemezni kívánt helyi képfájlból.

# Load image to analyze into a 'bytes' object
with open("sample.jpg", "rb") as f:
    image_data = f.read()

Vizuális funkciók kiválasztása

Az Analysis 4.0 API hozzáférést biztosít a szolgáltatás képelemzési funkcióihoz. Válassza ki, hogy a saját használati esete alapján mely műveleteket végezze el. Az egyes funkciók leírását az áttekintésben tekintheti meg. Az ebben a szakaszban szereplő példa az összes elérhető vizualizációs funkciót hozzáadja, de a gyakorlati használathoz valószínűleg kevesebbre van szükség.

Fontos

A vizualizációk feliratai és a DenseCaptions csak bizonyos Azure-régiókban támogatottak. Lásd a régió rendelkezésre állását.

visual_features =[
        VisualFeatures.TAGS,
        VisualFeatures.OBJECTS,
        VisualFeatures.CAPTION,
        VisualFeatures.DENSE_CAPTIONS,
        VisualFeatures.READ,
        VisualFeatures.SMART_CROPS,
        VisualFeatures.PEOPLE,
    ]

A analyze_from_url metódus meghívása lehetőségekkel

Az alábbi kód meghívja az ügyfél analyze_from_url metódusát a fent kiválasztott funkciókkal és az alább meghatározott egyéb lehetőségekkel. Ha URL-cím helyett képpufferből szeretne elemezni, hívja meg inkább a metódus elemzését , image_data=image_data első argumentumként.

# Analyze all visual features from an image stream. This will be a synchronously (blocking) call.
result = client.analyze_from_url(
    image_url=image_url,
    visual_features=visual_features,
    smart_crops_aspect_ratios=[0.9, 1.33],
    gender_neutral_caption=True,
    language="en"
)

Intelligens körülvágási oldalarányok kiválasztása

Az oldalarány kiszámítása a célterület szélességének és a magasságnak a hányadosával történik. A támogatott értékek 0,75-től 1,8-ra (beleértve) vannak. A tulajdonság beállítása csak akkor releváns, ha VisualFeatures.SMART_CROPS a vizualizációs funkciólista részeként lett kiválasztva. Ha VisualFeatures.SMART_CROPS választ, de nem ad meg méretarányokat, a szolgáltatás egy olyan körülvágási javaslatot ad vissza, amelynek méretaránya illeszkedik. Ebben az esetben a méretarány 0,5 és 2,0 között van (beleértve a különbséget).

Nemek közötti semleges feliratok kiválasztása

Ha feliratokat vagy sűrű feliratokat nyer ki (a VisualFeatures.CAPTION vagy VisualFeatures.DENSE_CAPTIONS használatával), kérheti a nemek közötti semleges feliratok használatát. A nemek közötti semleges feliratok megadása nem kötelező, az alapértelmezett pedig a nem szerinti feliratok. Ha például a nemek közötti semleges feliratokat választja, az olyan kifejezések, mint a nő vagy a férfi, személy, a fiú vagy a lány helyébe pedig a gyermek lép.

Nyelvek megadása

Megadhatja a visszaadott adatok nyelvét. A nyelv nem kötelező, az alapértelmezett angol. A támogatott nyelvi kódok listáját és az egyes nyelvekhez támogatott vizualizációs funkciókat a Nyelvi támogatás című témakörben találja.

Eredmények lekérése a szolgáltatásból

Az alábbi kód bemutatja, hogyan elemezheti az eredményeket a analyze_from_url vagy elemezheti a műveleteket.

# Print all analysis results to the console
print("Image analysis results:")

if result.caption is not None:
    print(" Caption:")
    print(f"   '{result.caption.text}', Confidence {result.caption.confidence:.4f}")

if result.dense_captions is not None:
    print(" Dense Captions:")
    for caption in result.dense_captions.list:
        print(f"   '{caption.text}', {caption.bounding_box}, Confidence: {caption.confidence:.4f}")

if result.read is not None:
    print(" Read:")
    for line in result.read.blocks[0].lines:
        print(f"   Line: '{line.text}', Bounding box {line.bounding_polygon}")
        for word in line.words:
            print(f"     Word: '{word.text}', Bounding polygon {word.bounding_polygon}, Confidence {word.confidence:.4f}")

if result.tags is not None:
    print(" Tags:")
    for tag in result.tags.list:
        print(f"   '{tag.name}', Confidence {tag.confidence:.4f}")

if result.objects is not None:
    print(" Objects:")
    for object in result.objects.list:
        print(f"   '{object.tags[0].name}', {object.bounding_box}, Confidence: {object.tags[0].confidence:.4f}")

if result.people is not None:
    print(" People:")
    for person in result.people.list:
        print(f"   {person.bounding_box}, Confidence {person.confidence:.4f}")

if result.smart_crops is not None:
    print(" Smart Cropping:")
    for smart_crop in result.smart_crops.list:
        print(f"   Aspect ratio {smart_crop.aspect_ratio}: Smart crop {smart_crop.bounding_box}")

print(f" Image height: {result.metadata.height}")
print(f" Image width: {result.metadata.width}")
print(f" Model version: {result.model_version}")

Hibaelhárítás

Kivételek

A analyze metódusok httpResponseError kivételt eredményeznek a szolgáltatás nem sikeres HTTP-állapotkód-válasza miatt. A kivétel status_code a HTTP-válasz állapotkódja. A kivétel error.message tartalmaz egy részletes üzenetet, amely lehetővé teszi a probléma diagnosztizálásához:

try:
    result = client.analyze( ... )
except HttpResponseError as e:
    print(f"Status code: {e.status_code}")
    print(f"Reason: {e.reason}")
    print(f"Message: {e.error.message}")

Ha például helytelen hitelesítési kulcsot ad meg:

Status code: 401
Reason: PermissionDenied
Message: Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource.

Vagy ha olyan kép URL-címet ad meg, amely nem létezik vagy nem érhető el:

Status code: 400
Reason: Bad Request
Message: The provided image url is not accessible.

Naplózás

Az ügyfél a szokásos Python-naplózási kódtárat használja. Az SDK naplózza a HTTP-kérések és a válaszok részleteit, amelyek hasznosak lehetnek a hibaelhárítás során. Az stdoutba való bejelentkezéshez adja hozzá a következőket:

import sys
import logging

# Acquire the logger for this client library. Use 'azure' to affect both
# 'azure.core` and `azure.ai.vision.imageanalysis' libraries.
logger = logging.getLogger("azure")

# Set the desired logging level. logging.INFO or logging.DEBUG are good options.
logger.setLevel(logging.INFO)

# Direct logging output to stdout (the default):
handler = logging.StreamHandler(stream=sys.stdout)
# Or direct logging output to a file:
# handler = logging.FileHandler(filename = 'sample.log')
logger.addHandler(handler)

# Optional: change the default logging format. Here we add a timestamp.
formatter = logging.Formatter("%(asctime)s:%(levelname)s:%(name)s:%(message)s")
handler.setFormatter(formatter)

Alapértelmezés szerint a naplók újradefiniálják az URL-lekérdezési sztringek, egyes HTTP-kérések és válaszfejlécek értékeit (beleértve Ocp-Apim-Subscription-Keya kulcsot, amely tartalmazza a kulcsot), valamint a kérések és válaszok hasznos adatainak értékét. Ha újraírás nélkül szeretne naplókat létrehozni, állítsa be a metódusargumentumot logging_enable = True a létrehozáskor ImageAnalysisClientvagy az ügyfél hívásakor analyze .

# Create an Image Analysis client with none redacted log
client = ImageAnalysisClient(
    endpoint=endpoint,
    credential=AzureKeyCredential(key),
    logging_enable=True
)

A rendszer nem hoz létre újrareagált naplókat csak a naplószinthez logging.DEBUG . A biztonság veszélyeztetésének elkerülése érdekében ügyeljen arra, hogy a rendszer ne védje meg a redacted naplókat. További információ: Naplózás konfigurálása a Python Azure-kódtáraiban

Előfeltételek

Ez az útmutató feltételezi, hogy követte a rövid útmutatóban szereplő lépéseket. Ez a következőket jelenti:

Az ügyfél létrehozása és hitelesítése

A Képelemzési szolgáltatással való hitelesítéshez a Computer Vision-kulcsra és a végpont URL-címére van szükség. Ez az útmutató feltételezi, hogy definiálta a környezeti változókat VISION_KEY VISION_ENDPOINT , valamint a kulcsot és a végpontot.

Fontos

HA API-kulcsot használ, biztonságosan tárolja valahol máshol, például az Azure Key Vaultban. Ne foglalja bele közvetlenül az API-kulcsot a kódba, és soha ne tegye közzé nyilvánosan.

Az AI-szolgáltatások biztonságáról további információt az Azure AI-szolgáltatásokhoz érkező kérelmek hitelesítése című témakörben talál.

Először hozzon létre egy ImageAnalysisClient objektumot. Példa:

String endpoint = System.getenv("VISION_ENDPOINT");
String key = System.getenv("VISION_KEY");

if (endpoint == null || key == null) {
    System.out.println("Missing environment variable 'VISION_ENDPOINT' or 'VISION_KEY'.");
    System.out.println("Set them before running this sample.");
    System.exit(1);
}

// Create a synchronous Image Analysis client.
ImageAnalysisClient client = new ImageAnalysisClientBuilder()
    .endpoint(endpoint)
    .credential(new KeyCredential(key))
    .buildClient();

Jelölje ki az elemezni kívánt képet

A rendszerképek kiválasztásához meg kell adnia egy nyilvánosan elérhető kép URL-címét, vagy beolvassa a képadatokat az SDK bemeneti pufferébe. Tekintse meg a támogatott képformátumokra vonatkozó képkövetelményeket .

Kép URL-címe

Hozzon létre egy sztringet imageUrl az elemezni kívánt kép nyilvánosan elérhető URL-címének tárolásához.

String imageUrl = "https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png";

Képpuffer

Azt is megteheti, hogy egy BinaryData-objektummal memóriapufferként adja át a képet. Olvasson például egy elemezni kívánt helyi képfájlból.

BinaryData imageData = BinaryData.fromFile(new File("sample.png").toPath());

Vizuális funkciók kiválasztása

Az Analysis 4.0 API hozzáférést biztosít a szolgáltatás képelemzési funkcióihoz. Válassza ki, hogy a saját használati esete alapján mely műveleteket végezze el. Az egyes funkciók leírását az áttekintésben tekintheti meg. Az ebben a szakaszban szereplő példa az összes elérhető vizualizációs funkciót hozzáadja, de a gyakorlati használathoz valószínűleg kevesebbre van szükség.

Fontos

A vizualizációk feliratai és a DenseCaptions csak bizonyos Azure-régiókban támogatottak. Lásd a régió rendelkezésre állását.

// visualFeatures: Select one or more visual features to analyze.
List<VisualFeatures> visualFeatures = Arrays.asList(
            VisualFeatures.SMART_CROPS,
            VisualFeatures.CAPTION,
            VisualFeatures.DENSE_CAPTIONS,
            VisualFeatures.OBJECTS,
            VisualFeatures.PEOPLE,
            VisualFeatures.READ,
            VisualFeatures.TAGS);

Elemzési beállítások kiválasztása

Az ImageAnalysisOptions objektummal különböző beállításokat adhat meg az Elemzési API-híváshoz.

  • Nyelv: Megadhatja a visszaadott adatok nyelvét. A nyelv nem kötelező, az alapértelmezett angol. A támogatott nyelvi kódok listáját és az egyes nyelvekhez támogatott vizualizációs funkciókat a Nyelvi támogatás című témakörben találja.
  • Nemek közötti semleges feliratok: Ha feliratokat vagy sűrű feliratokat nyer ki (VisualFeatures.CAPTION vagy VisualFeatures.DENSE_CAPTIONS használatával), kérheti a nemek közötti semleges feliratok használatát. A nemek közötti semleges feliratok megadása nem kötelező, az alapértelmezett pedig a nem szerinti feliratok. Ha például a nemek közötti semleges feliratokat választja, az olyan kifejezések, mint a nő vagy a férfi, személy, a fiú vagy a lány helyébe pedig a gyermek lép.
  • Körülvágási méretarány: Az oldalarány kiszámítása a célterület szélességének a magassággal való osztásával történik. A támogatott értékek 0,75-től 1,8-ra (beleértve) vannak. A tulajdonság beállítása csak akkor releváns, ha VisualFeatures.SMART_CROPS a vizualizációs funkciólista részeként lett kiválasztva. Ha VisualFeatures.SMART_CROPS választ, de nem ad meg méretarányokat, a szolgáltatás egy olyan körülvágási javaslatot ad vissza, amelynek méretaránya illeszkedik. Ebben az esetben a méretarány 0,5 és 2,0 között van (beleértve a különbséget).
// Specify analysis options (or set `options` to null for defaults)
ImageAnalysisOptions options = new ImageAnalysisOptions()
    .setLanguage("en")
    .setGenderNeutralCaption(true)
    .setSmartCropsAspectRatios(Arrays.asList(0.9, 1.33, 1.78));

Az analyzeFromUrl metódus meghívása

Ez a szakasz bemutatja, hogyan kezdeményezhet elemzési hívást a szolgáltatáshoz.

Hívja meg az AnalyzeFromUrl metódust az ImageAnalysisClient objektumon az itt látható módon. A hívás szinkron, és addig blokkolódik, amíg a szolgáltatás vissza nem adja az eredményeket, vagy hiba nem történt. Másik lehetőségként használhat egy ImageAnalysisAsyncClient objektumot, és meghívhatja annak analyzeFromUrl metódusát, amely nem blokkoló.

Ha URL-cím helyett képpufferből szeretne elemezni, hívja meg inkább az elemzési módszert, és adja meg az imageData első argumentumot.

try {
    // Analyze all visual features from an image URL. This is a synchronous (blocking) call.
    ImageAnalysisResult result = client.analyzeFromUrl(
        imageUrl,
        visualFeatures,
        options);

    printAnalysisResults(result);

} catch (HttpResponseException e) {
    System.out.println("Exception: " + e.getClass().getSimpleName());
    System.out.println("Status code: " + e.getResponse().getStatusCode());
    System.out.println("Message: " + e.getMessage());
} catch (Exception e) {
    System.out.println("Message: " + e.getMessage());
}

Eredmények lekérése a szolgáltatásból

Az alábbi kód bemutatja, hogyan elemezheti az analyzeFromUrl eredményeit, és elemezheti a műveleteket.

// Print all analysis results to the console
public static void printAnalysisResults(ImageAnalysisResult result) {

    System.out.println("Image analysis results:");

    if (result.getCaption() != null) {
        System.out.println(" Caption:");
        System.out.println("   \"" + result.getCaption().getText() + "\", Confidence "
            + String.format("%.4f", result.getCaption().getConfidence()));
    }

    if (result.getDenseCaptions() != null) {
        System.out.println(" Dense Captions:");
        for (DenseCaption denseCaption : result.getDenseCaptions().getValues()) {
            System.out.println("   \"" + denseCaption.getText() + "\", Bounding box "
                + denseCaption.getBoundingBox() + ", Confidence " + String.format("%.4f", denseCaption.getConfidence()));
        }
    }

    if (result.getRead() != null) {
        System.out.println(" Read:");
        for (DetectedTextLine line : result.getRead().getBlocks().get(0).getLines()) {
            System.out.println("   Line: '" + line.getText()
                + "', Bounding polygon " + line.getBoundingPolygon());
            for (DetectedTextWord word : line.getWords()) {
                System.out.println("     Word: '" + word.getText()
                    + "', Bounding polygon " + word.getBoundingPolygon()
                    + ", Confidence " + String.format("%.4f", word.getConfidence()));
            }
        }
    }

    if (result.getTags() != null) {
        System.out.println(" Tags:");
        for (DetectedTag tag : result.getTags().getValues()) {
            System.out.println("   \"" + tag.getName() + "\", Confidence " + String.format("%.4f", tag.getConfidence()));
        }
    }

    if (result.getObjects() != null) {
        System.out.println(" Objects:");
        for (DetectedObject detectedObject : result.getObjects().getValues()) {
            System.out.println("   \"" + detectedObject.getTags().get(0).getName() + "\", Bounding box "
                + detectedObject.getBoundingBox() + ", Confidence " + String.format("%.4f", detectedObject.getTags().get(0).getConfidence()));
        }
    }

    if (result.getPeople() != null) {
        System.out.println(" People:");
        for (DetectedPerson person : result.getPeople().getValues()) {
            System.out.println("   Bounding box "
                + person.getBoundingBox() + ", Confidence " + String.format("%.4f", person.getConfidence()));
        }
    }

    if (result.getSmartCrops() != null) {
        System.out.println(" Crop Suggestions:");
        for (CropRegion cropRegion : result.getSmartCrops().getValues()) {
            System.out.println("   Aspect ratio "
                + cropRegion.getAspectRatio() + ": Bounding box " + cropRegion.getBoundingBox());
        }
    }

    System.out.println(" Image height = " + result.getMetadata().getHeight());
    System.out.println(" Image width = " + result.getMetadata().getWidth());
    System.out.println(" Model version = " + result.getModelVersion());
}

Hibaelhárítás

Kivételek

A analyze metódusok httpResponseException metódust adnak, amikor a szolgáltatás nem sikeres HTTP-állapotkóddal válaszol. A kivétel getResponse().getStatusCode() tartalmazza a HTTP-válasz állapotkódját. A kivétel getMessage() tartalmaz egy részletes üzenetet, amely lehetővé teszi a probléma diagnosztizálásához:

try {
    ImageAnalysisResult result = client.analyze(...)
} catch (HttpResponseException e) {
    System.out.println("Exception: " + e.getClass().getSimpleName());
    System.out.println("Status code: " + e.getResponse().getStatusCode());
    System.out.println("Message: " + e.getMessage());
} catch (Exception e) {
    System.out.println("Message: " + e.getMessage());
}

Ha például helytelen hitelesítési kulcsot ad meg:

Exception: ClientAuthenticationException
Status code: 401
Message: Status code 401, "{"error":{"code":"401","message":"Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource."}}"

Vagy ha olyan formátumú képet ad meg, amely nem ismerhető fel:

Exception: HttpResponseException
Status code: 400
Message: Status code 400, "{"error":{"code":"InvalidRequest","message":"Image format is not valid.","innererror":{"code":"InvalidImageFormat","message":"Input data is not a valid image."}}}"

HTTP-kérések/válaszok naplózásának engedélyezése

A hibaelhárításban hasznos lehet a vezetéken keresztül küldött HTTP-kérés vagy a képelemzési szolgáltatásnak küldött válasz áttekintése. A Képelemzés ügyfélkódtár egy beépített konzolnaplózási keretrendszert támogat ideiglenes hibakeresési célokra. Az SLF4J felülettel a fejlettebb naplózást is támogatja. Részletes információkért lásd : Naplózás használata a Java Azure SDK-ban.

Az alábbi szakaszok a konzolnaplózás beépített keretrendszerrel való engedélyezését ismertetik.

Környezeti változók beállításával

Az alábbi két környezeti változó beállításával engedélyezheti a HTTP-kérések és -válaszok konzolnaplózását a teljes alkalmazáshoz. Ez a változás minden olyan Azure-ügyfelet érint, amely támogatja a HTTP-kérések és -válaszok naplózását.

  • Környezeti változó AZURE_LOG_LEVEL beállítása debug
  • Állítsa be a környezeti változót AZURE_HTTP_LOG_DETAIL_LEVEL az alábbi értékek egyikére:
Érték Naplózási szint
none A HTTP-kérések/válaszok naplózása le van tiltva
basic Csak URL-címeket, HTTP-metódusokat és a kérés befejezéséhez szükséges időt naplózza.
headers Mindent naplóz a BASIC-ben, valamint az összes kérés- és válaszfejlécet.
body Mindent naplóz a BASIC-ben, valamint az összes kérés- és választörzset.
body_and_headers Mindent naplóz a FEJLÉCEKBEN és a TÖRZSben.

A httpLogOptions beállításával

Http-kérések és -válaszok konzolnaplózásának engedélyezése egyetlen ügyfél esetében

  • Környezeti változó AZURE_LOG_LEVEL beállítása debug
  • Hívás hozzáadása a httpLogOptions következő létrehozásakor ImageAnalysisClient:
ImageAnalysisClient client = new ImageAnalysisClientBuilder()
    .endpoint(endpoint)
    .credential(new KeyCredential(key))
    .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
    .buildClient();

A HttpLogDetailLevel enumerálási szint határozza meg a támogatott naplózási szinteket.

Naplózáskor alapértelmezés szerint egyes HTTP-fejléc- és lekérdezésparaméter-értékek újra ki lesznek léptetve. Ezt az alapértelmezett beállítást felülbírálhatja, ha megadja, hogy mely fejlécek és lekérdezési paraméterek legyenek biztonságosan naplózhatók:

ImageAnalysisClient client = new ImageAnalysisClientBuilder()
    .endpoint(endpoint)
    .credential(new KeyCredential(key))
    .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)
        .addAllowedHeaderName("safe-to-log-header-name")
        .addAllowedQueryParamName("safe-to-log-query-parameter-name"))
    .buildClient();

Ha például a HTTP-kérelem teljes, nem redacted naplóját szeretné lekérni, alkalmazza a következőket:

    .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)
        .addAllowedHeaderName("Ocp-Apim-Subscription-Key")
        .addAllowedQueryParamName("features")
        .addAllowedQueryParamName("language")
        .addAllowedQueryParamName("gender-neutral-caption")
        .addAllowedQueryParamName("smartcrops-aspect-ratios")
        .addAllowedQueryParamName("model-version"))

Adjon hozzá többet a fentiekhez a nem újrajelzett HTTP-válasz lekéréséhez. Ha nem redacted naplót oszt meg, győződjön meg arról, hogy nem tartalmaz titkos kulcsokat, például az előfizetési kulcsot.

Előfeltételek

Ez az útmutató feltételezi, hogy követte a rövid útmutatóban említett lépéseket. Ez a következőket jelenti:

Az ügyfél létrehozása és hitelesítése

A Képelemzési szolgáltatáson való hitelesítéshez a Computer Vision-kulcsra és a végpont URL-címére van szükség. Ez az útmutató feltételezi, hogy definiálta a környezeti változókat VISION_KEY VISION_ENDPOINT , valamint a kulcsot és a végpontot.

Fontos

HA API-kulcsot használ, biztonságosan tárolja valahol máshol, például az Azure Key Vaultban. Ne foglalja bele közvetlenül az API-kulcsot a kódba, és soha ne tegye közzé nyilvánosan.

Az AI-szolgáltatások biztonságáról további információt az Azure AI-szolgáltatásokhoz érkező kérelmek hitelesítése című témakörben talál.

Először hozzon létre egy ImageAnalysisClient objektumot. Példa:

// Load the .env file if it exists
require("dotenv").config();

const endpoint = process.env['VISION_ENDPOINT'] || '<your_endpoint>';
const key = process.env['VISION_KEY'] || '<your_key>';

const credential = new AzureKeyCredential(key);
const client = createClient(endpoint, credential);

Jelölje ki az elemezni kívánt képet

A rendszerképek kiválasztásához meg kell adnia egy nyilvánosan elérhető kép URL-címét, vagy beolvassa a képadatokat az SDK bemeneti pufferébe. Tekintse meg a támogatott képformátumokra vonatkozó képkövetelményeket .

Kép URL-címe

A következő minta kép URL-címét használhatja.

const imageUrl = 'https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png';

Képpuffer

Másik lehetőségként adattömbként is átadhatja a képet. Olvasson például egy elemezni kívánt helyi képfájlból.

const imagePath = '../sample.jpg';
const imageData = fs.readFileSync(imagePath);

Vizuális funkciók kiválasztása

Az Analysis 4.0 API hozzáférést biztosít a szolgáltatás képelemzési funkcióihoz. Válassza ki, hogy a saját használati esete alapján mely műveleteket végezze el. Az egyes funkciók leírását az Áttekintésben tekintheti meg. Az ebben a szakaszban szereplő példa az összes elérhető vizualizációs funkciót hozzáadja, de a gyakorlati használathoz valószínűleg kevesebbre van szükség.

Fontos

A vizualizációk feliratai és a DenseCaptions csak bizonyos Azure-régiókban támogatottak. Lásd: .

const features = [
  'Caption',
  'DenseCaptions',
  'Objects',
  'People',
  'Read',
  'SmartCrops',
  'Tags'
];

Az Analyze API meghívása lehetőségekkel

Az alábbi kód meghívja az Analyze Image API-t a fent kiválasztott funkciókkal és a következőben definiált egyéb lehetőségekkel. Ha URL-cím helyett képpufferből szeretne elemezni, cserélje le imageURL a metódushívást a következőre imageData: .

const result = await client.path('/imageanalysis:analyze').post({
  body: {
      url: imageUrl
  },
  queryParameters: {
      features: features,
      'language': 'en',
      'gender-neutral-captions': 'true',
      'smartCrops-aspect-ratios': [0.9, 1.33]
  },
  contentType: 'application/json'
});

Intelligens körülvágási oldalarányok kiválasztása

Az oldalarány kiszámítása a célterület szélességének és a magasságnak a hányadosával történik. A támogatott értékek 0,75-től 1,8-ra (beleértve) vannak. A tulajdonság beállítása csak akkor releváns, ha a VisualFeatures.SmartCrops a vizualizációs funkciólista részeként lett kiválasztva. Ha a VisualFeatures.SmartCrops lehetőséget választja, de nem ad meg méretarányokat, a szolgáltatás egyetlen körülvágási javaslatot ad vissza, amelynek méretaránya illeszkedik. Ebben az esetben a méretarány 0,5 és 2,0 között van (beleértve a különbséget).

Nemek közötti semleges feliratok kiválasztása

Ha feliratokat vagy sűrű feliratokat nyer ki (a VisualFeatures.Caption vagy a VisualFeatures.DenseCaptions használatával), kérheti a nemek közötti semleges feliratok használatát. A nemek közötti semleges feliratok megadása nem kötelező, az alapértelmezett pedig a nem szerinti feliratok. Ha például a nemek közötti semleges feliratokat választja, az olyan kifejezések, mint a nő vagy a férfi, személy, a fiú vagy a lány helyébe pedig a gyermek lép.

Nyelvek megadása

Megadhatja a visszaadott adatok nyelvét. A nyelv nem kötelező, az alapértelmezett angol. A támogatott nyelvi kódok listáját és az egyes nyelvekhez támogatott vizualizációs funkciókat a Nyelvi támogatás című témakörben találja.

Eredmények lekérése a szolgáltatásból

Az alábbi kód bemutatja, hogyan elemezheti a különböző elemzési műveletek eredményeit.

const iaResult = result.body;

console.log(`Model Version: ${iaResult.modelVersion}`);
console.log(`Image Metadata: ${JSON.stringify(iaResult.metadata)}`);
if (iaResult.captionResult) {
  console.log(`Caption: ${iaResult.captionResult.text} (confidence: ${iaResult.captionResult.confidence})`);
}
if (iaResult.denseCaptionsResult) {
  iaResult.denseCaptionsResult.values.forEach(denseCaption => console.log(`Dense Caption: ${JSON.stringify(denseCaption)}`));
}
if (iaResult.objectsResult) {
  iaResult.objectsResult.values.forEach(object => console.log(`Object: ${JSON.stringify(object)}`));
}
if (iaResult.peopleResult) {
  iaResult.peopleResult.values.forEach(person => console.log(`Person: ${JSON.stringify(person)}`));
}
if (iaResult.readResult) {
  iaResult.readResult.blocks.forEach(block => console.log(`Text Block: ${JSON.stringify(block)}`));
}
if (iaResult.smartCropsResult) {
  iaResult.smartCropsResult.values.forEach(smartCrop => console.log(`Smart Crop: ${JSON.stringify(smartCrop)}`));
}
if (iaResult.tagsResult) {
  iaResult.tagsResult.values.forEach(tag => console.log(`Tag: ${JSON.stringify(tag)}`));
}

Hibaelhárítás

Naplózás

A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a környezeti változót a AZURE_LOG_LEVEL következőre info: . Másik lehetőségként a naplózás futásidőben is engedélyezhető a @azure/loggerkövetkező hívássalsetLogLevel:

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

A naplók engedélyezésére vonatkozó részletesebb útmutatásért tekintse meg a @azure/logger csomag dokumentációit.

Előfeltételek

Ez az útmutató feltételezi, hogy sikeresen követte a rövid útmutatóban említett lépéseket. Ez a következőket jelenti:

  • Létrehozott egy Computer Vision-erőforrást, és beszerezte a kulcs és a végpont URL-címét.
  • Sikeresen hívást kezdeményezett curl.exe a szolgáltatáshoz (vagy másik eszközt használt). Az itt látható példák alapján módosíthatja curl.exe a hívást.

Hitelesítés a szolgáltatáson

A Képelemzési szolgáltatáson való hitelesítéshez a Computer Vision-kulcsra és a végpont URL-címére van szükség.

Fontos

HA API-kulcsot használ, biztonságosan tárolja valahol máshol, például az Azure Key Vaultban. Ne foglalja bele közvetlenül az API-kulcsot a kódba, és soha ne tegye közzé nyilvánosan.

Az AI-szolgáltatások biztonságáról további információt az Azure AI-szolgáltatásokhoz érkező kérelmek hitelesítése című témakörben talál.

Az SDK-példa feltételezi, hogy ön definiálta a környezeti változókat VISION_KEY VISION_ENDPOINT , valamint a kulcsot és a végpontot.

A hitelesítés az Ocp-Apim-Subscription-Key HTTP-kérés fejlécének hozzáadásával és a látáskulcshoz való beállításával történik. A hívás az URL-címre <endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01történik, ahol <endpoint> a számítógép látási végpontjának URL-címe található. Az elemzési beállítások alapján hozzáadhat lekérdezési sztringeket.

Jelölje ki az elemezni kívánt képet

Az útmutatóban szereplő kód az URL-cím alapján hivatkozott távoli képeket használja. Érdemes lehet önállóan különböző képeket kipróbálnia a képelemzési funkciók teljes kapacitásának megtekintéséhez.

Kép URL-címe

Távoli rendszerkép elemzésekor a rendszerkép URL-címét úgy adhatja meg, hogy a kérelem törzsét a következőképpen formázzuk: {"url":"https://learn.microsoft.com/azure/cognitive-services/computer-vision/images/windows-kitchen.jpg"}. A tartalomtípusnak a következőnek kell lennie application/json: .

Képfájlokkal

A helyi rendszerkép elemzéséhez a bináris képadatokat a HTTP-kérelem törzsébe kell helyeznie. A tartalomtípusnak a következőnek kell lennie application/octet-stream : vagy multipart/form-data.

Elemzési beállítások kiválasztása

Vizuális funkciók kiválasztása a standard modell használatakor

Az Analysis 4.0 API hozzáférést biztosít a szolgáltatás képelemzési funkcióihoz. Válassza ki, hogy a saját használati esete alapján mely műveleteket végezze el. Az egyes funkciók leírását az áttekintésben tekintheti meg. Az ebben a szakaszban szereplő példa az összes elérhető vizualizációs funkciót hozzáadja, de a gyakorlati használathoz valószínűleg kevesebbre van szükség.

A "Feliratok" és a "DenseCaptions" vizuális funkciók csak bizonyos Azure-régiókban támogatottak: lásd a régió rendelkezésre állását.

Feljegyzés

A REST API az intelligens növények és az intelligens növények méretarányait használja. Az SDK a körülvágási javaslatok és a körülvágási oldalarányok kifejezéseket használja. Mindkettő ugyanarra a szolgáltatásműveletre hivatkozik. Hasonlóképpen, a REST API az Olvasás kifejezést használja a kép szövegének optikai karakterfelismeréssel (OCR) való észleléséhez, míg az SDK a Szöveg kifejezést használja ugyanahhoz a művelethez.

Az Analysis 4.0 API URL-lekérdezési paramétereinek beállításával megadhatja, hogy mely funkciókat szeretné használni. Egy paraméter több értékkel is rendelkezhet, vesszővel elválasztva.

URL-paraméter Érték Leírás
features read Beolvassa a képen látható szöveget, és strukturált JSON-adatokként adja ki.
features caption A kép tartalmát egy teljes mondattal ismerteti a támogatott nyelveken.
features denseCaptions Legfeljebb 10 kiemelt képterület részletes feliratait hozza létre.
features smartCrops Megkeresi azokat a téglalapkoordinátákat, amelyek a képet a kívánt méretarányra vágnák, miközben megőrzik a kívánt területet.
features objects Észleli a képek különböző objektumait, beleértve a hozzávetőleges helyet is. Az Objects argumentum csak angol nyelven érhető el.
features tags A kép címkéje a kép tartalmához kapcsolódó szavak részletes listájával.
features people Észleli a képeken megjelenő személyeket, beleértve a hozzávetőleges helyeket is.

A feltöltött URL-címek a következőképpen nézhetnek ki:

<endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01&features=tags,read,caption,denseCaptions,smartCrops,objects,people

Modellnév beállítása egyéni modell használatakor

Képelemzést egyéni betanított modellel is elvégezhet. Modell létrehozásához és betanítása: Egyéni képelemzési modell létrehozása. A modell betanítása után csak a modell neve szükséges. Egyéni modell használata esetén nem kell vizuális funkciókat megadnia.

Egyéni modell használatához ne használja a szolgáltatások lekérdezési paraméterét. Ehelyett állítsa a paramétert model-name a modell nevére az itt látható módon. Cserélje le MyCustomModelName az egyéni modell nevét.

<endpoint>/computervision/imageanalysis:analyze?api-version=2023-02-01&model-name=MyCustomModelName

Nyelvek megadása

Megadhatja a visszaadott adatok nyelvét. A nyelv nem kötelező, az alapértelmezett angol. A támogatott nyelvi kódok listáját és az egyes nyelvekhez támogatott vizualizációs funkciókat a Nyelvi támogatás című témakörben találja.

A nyelvi beállítás csak akkor érvényes, ha a standard modellt használja.

Az alábbi URL-lekérdezési paraméter határozza meg a nyelvet. Az alapértelmezett érték en.

URL-paraméter Érték Leírás
language en Angol
language es Spanyol
language ja Japán
language pt Portugál
language zh Egyszerűsített kínai

A feltöltött URL-címek a következőképpen nézhetnek ki:

<endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01&features=caption&language=en

Nemek közötti semleges feliratok kiválasztása

Ha feliratokat vagy sűrű feliratokat nyer ki, kérheti a nemek közötti semleges feliratokat. A nemek közötti semleges feliratok megadása nem kötelező, az alapértelmezett pedig a nem szerinti feliratok. Ha például a nemek közötti semleges feliratokat választja, az olyan kifejezések, mint a nő vagy a férfi, személy, a fiú vagy a lány helyébe pedig a gyermek lép.

A nemek közötti semleges felirat beállítás csak akkor érvényes, ha a standard modellt használja.

Adja hozzá az opcionális lekérdezési sztringet gender-neutral-caption értékekkel true vagy false (az alapértelmezett értékekkel).

A feltöltött URL-címek a következőképpen nézhetnek ki:

<endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01&features=caption&gender-neutral-caption=true

Intelligens körülvágási oldalarányok kiválasztása

Az oldalarány kiszámítása a célterület szélességének és a magasságnak a hányadosával történik. A támogatott értékek 0,75-től 1,8-ra (beleértve) vannak. A tulajdonság beállítása csak akkor releváns, ha a VisualFeatures.SmartCrops a vizualizációs funkciólista részeként lett kiválasztva. Ha a VisualFeatures.SmartCrops lehetőséget választja, de nem ad meg méretarányokat, a szolgáltatás egyetlen körülvágási javaslatot ad vissza, amelynek méretaránya illeszkedik. Ebben az esetben a méretarány 0,5 és 2,0 között van (beleértve a különbséget).

Az intelligens körülvágási oldalarányok csak a standard modell használatakor érvényesek.

Adja hozzá az opcionális lekérdezési sztringet smartcrops-aspect-ratiosegy vagy több oldalarány vesszővel elválasztva.

A feltöltött URL-címek a következőképpen nézhetnek ki:

<endpoint>/computervision/imageanalysis:analyze?api-version=2024-02-01&features=smartCrops&smartcrops-aspect-ratios=0.8,1.2

Eredmények lekérése a szolgáltatásból

Eredmények lekérése a standard modell használatával

Ez a szakasz bemutatja, hogyan kezdeményezhet elemzési hívást a szolgáltatáshoz a standard modell használatával, és hogyan szerezheti be az eredményeket.

A szolgáltatás HTTP-választ ad 200 vissza, a törzs pedig JSON-sztring formájában tartalmazza a visszaadott adatokat. Az alábbi szöveg egy JSON-válasz példája.

{
    "modelVersion": "string",
    "captionResult": {
      "text": "string",
      "confidence": 0.0
    },
    "denseCaptionsResult": {
      "values": [
        {
          "text": "string",
          "confidence": 0.0,
          "boundingBox": {
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          }
        }
      ]
    },
    "metadata": {
      "width": 0,
      "height": 0
    },
    "tagsResult": {
      "values": [
        {
          "name": "string",
          "confidence": 0.0
        }
      ]
    },
    "objectsResult": {
      "values": [
        {
          "id": "string",
          "boundingBox": {
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          },
          "tags": [
            {
              "name": "string",
              "confidence": 0.0
            }
          ]
        }
      ]
    },
    "readResult": {
      "blocks": [
        {
          "lines": [
            {
              "text": "string",
              "boundingPolygon": [
                {
                  "x": 0,
                  "y": 0
                },
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 0,
                    "y": 0
                },
                {
                    "x": 0,
                    "y": 0
                }
              ],
              "words": [
                {
                  "text": "string",
                  "boundingPolygon": [
                    {
                        "x": 0,
                        "y": 0
                    },
                    {
                        "x": 0,
                        "y": 0
                    },
                    {
                        "x": 0,
                        "y": 0
                    },
                    {
                        "x": 0,
                        "y": 0
                    }
                  ],
                  "confidence": 0.0
                }
              ]
            }
          ]
        }
      ]
    },
    "smartCropsResult": {
      "values": [
        {
          "aspectRatio": 0.0,
          "boundingBox": {
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          }
        }
      ]
    },
    "peopleResult": {
      "values": [
        {
          "boundingBox": {
            "x": 0,
            "y": 0,
            "w": 0,
            "h": 0
          },
          "confidence": 0.0
        }
      ]
    }
  }

Hibakódok

Hiba esetén a Képelemzési szolgáltatás válasza tartalmaz egy JSON hasznos adatokat, amely hibakódot és hibaüzenetet tartalmaz. Egyéb részleteket is tartalmazhat a belső hibakód és üzenet formájában. Példa:

{
    "error":
    {
        "code": "InvalidRequest",
        "message": "Analyze query is invalid.",
        "innererror":
        {
            "code": "NotSupportedVisualFeature",
            "message": "Specified feature type is not valid"
        }
    }
}

Az alábbiakban felsoroljuk a gyakori hibákat és azok okait. A listaelemek a következő formátumban jelennek meg:

  • HTTP-válaszkód
    • Hibakód és üzenet a JSON-válaszban
      • [Nem kötelező] Belső hibakód és üzenet a JSON-válaszban

Gyakori hibák listája:

  • 400 Bad Request
    • InvalidRequest - Image URL is badly formatted or not accessible. Győződjön meg arról, hogy a kép URL-címe érvényes és nyilvánosan elérhető.
    • InvalidRequest - The image size is not allowed to be zero or larger than 20971520 bytes. Csökkentse a kép méretét tömörítéssel és/vagy átméretezéssel, és küldje el újra a kérést.
    • InvalidRequest - The feature 'Caption' is not supported in this region. A funkció csak bizonyos Azure-régiókban támogatott. Tekintse meg a támogatott Azure-régiók listájának rövid útmutató előfeltételeit .
    • InvalidRequest - The provided image content type ... is not supported. A kérelemben szereplő HTTP-fejléc tartalomtípusa nem engedélyezett típus:
      • Kép URL-címe esetén a tartalomtípusnakapplication/json
      • Bináris képadatok esetén a tartalomtípusnak application/octet-stream vagy multipart/form-data
    • InvalidRequest - Either 'features' or 'model-name' needs to be specified in the query parameter.
    • InvalidRequest - Image format is not valid
      • InvalidImageFormat - Image format is not valid. A támogatott képformátumokért tekintse meg a Képkövetelmények szakaszt.
    • InvalidRequest - Analyze query is invalid
      • NotSupportedVisualFeature - Specified feature type is not valid. Győződjön meg arról, hogy a funkciók lekérdezési sztringje érvényes értékkel rendelkezik.
      • NotSupportedLanguage - The input language is not supported. Győződjön meg arról, hogy a nyelvi lekérdezési sztring érvényes értékkel rendelkezik a kijelölt vizualizációs funkcióhoz az alábbi táblázat alapján.
      • BadArgument - 'smartcrops-aspect-ratios' aspect ratio is not in allowed range [0.75 to 1.8]
  • 401 PermissionDenied
    • 401 - Access denied due to invalid subscription key or wrong API endpoint. Make sure to provide a valid key for an active subscription and use a correct regional API endpoint for your resource.
  • 404 Resource Not Found
    • 404 - Resource not found. A szolgáltatás nem találta meg az egyéni modellt a lekérdezési sztring által model-name megadott név alapján.

Következő lépések