Azure Cognitive Services - один вызов Vision API приводит к 9 транзакциям - PullRequest
0 голосов
/ 23 января 2019

Я использую метод ниже, чтобы обнаружить текст в изображении. Но одно выполнение этого метода приводит к 9 транзакциям на моей информационной панели Azure. Может кто-нибудь подсказать, если я что-то упустил? или что-то не так с кодом?

public async Task<IActionResult> ConvertToText(string url)
        {
            string subscriptionKey = "jfh3879rhf4389terhkjy86";

            ComputerVisionClient computerVision = new ComputerVisionClient(
                new ApiKeyServiceClientCredentials(subscriptionKey),
                new System.Net.Http.DelegatingHandler[] { });

            // Specify the Azure region
            computerVision.Endpoint = "https://westcentralus.api.cognitive.microsoft.com";


            if (!Uri.IsWellFormedUriString(url, UriKind.Absolute))
            {
                return null;
            }

            TextRecognitionMode textRecognitionMode = TextRecognitionMode.Printed;
            int numberOfCharsInOperationId = 36;

            // Start the async process to recognize the text
            RecognizeTextHeaders textHeaders =
                await computerVision.RecognizeTextAsync(url, textRecognitionMode);

            // Retrieve the URI where the recognized text will be
            // stored from the Operation-Location header
            string operationId = textHeaders.OperationLocation.Substring(
                textHeaders.OperationLocation.Length - numberOfCharsInOperationId);

            TextOperationResult result =
                await computerVision.GetTextOperationResultAsync(operationId);

            // Wait for the operation to complete
            int i = 0;
            int maxRetries = 10;
            while ((result.Status == TextOperationStatusCodes.Running ||
                    result.Status == TextOperationStatusCodes.NotStarted) && i++ < maxRetries)
            {
                Console.WriteLine("Server status: {0}, waiting {1} seconds...", result.Status, i);
                await Task.Delay(1000);

                result = await computerVision.GetTextOperationResultAsync(operationId);
            }

            // Display the results
            var lines = result.RecognitionResult.Lines;
            string details = "";

            foreach (Line line in lines)
            {
                details += line.Text + Environment.NewLine;
            }

            return Content(details);
        }

Спасибо.

1 Ответ

0 голосов
/ 23 января 2019

Взято со страницы цен Cognitive Services :

Что представляет собой транзакция для Computer Vision API?
Для распознавания текста каждый вызов POST считается транзакцией. Все вызовы GET для просмотра результатов асинхронной службы считаются транзакциями, но бесплатны.

Я полагаю, что «проблема» находится в while состоянии, поскольку вы получаете результат, пока задание (возможно) все еще выполняется. Вы, вероятно, получаете статус пару раз, прежде чем работа будет завершена. Хорошая вещь: эти вызовы API бесплатны.

Я вижу, что ваш код такой же, как в Быстрый старт: извлечение текста с использованием Computer Vision SDK и C # , поэтому все должно быть в порядке.

...