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:
- Létrehozott egy Computer Vision-erőforrást, és beszerezte a kulcs és a végpont URL-címét.
- Telepítette a megfelelő SDK-csomagot, és egy futó gyorsútmutató-alkalmazással rendelkezik. Ezt a rövid útmutatót az alábbi kód példák alapján módosíthatja.
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:
- Létrehozott egy Computer Vision-erőforrást, és beszerezte a kulcs és a végpont URL-címét.
- Telepítette a megfelelő SDK-csomagot, és egy működő gyorsútmutató-alkalmazással rendelkezik. Ezt a rövid útmutatóalkalmazást az itt található kód példák alapján módosíthatja.
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-Key
a 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 ImageAnalysisClient
vagy 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:
- Létrehozott egy Computer Vision-erőforrást, és beszerezte a kulcs és a végpont URL-címét.
- Telepítette a megfelelő SDK-csomagot, és egy futó gyorsútmutató-alkalmazással rendelkezik. Ezt a rövid útmutatót az alábbi kód példák alapján módosíthatja.
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ásadebug
- Á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ásadebug
- Hívás hozzáadása a
httpLogOptions
következő létrehozásakorImageAnalysisClient
:
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:
- Létrehozott egy Computer Vision-erőforrást, és beszerezte a kulcs és a végpont URL-címét.
- Telepítette a megfelelő SDK-csomagot, és egy futó gyorsútmutató-alkalmazással rendelkezik. Ezt a rövid útmutatóalkalmazást az itt található kód példák alapján módosíthatja.
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/logger
kö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íthatjacurl.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-01
tö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-ratios
egy 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
- 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ípusnak
application/json
- Bináris képadatok esetén a tartalomtípusnak
application/octet-stream
vagymultipart/form-data
- Kép URL-címe esetén a tartalomtípusnak
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 általmodel-name
megadott név alapján.
Következő lépések
- Az egyes funkciókról a fogalmakról szóló cikkekben olvashat bővebben.
- Ismerje meg az SDK-kódmintákat a GitHubon:
- Az API funkcióival kapcsolatos további információkért tekintse meg a REST API-hivatkozást .