Краткое руководство. Анализ изображений 4.0

Начните работу с REST API анализа изображений 4.0 или клиентским пакетом SDK, чтобы настроить базовое приложение для анализа изображений. Служба "Анализ изображений" предоставляет алгоритмы ИИ для обработки изображений и возврата сведений об их визуальных функциях. Выполните приведенные здесь действия, чтобы установить пакет SDK для приложения и протестировать пример кода.

Используйте клиентский пакет SDK анализа изображений для C#, чтобы проанализировать изображение для чтения текста и создать подпись изображения. В этом кратком руководстве вызывается функция AnalyzeImage(), которая использует клиентский объект для анализа удаленного изображения и вывода результатов в консоль.

Справочная документация | Пакеты (NuGet) | Образцы

Совет

API Анализа 4.0 может выполнять множество различных операций. Примеры, демонстрирующие все доступные функции, см. в руководстве по анализу изображений.

Предварительные требования

  • подписка Azure — создайте бесплатную учетную запись.
  • Интегрированная среда разработки Visual Studio с включенной рабочей нагрузкой разработка классических приложений .NET. Если вы не планируете использовать интегрированную среду разработки Visual Studio, необходимо установить пакет SDK для .NET 6.0 или более поздней версии.
  • Среда выполнения .NET установлена.
  • Получив подписку Azure, , создайте ресурс Визуального распознавания в портал Azure. Чтобы использовать функцию субтитров, описанную в этом кратком руководстве, необходимо создать ресурс в одном из следующих регионов Azure: Восточная часть США, Центральная Франция, Центральная Корея, Северная Европа, Юго-Восточная Азия, Западная Европа, Западная часть США. После развертывания ресурса выберите элемент Перейти к ресурсу.
    • Вам потребуются ключ и конечная точка из создаваемого ресурса, чтобы подключить приложение к службе "Визуальное распознавание ИИ Azure".
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Настройка приложения

Создайте приложение C#.

Откройте Visual Studio и в разделе Начало работы выберите Создать проект. Задайте для фильтров шаблонов значение C#/All Platforms/Console. Выберите Консольное приложение (приложение командной строки, которое может выполняться в .NET в Windows, Linux и macOS) и нажмите кнопку Далее. Измените имя проекта на ImageAnalysisQuickstart и нажмите кнопку Далее. Выберите .NET 6.0 или более поздней версии и нажмите кнопку Создать , чтобы создать проект.

Установка клиентского пакета SDK

После создания нового проекта установите клиентский пакет SDK, щелкнув правой кнопкой мыши решение проекта в Обозреватель решений и выбрав Управление пакетами NuGet. В открывшемся диспетчере пакетов выберите Просмотр, установите флажок Включить предварительные версии и выполните поиск по запросу Azure.AI.Vision.ImageAnalysis. Выберите пункт Установить. Дополнительные сведения см. в руководстве по установке пакета SDK.

Создание переменных среды

В этом примере запишите учетные данные в переменные среды на локальном компьютере, на котором выполняется приложение.

Перейдите на портал Azure. Если ресурс, созданный в разделе Предварительные требования , успешно развернут, выберите Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечную точку можно найти в разделе Управление ресурсами на странице Ключи и конечная точка . Ключ ресурса не совпадает с идентификатором подписки Azure.

Совет

Не включайте ключ непосредственно в код и никогда не публикуйте его в открытом доступе. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье о безопасности служб ИИ Azure.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  1. Чтобы задать VISION_KEY переменную среды, замените your-key одним из ключей ресурса.
  2. Чтобы задать VISION_ENDPOINT переменную среды, замените your-endpoint конечной точкой ресурса.
setx VISION_KEY your-key
setx VISION_ENDPOINT your-endpoint

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ изображения

В каталоге проекта откройте файл Program.cs , созданный ранее вместе с новым проектом. Вставьте следующий код.

Совет

Код показывает анализ URL-адреса изображения. Вы также можете проанализировать локальный файл изображения или изображение из буфера памяти. Дополнительные сведения см. в руководстве по анализу изображений.

using Azure;
using Azure.AI.Vision.Common;
using Azure.AI.Vision.ImageAnalysis;

class Program
{
    static void AnalyzeImage()
    {
        var serviceOptions = new VisionServiceOptions(
            Environment.GetEnvironmentVariable("VISION_ENDPOINT"),
            new AzureKeyCredential(Environment.GetEnvironmentVariable("VISION_KEY")));

        using var imageSource = VisionSource.FromUrl(
            new Uri("https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png"));

        var analysisOptions = new ImageAnalysisOptions()
        {
            Features = ImageAnalysisFeature.Caption | ImageAnalysisFeature.Text,

            Language = "en",

            GenderNeutralCaption = true
        };

        using var analyzer = new ImageAnalyzer(serviceOptions, imageSource, analysisOptions);

        var result = analyzer.Analyze();

        if (result.Reason == ImageAnalysisResultReason.Analyzed)
        {
            if (result.Caption != null)
            {
                Console.WriteLine(" Caption:");
                Console.WriteLine($"   \"{result.Caption.Content}\", Confidence {result.Caption.Confidence:0.0000}");
            }

            if (result.Text != null)
            {
                Console.WriteLine($" Text:");
                foreach (var line in result.Text.Lines)
                {
                    string pointsToString = "{" + string.Join(',', line.BoundingPolygon.Select(pointsToString => pointsToString.ToString())) + "}";
                    Console.WriteLine($"   Line: '{line.Content}', Bounding polygon {pointsToString}");

                    foreach (var word in line.Words)
                    {
                        pointsToString = "{" + string.Join(',', word.BoundingPolygon.Select(pointsToString => pointsToString.ToString())) + "}";
                        Console.WriteLine($"     Word: '{word.Content}', Bounding polygon {pointsToString}, Confidence {word.Confidence:0.0000}");
                    }
                }
            }
        }
        else
        {
            var errorDetails = ImageAnalysisErrorDetails.FromResult(result);
            Console.WriteLine(" Analysis failed.");
            Console.WriteLine($"   Error reason : {errorDetails.Reason}");
            Console.WriteLine($"   Error code : {errorDetails.ErrorCode}");
            Console.WriteLine($"   Error message: {errorDetails.Message}");
        }
    }

    static void Main()
    {
        try
        {
            AnalyzeImage();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }
}

Затем выполните сборку и запустите приложение. Должны отобразиться выходные данные, аналогичные показанному здесь.

Создайте и запустите приложение, выбрав Начать отладку в меню Отладка в верхней части окна интегрированной среды разработки (или нажмите клавишу F5).

Выходные данные

В выходных данных консоли должно отобразиться примерно следующее:

Caption:
   "a person pointing at a screen", Confidence 0.4892
Text:
   Line: '9:35 AM', Bounding polygon {{X=130,Y=129},{X=215,Y=130},{X=215,Y=149},{X=130,Y=148}}
     Word: '9:35', Bounding polygon {{X=131,Y=130},{X=171,Y=130},{X=171,Y=149},{X=130,Y=149}}, Confidence 0.9930
     Word: 'AM', Bounding polygon {{X=179,Y=130},{X=204,Y=130},{X=203,Y=149},{X=178,Y=149}}, Confidence 0.9980
   Line: 'E Conference room 154584354', Bounding polygon {{X=130,Y=153},{X=224,Y=154},{X=224,Y=161},{X=130,Y=161}}
     Word: 'E', Bounding polygon {{X=131,Y=154},{X=135,Y=154},{X=135,Y=161},{X=131,Y=161}}, Confidence 0.1040
     Word: 'Conference', Bounding polygon {{X=142,Y=154},{X=174,Y=154},{X=173,Y=161},{X=141,Y=161}}, Confidence 0.9020
     Word: 'room', Bounding polygon {{X=175,Y=154},{X=189,Y=155},{X=188,Y=161},{X=175,Y=161}}, Confidence 0.7960
     Word: '154584354', Bounding polygon {{X=192,Y=155},{X=224,Y=154},{X=223,Y=162},{X=191,Y=161}}, Confidence 0.8640
   Line: '#: 555-173-4547', Bounding polygon {{X=130,Y=163},{X=182,Y=164},{X=181,Y=171},{X=130,Y=170}}
     Word: '#:', Bounding polygon {{X=131,Y=163},{X=139,Y=164},{X=139,Y=171},{X=131,Y=171}}, Confidence 0.0360
     Word: '555-173-4547', Bounding polygon {{X=142,Y=164},{X=182,Y=165},{X=181,Y=171},{X=142,Y=171}}, Confidence 0.5970
   Line: 'Town Hall', Bounding polygon {{X=546,Y=180},{X=590,Y=180},{X=590,Y=190},{X=546,Y=190}}
     Word: 'Town', Bounding polygon {{X=547,Y=181},{X=568,Y=181},{X=568,Y=190},{X=546,Y=191}}, Confidence 0.9810
     Word: 'Hall', Bounding polygon {{X=570,Y=181},{X=590,Y=181},{X=590,Y=191},{X=570,Y=190}}, Confidence 0.9910
   Line: '9:00 AM - 10:00 AM', Bounding polygon {{X=546,Y=191},{X=596,Y=192},{X=596,Y=200},{X=546,Y=199}}
     Word: '9:00', Bounding polygon {{X=546,Y=192},{X=555,Y=192},{X=555,Y=200},{X=546,Y=200}}, Confidence 0.0900
     Word: 'AM', Bounding polygon {{X=557,Y=192},{X=565,Y=192},{X=565,Y=200},{X=557,Y=200}}, Confidence 0.9910
     Word: '-', Bounding polygon {{X=567,Y=192},{X=569,Y=192},{X=569,Y=200},{X=567,Y=200}}, Confidence 0.6910
     Word: '10:00', Bounding polygon {{X=570,Y=192},{X=585,Y=193},{X=584,Y=200},{X=570,Y=200}}, Confidence 0.8850
     Word: 'AM', Bounding polygon {{X=586,Y=193},{X=593,Y=194},{X=593,Y=200},{X=586,Y=200}}, Confidence 0.9910
   Line: 'Aaron Buaion', Bounding polygon {{X=543,Y=201},{X=581,Y=201},{X=581,Y=208},{X=543,Y=208}}
     Word: 'Aaron', Bounding polygon {{X=545,Y=202},{X=560,Y=202},{X=559,Y=208},{X=544,Y=208}}, Confidence 0.6020
     Word: 'Buaion', Bounding polygon {{X=561,Y=202},{X=580,Y=202},{X=579,Y=208},{X=560,Y=208}}, Confidence 0.2910        
   Line: 'Daily SCRUM', Bounding polygon {{X=537,Y=259},{X=575,Y=260},{X=575,Y=266},{X=537,Y=265}}
     Word: 'Daily', Bounding polygon {{X=538,Y=259},{X=551,Y=260},{X=550,Y=266},{X=538,Y=265}}, Confidence 0.1750
     Word: 'SCRUM', Bounding polygon {{X=552,Y=260},{X=570,Y=260},{X=570,Y=266},{X=551,Y=266}}, Confidence 0.1140
   Line: '10:00 AM 11:00 AM', Bounding polygon {{X=536,Y=266},{X=590,Y=266},{X=590,Y=272},{X=536,Y=272}}
     Word: '10:00', Bounding polygon {{X=539,Y=267},{X=553,Y=267},{X=552,Y=273},{X=538,Y=272}}, Confidence 0.8570
     Word: 'AM', Bounding polygon {{X=554,Y=267},{X=561,Y=267},{X=560,Y=273},{X=553,Y=273}}, Confidence 0.9980
     Word: '11:00', Bounding polygon {{X=564,Y=267},{X=578,Y=267},{X=577,Y=273},{X=563,Y=273}}, Confidence 0.4790
     Word: 'AM', Bounding polygon {{X=579,Y=267},{X=586,Y=267},{X=585,Y=273},{X=578,Y=273}}, Confidence 0.9940
   Line: 'Churlette de Crum', Bounding polygon {{X=538,Y=273},{X=584,Y=273},{X=585,Y=279},{X=538,Y=279}}
     Word: 'Churlette', Bounding polygon {{X=539,Y=274},{X=562,Y=274},{X=561,Y=279},{X=538,Y=279}}, Confidence 0.4640     
     Word: 'de', Bounding polygon {{X=563,Y=274},{X=569,Y=274},{X=568,Y=279},{X=562,Y=279}}, Confidence 0.8100
     Word: 'Crum', Bounding polygon {{X=570,Y=274},{X=582,Y=273},{X=581,Y=279},{X=569,Y=279}}, Confidence 0.8850
   Line: 'Quarterly NI Hands', Bounding polygon {{X=538,Y=295},{X=588,Y=295},{X=588,Y=301},{X=538,Y=302}}
     Word: 'Quarterly', Bounding polygon {{X=540,Y=296},{X=562,Y=296},{X=562,Y=302},{X=539,Y=302}}, Confidence 0.5230     
     Word: 'NI', Bounding polygon {{X=563,Y=296},{X=570,Y=296},{X=570,Y=302},{X=563,Y=302}}, Confidence 0.3030
     Word: 'Hands', Bounding polygon {{X=572,Y=296},{X=588,Y=296},{X=588,Y=302},{X=571,Y=302}}, Confidence 0.6130
   Line: '11.00 AM-12:00 PM', Bounding polygon {{X=536,Y=304},{X=588,Y=303},{X=588,Y=309},{X=536,Y=310}}
     Word: '11.00', Bounding polygon {{X=538,Y=304},{X=552,Y=304},{X=552,Y=310},{X=538,Y=310}}, Confidence 0.6180
     Word: 'AM-12:00', Bounding polygon {{X=554,Y=304},{X=578,Y=304},{X=577,Y=310},{X=553,Y=310}}, Confidence 0.2700      
     Word: 'PM', Bounding polygon {{X=579,Y=304},{X=586,Y=304},{X=586,Y=309},{X=578,Y=310}}, Confidence 0.6620
   Line: 'Bebek Shaman', Bounding polygon {{X=538,Y=310},{X=577,Y=310},{X=577,Y=316},{X=538,Y=316}}
     Word: 'Bebek', Bounding polygon {{X=539,Y=310},{X=554,Y=310},{X=554,Y=317},{X=539,Y=316}}, Confidence 0.6110
     Word: 'Shaman', Bounding polygon {{X=555,Y=310},{X=576,Y=311},{X=576,Y=317},{X=555,Y=317}}, Confidence 0.6050        
   Line: 'Weekly stand up', Bounding polygon {{X=537,Y=332},{X=582,Y=333},{X=582,Y=339},{X=537,Y=338}}
     Word: 'Weekly', Bounding polygon {{X=538,Y=332},{X=557,Y=333},{X=556,Y=339},{X=538,Y=338}}, Confidence 0.6060        
     Word: 'stand', Bounding polygon {{X=558,Y=333},{X=572,Y=334},{X=571,Y=340},{X=557,Y=339}}, Confidence 0.4890
     Word: 'up', Bounding polygon {{X=574,Y=334},{X=580,Y=334},{X=580,Y=340},{X=573,Y=340}}, Confidence 0.8150
   Line: '12:00 PM-1:00 PM', Bounding polygon {{X=537,Y=340},{X=583,Y=340},{X=583,Y=347},{X=536,Y=346}}
     Word: '12:00', Bounding polygon {{X=539,Y=341},{X=553,Y=341},{X=552,Y=347},{X=538,Y=347}}, Confidence 0.8260
     Word: 'PM-1:00', Bounding polygon {{X=554,Y=341},{X=575,Y=341},{X=574,Y=347},{X=553,Y=347}}, Confidence 0.2090       
     Word: 'PM', Bounding polygon {{X=576,Y=341},{X=583,Y=341},{X=582,Y=347},{X=575,Y=347}}, Confidence 0.0390
   Line: 'Delle Marckre', Bounding polygon {{X=538,Y=347},{X=582,Y=347},{X=582,Y=352},{X=538,Y=353}}
     Word: 'Delle', Bounding polygon {{X=540,Y=348},{X=559,Y=347},{X=558,Y=353},{X=539,Y=353}}, Confidence 0.5800
     Word: 'Marckre', Bounding polygon {{X=560,Y=347},{X=582,Y=348},{X=582,Y=353},{X=559,Y=353}}, Confidence 0.2750       
   Line: 'Product review', Bounding polygon {{X=538,Y=370},{X=577,Y=370},{X=577,Y=376},{X=538,Y=375}}
     Word: 'Product', Bounding polygon {{X=539,Y=370},{X=559,Y=371},{X=558,Y=376},{X=539,Y=376}}, Confidence 0.6150       
     Word: 'review', Bounding polygon {{X=560,Y=371},{X=576,Y=371},{X=575,Y=376},{X=559,Y=376}}, Confidence 0.0400 

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы ИИ Azure, можно удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней.

Дальнейшие действия

В этом кратком руководстве вы узнали, как установить клиентский пакет SDK для анализа изображений и выполнять базовые вызовы анализа изображений. Далее ознакомьтесь с дополнительными сведениями о функциях API Analysis 4.0.

Используйте клиентский пакет SDK анализа изображений для Python для анализа удаленного изображения для чтения текста и создания подпись изображения. В этом кратком руководстве используется клиентский объект для анализа удаленного изображения и вывода результатов в консоль.

Справочная документация | Пакет (PyPi) | Образцы

Совет

API Анализа 4.0 может выполнять множество различных операций. Примеры, демонстрирующие все доступные функции, см. в руководстве по анализу изображений.

Предварительные требования

  • подписка Azure — создайте бесплатную учетную запись.

  • Python 3.x. Установка Python должна включать pip. Чтобы проверить, установлен ли pip, выполните команду pip --version в командной строке. Чтобы использовать pip, установите последнюю версию Python.

  • Получив подписку Azure, , создайте ресурс Визуального распознавания в портал Azure. Чтобы использовать функцию субтитров, описанную в этом кратком руководстве, необходимо создать ресурс в одном из следующих регионов Azure: Восточная часть США, Центральная Франция, Центральная Корея, Северная Европа, Юго-Восточная Азия, Западная Европа, Западная часть США, Восточная Азия. После развертывания ресурса выберите элемент Перейти к ресурсу.

    • Вам потребуются ключ и конечная точка из создаваемого ресурса, чтобы подключить приложение к службе Визуального распознавания ИИ Azure.
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Создание переменных среды

В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором выполняется приложение.

Перейдите на портал Azure. Если ресурс, созданный в разделе Предварительные требования , успешно развернут, выберите Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечную точку можно найти в разделе Управление ресурсами на странице Ключи и конечная точка . Ключ ресурса не совпадает с идентификатором подписки Azure.

Совет

Не включайте ключ непосредственно в код и никогда не публикуйте его. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье Безопасность служб ИИ Azure.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  1. Чтобы задать VISION_KEY переменную среды, замените your-key одним из ключей для ресурса.
  2. Чтобы задать VISION_ENDPOINT переменную среды, замените your-endpoint на конечную точку для ресурса.
setx VISION_KEY your-key
setx VISION_ENDPOINT your-endpoint

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ изображения

  1. Откройте командную строку в месте нового проекта и создайте файл с именем quickstart.py.

  2. Выполните следующую команду, чтобы установить клиентский пакет SDK azure AI Vision:

    python -m pip install azure-ai-vision
    

    Дополнительные сведения см. в руководстве по установке пакета SDK.

  3. Скопируйте следующий код в quickstart.py:

Совет

Код показывает анализ URL-адреса изображения. Вы также можете проанализировать локальный файл изображения или изображение из буфера памяти. Дополнительные сведения см. в руководстве по анализу изображений.

import os
import azure.ai.vision as sdk

service_options = sdk.VisionServiceOptions(os.environ["VISION_ENDPOINT"],
                                           os.environ["VISION_KEY"])

vision_source = sdk.VisionSource(
    url="https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png")

analysis_options = sdk.ImageAnalysisOptions()

analysis_options.features = (
    sdk.ImageAnalysisFeature.CAPTION |
    sdk.ImageAnalysisFeature.TEXT
)

analysis_options.language = "en"

analysis_options.gender_neutral_caption = True

image_analyzer = sdk.ImageAnalyzer(service_options, vision_source, analysis_options)

result = image_analyzer.analyze()

if result.reason == sdk.ImageAnalysisResultReason.ANALYZED:

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

    if result.text is not None:
        print(" Text:")
        for line in result.text.lines:
            points_string = "{" + ", ".join([str(int(point)) for point in line.bounding_polygon]) + "}"
            print("   Line: '{}', Bounding polygon {}".format(line.content, points_string))
            for word in line.words:
                points_string = "{" + ", ".join([str(int(point)) for point in word.bounding_polygon]) + "}"
                print("     Word: '{}', Bounding polygon {}, Confidence {:.4f}"
                      .format(word.content, points_string, word.confidence))

else:

    error_details = sdk.ImageAnalysisErrorDetails.from_result(result)
    print(" Analysis failed.")
    print("   Error reason: {}".format(error_details.reason))
    print("   Error code: {}".format(error_details.error_code))
    print("   Error message: {}".format(error_details.message))
  1. Затем запустите приложение с помощью команды в python файле быстрого запуска.

    python quickstart.py
    

Выходные данные

В выходных данных консоли должен отображаться примерно такой текст:

Caption:
   'a person pointing at a screen', Confidence 0.4892
Text:
   Line: '9:35 AM', Bounding polygon {130, 129, 215, 130, 215, 149, 130, 148}
     Word: '9:35', Bounding polygon {131, 130, 171, 130, 171, 149, 130, 149}, Confidence 0.9930
     Word: 'AM', Bounding polygon {179, 130, 204, 130, 203, 149, 178, 149}, Confidence 0.9980
   Line: 'E Conference room 154584354', Bounding polygon {130, 153, 224, 154, 224, 161, 130, 161}
     Word: 'E', Bounding polygon {131, 154, 135, 154, 135, 161, 131, 161}, Confidence 0.1040
     Word: 'Conference', Bounding polygon {142, 154, 174, 154, 173, 161, 141, 161}, Confidence 0.9020
     Word: 'room', Bounding polygon {175, 154, 189, 155, 188, 161, 175, 161}, Confidence 0.7960
     Word: '154584354', Bounding polygon {192, 155, 224, 154, 223, 162, 191, 161}, Confidence 0.8640
   Line: '#: 555-173-4547', Bounding polygon {130, 163, 182, 164, 181, 171, 130, 170}
     Word: '#:', Bounding polygon {131, 163, 139, 164, 139, 171, 131, 171}, Confidence 0.0360
     Word: '555-173-4547', Bounding polygon {142, 164, 182, 165, 181, 171, 142, 171}, Confidence 0.5970
   Line: 'Town Hall', Bounding polygon {546, 180, 590, 180, 590, 190, 546, 190}
     Word: 'Town', Bounding polygon {547, 181, 568, 181, 568, 190, 546, 191}, Confidence 0.9810
     Word: 'Hall', Bounding polygon {570, 181, 590, 181, 590, 191, 570, 190}, Confidence 0.9910
   Line: '9:00 AM - 10:00 AM', Bounding polygon {546, 191, 596, 192, 596, 200, 546, 199}
     Word: '9:00', Bounding polygon {546, 192, 555, 192, 555, 200, 546, 200}, Confidence 0.0900
     Word: 'AM', Bounding polygon {557, 192, 565, 192, 565, 200, 557, 200}, Confidence 0.9910
     Word: '-', Bounding polygon {567, 192, 569, 192, 569, 200, 567, 200}, Confidence 0.6910
     Word: '10:00', Bounding polygon {570, 192, 585, 193, 584, 200, 570, 200}, Confidence 0.8850
     Word: 'AM', Bounding polygon {586, 193, 593, 194, 593, 200, 586, 200}, Confidence 0.9910
   Line: 'Aaron Buaion', Bounding polygon {543, 201, 581, 201, 581, 208, 543, 208}
     Word: 'Aaron', Bounding polygon {545, 202, 560, 202, 559, 208, 544, 208}, Confidence 0.6020
     Word: 'Buaion', Bounding polygon {561, 202, 580, 202, 579, 208, 560, 208}, Confidence 0.2910
   Line: 'Daily SCRUM', Bounding polygon {537, 259, 575, 260, 575, 266, 537, 265}
     Word: 'Daily', Bounding polygon {538, 259, 551, 260, 550, 266, 538, 265}, Confidence 0.1750
     Word: 'SCRUM', Bounding polygon {552, 260, 570, 260, 570, 266, 551, 266}, Confidence 0.1140
   Line: '10:00 AM 11:00 AM', Bounding polygon {536, 266, 590, 266, 590, 272, 536, 272}
     Word: '10:00', Bounding polygon {539, 267, 553, 267, 552, 273, 538, 272}, Confidence 0.8570
     Word: 'AM', Bounding polygon {554, 267, 561, 267, 560, 273, 553, 273}, Confidence 0.9980
     Word: '11:00', Bounding polygon {564, 267, 578, 267, 577, 273, 563, 273}, Confidence 0.4790
     Word: 'AM', Bounding polygon {579, 267, 586, 267, 585, 273, 578, 273}, Confidence 0.9940
   Line: 'Churlette de Crum', Bounding polygon {538, 273, 584, 273, 585, 279, 538, 279}
     Word: 'Churlette', Bounding polygon {539, 274, 562, 274, 561, 279, 538, 279}, Confidence 0.4640
     Word: 'de', Bounding polygon {563, 274, 569, 274, 568, 279, 562, 279}, Confidence 0.8100
     Word: 'Crum', Bounding polygon {570, 274, 582, 273, 581, 279, 569, 279}, Confidence 0.8850
   Line: 'Quarterly NI Hands', Bounding polygon {538, 295, 588, 295, 588, 301, 538, 302}
     Word: 'Quarterly', Bounding polygon {540, 296, 562, 296, 562, 302, 539, 302}, Confidence 0.5230
     Word: 'NI', Bounding polygon {563, 296, 570, 296, 570, 302, 563, 302}, Confidence 0.3030
     Word: 'Hands', Bounding polygon {572, 296, 588, 296, 588, 302, 571, 302}, Confidence 0.6130
   Line: '11.00 AM-12:00 PM', Bounding polygon {536, 304, 588, 303, 588, 309, 536, 310}
     Word: '11.00', Bounding polygon {538, 304, 552, 304, 552, 310, 538, 310}, Confidence 0.6180
     Word: 'AM-12:00', Bounding polygon {554, 304, 578, 304, 577, 310, 553, 310}, Confidence 0.2700
     Word: 'PM', Bounding polygon {579, 304, 586, 304, 586, 309, 578, 310}, Confidence 0.6620
   Line: 'Bebek Shaman', Bounding polygon {538, 310, 577, 310, 577, 316, 538, 316}
     Word: 'Bebek', Bounding polygon {539, 310, 554, 310, 554, 317, 539, 316}, Confidence 0.6110
     Word: 'Shaman', Bounding polygon {555, 310, 576, 311, 576, 317, 555, 317}, Confidence 0.6050
   Line: 'Weekly stand up', Bounding polygon {537, 332, 582, 333, 582, 339, 537, 338}
     Word: 'Weekly', Bounding polygon {538, 332, 557, 333, 556, 339, 538, 338}, Confidence 0.6060
     Word: 'stand', Bounding polygon {558, 333, 572, 334, 571, 340, 557, 339}, Confidence 0.4890
     Word: 'up', Bounding polygon {574, 334, 580, 334, 580, 340, 573, 340}, Confidence 0.8150
   Line: '12:00 PM-1:00 PM', Bounding polygon {537, 340, 583, 340, 583, 347, 536, 346}
     Word: '12:00', Bounding polygon {539, 341, 553, 341, 552, 347, 538, 347}, Confidence 0.8260
     Word: 'PM-1:00', Bounding polygon {554, 341, 575, 341, 574, 347, 553, 347}, Confidence 0.2090
     Word: 'PM', Bounding polygon {576, 341, 583, 341, 582, 347, 575, 347}, Confidence 0.0390
   Line: 'Delle Marckre', Bounding polygon {538, 347, 582, 347, 582, 352, 538, 353}
     Word: 'Delle', Bounding polygon {540, 348, 559, 347, 558, 353, 539, 353}, Confidence 0.5800
     Word: 'Marckre', Bounding polygon {560, 347, 582, 348, 582, 353, 559, 353}, Confidence 0.2750
   Line: 'Product review', Bounding polygon {538, 370, 577, 370, 577, 376, 538, 375}
     Word: 'Product', Bounding polygon {539, 370, 559, 371, 558, 376, 539, 376}, Confidence 0.6150
     Word: 'review', Bounding polygon {560, 371, 576, 371, 575, 376, 559, 376}, Confidence 0.0400

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы ИИ Azure, можно удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней.

Дальнейшие действия

Из этого краткого руководства вы узнали, как установить клиентский пакет SDK для анализа изображений и выполнять базовые вызовы анализа изображений. Далее ознакомьтесь с дополнительными сведениями о функциях API Analysis 4.0.

Используйте клиентский пакет SDK для анализа изображений для C++, чтобы проанализировать изображение для чтения текста и создать подпись изображения. В этом кратком руководстве вызывается функция AnalyzeImage(), которая использует клиентский объект для анализа удаленного изображения и вывода результатов в консоль.

Справочная документация | Пакет (NuGet) | Образцы

Совет

API Анализа 4.0 может выполнять множество различных операций. Примеры, демонстрирующие все доступные функции, см. в руководстве по анализу изображений .

Предварительные требования

  • подписка Azure — создайте бесплатную учетную запись.
  • Для разработки для Windows интегрированная среда разработки Visual Studio с рабочей нагрузкой Разработка классических приложений с включенным C++
  • Получив подписку Azure, , создайте ресурс Визуального распознавания в портал Azure. Чтобы использовать функцию субтитров, описанную в этом кратком руководстве, необходимо создать ресурс в одном из следующих регионов Azure: Восточная часть США, Центральная Франция, Центральная Корея, Северная Европа, Юго-Восточная Азия, Западная Европа, Западная Часть США, Восточная Азия, Восточная Азия. После развертывания ресурса выберите элемент Перейти к ресурсу.
    • Вам потребуются ключ и конечная точка из создаваемого ресурса, чтобы подключить приложение к службе Визуального распознавания ИИ Azure.
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Настройка приложения

Создайте приложение C++.

Откройте Visual Studio и в разделе Начало работы выберите Создать проект. Задайте для фильтров шаблонов значение C++/Windows/Console. Выберите Консольное приложение и нажмите кнопку Далее. Измените имя проекта на ImageAnalysisQuickstart и нажмите кнопку Создать , чтобы создать проект.

Установка клиентского пакета SDK

После создания проекта установите клиентский пакет SDK, щелкнув правой кнопкой мыши решение проекта в Обозреватель решений и выбрав Управление пакетами NuGet. В открывшемся диспетчере пакетов выберите Просмотр, установите флажок Включить предварительные версии и выполните поиск по запросу Azure.AI.Vision.ImageAnalysis. Выберите пункт Установить. Дополнительные сведения см. в руководстве по установке пакета SDK.

Создание переменных среды

В этом примере учетные данные записываются в переменные среды на локальном компьютере, на котором выполняется приложение.

Перейдите на портал Azure. Если ресурс, созданный в разделе Предварительные требования , успешно развернут, выберите Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечную точку можно найти в разделе Управление ресурсами на странице Ключи и конечная точка . Ключ ресурса не совпадает с идентификатором подписки Azure.

Совет

Не включайте ключ непосредственно в код и никогда не публикуйте его. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье Безопасность служб ИИ Azure.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  1. Чтобы задать VISION_KEY переменную среды, замените your-key одним из ключей для ресурса.
  2. Чтобы задать VISION_ENDPOINT переменную среды, замените your-endpoint на конечную точку для ресурса.
setx VISION_KEY your-key
setx VISION_ENDPOINT your-endpoint

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ изображения

В каталоге проекта откройте файл ImageAnalysisQuickstart.cpp , созданный ранее вместе с новым проектом. Очистите его содержимое и вставьте следующий код:

Совет

Код показывает анализ URL-адреса изображения. Вы также можете проанализировать локальный файл изображения или изображение из буфера памяти. Дополнительные сведения см. в руководстве по анализу изображений.

#include <vision_api_cxx_image_analyzer.hpp>

using namespace Azure::AI::Vision::ImageAnalysis;
using namespace Azure::AI::Vision::Input;
using namespace Azure::AI::Vision::Service;

std::string PolygonToString(std::vector<int32_t> boundingPolygon);
std::string GetEnvironmentVariable(const std::string name);

void AnalyzeImage()
{
    auto serviceOptions = VisionServiceOptions::FromEndpoint(
        GetEnvironmentVariable("VISION_ENDPOINT"),
        GetEnvironmentVariable("VISION_KEY"));

    auto imageSource = VisionSource::FromUrl(
        "https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png");

    auto analysisOptions = ImageAnalysisOptions::Create();

    analysisOptions->SetFeatures(
        {
            ImageAnalysisFeature::Caption,
            ImageAnalysisFeature::Text,
        });

    analysisOptions->SetLanguage("en");

    analysisOptions->SetGenderNeutralCaption(true);

    auto analyzer = ImageAnalyzer::Create(serviceOptions, imageSource, analysisOptions);

    auto result = analyzer->Analyze();

    if (result->GetReason() == ImageAnalysisResultReason::Analyzed)
    {
        const auto caption = result->GetCaption();
        if (caption.HasValue())
        {
            std::cout << " Caption:" << std::endl;
            std::cout << "   \"" << caption.Value().Content << "\", Confidence " << caption.Value().Confidence << std::endl;
        }

        const auto detectedText = result->GetText();
        if (detectedText.HasValue())
        {
            std::cout << " Text:\n";
            for (const auto line : detectedText.Value().Lines)
            {
                std::cout << "   Line: \"" << line.Content << "\"";
                std::cout << ", Bounding polygon " << PolygonToString(line.BoundingPolygon) << std::endl;

                for (const auto word : line.Words)
                {
                    std::cout << "     Word: \"" << word.Content << "\"";
                    std::cout << ", Bounding polygon " << PolygonToString(word.BoundingPolygon);
                    std::cout << ", Confidence " << word.Confidence << std::endl;
                }
            }
        }
    }
    else
    {
        auto errorDetails = ImageAnalysisErrorDetails::FromResult(result);
        std::cout << " Analysis failed." << std::endl;
        std::cout << "   Error reason = " << (int)errorDetails->GetReason() << std::endl;
        std::cout << "   Error code = " << errorDetails->GetErrorCode() << std::endl;
        std::cout << "   Error message = " << errorDetails->GetMessage() << std::endl;
    }
}

std::string PolygonToString(std::vector<int32_t> boundingPolygon)
{
    std::string out = "{";
    for (int i = 0; i < boundingPolygon.size(); i += 2)
    {
        out += ((i == 0) ? "{" : ",{") +
            std::to_string(boundingPolygon[i]) + "," +
            std::to_string(boundingPolygon[i + 1]) + "}";
    }
    out += "}";
    return out;
}

std::string GetEnvironmentVariable(const std::string name)
{
#if defined(_MSC_VER)
    size_t size = 0;
    char buffer[1024];
    getenv_s(&size, nullptr, 0, name.c_str());
    if (size > 0 && size < sizeof(buffer))
    {
        getenv_s(&size, buffer, size, name.c_str());
        return std::string{ buffer };
    }
#else
    const char* value = getenv(name.c_str());
    if (value != nullptr)
    {
        return std::string{ value };
    }
#endif
    return std::string{ "" };
}

int main()
{
    try
    {
        AnalyzeImage();
    }
    catch (std::exception e)
    {
        std::cout << e.what();
    }

    return 0;
}

Затем скомпилируйте и запустите приложение, выбрав Начать отладку в меню Отладка в верхней части окна интегрированной среды разработки (или нажмите клавишу F5). Должны отобразиться выходные данные, аналогичные показанному здесь.

Выходные данные

В выходных данных консоли должен отображаться примерно такой текст:

Caption:
   "a person pointing at a screen", Confidence 0.489159
Text:
   Line: "9:35 AM", Bounding polygon {{130,129},{215,130},{215,149},{130,148}}
     Word: "9:35", Bounding polygon {{131,130},{171,130},{171,149},{130,149}}, Confidence 0.993
     Word: "AM", Bounding polygon {{179,130},{204,130},{203,149},{178,149}}, Confidence 0.998
   Line: "E Conference room 154584354", Bounding polygon {{130,153},{224,154},{224,161},{130,161}}
     Word: "E", Bounding polygon {{131,154},{135,154},{135,161},{131,161}}, Confidence 0.104
     Word: "Conference", Bounding polygon {{142,154},{174,154},{173,161},{141,161}}, Confidence 0.902
     Word: "room", Bounding polygon {{175,154},{189,155},{188,161},{175,161}}, Confidence 0.796
     Word: "154584354", Bounding polygon {{192,155},{224,154},{223,162},{191,161}}, Confidence 0.864
   Line: "#: 555-173-4547", Bounding polygon {{130,163},{182,164},{181,171},{130,170}}
     Word: "#:", Bounding polygon {{131,163},{139,164},{139,171},{131,171}}, Confidence 0.036
     Word: "555-173-4547", Bounding polygon {{142,164},{182,165},{181,171},{142,171}}, Confidence 0.597
   Line: "Town Hall", Bounding polygon {{546,180},{590,180},{590,190},{546,190}}
     Word: "Town", Bounding polygon {{547,181},{568,181},{568,190},{546,191}}, Confidence 0.981
     Word: "Hall", Bounding polygon {{570,181},{590,181},{590,191},{570,190}}, Confidence 0.991
   Line: "9:00 AM - 10:00 AM", Bounding polygon {{546,191},{596,192},{596,200},{546,199}}
     Word: "9:00", Bounding polygon {{546,192},{555,192},{555,200},{546,200}}, Confidence 0.09
     Word: "AM", Bounding polygon {{557,192},{565,192},{565,200},{557,200}}, Confidence 0.991
     Word: "-", Bounding polygon {{567,192},{569,192},{569,200},{567,200}}, Confidence 0.691
     Word: "10:00", Bounding polygon {{570,192},{585,193},{584,200},{570,200}}, Confidence 0.885
     Word: "AM", Bounding polygon {{586,193},{593,194},{593,200},{586,200}}, Confidence 0.991
   Line: "Aaron Buaion", Bounding polygon {{543,201},{581,201},{581,208},{543,208}}
     Word: "Aaron", Bounding polygon {{545,202},{560,202},{559,208},{544,208}}, Confidence 0.602
     Word: "Buaion", Bounding polygon {{561,202},{580,202},{579,208},{560,208}}, Confidence 0.291
   Line: "Daily SCRUM", Bounding polygon {{537,259},{575,260},{575,266},{537,265}}
     Word: "Daily", Bounding polygon {{538,259},{551,260},{550,266},{538,265}}, Confidence 0.175
     Word: "SCRUM", Bounding polygon {{552,260},{570,260},{570,266},{551,266}}, Confidence 0.114
   Line: "10:00 AM 11:00 AM", Bounding polygon {{536,266},{590,266},{590,272},{536,272}}
     Word: "10:00", Bounding polygon {{539,267},{553,267},{552,273},{538,272}}, Confidence 0.857
     Word: "AM", Bounding polygon {{554,267},{561,267},{560,273},{553,273}}, Confidence 0.998
     Word: "11:00", Bounding polygon {{564,267},{578,267},{577,273},{563,273}}, Confidence 0.479
     Word: "AM", Bounding polygon {{579,267},{586,267},{585,273},{578,273}}, Confidence 0.994
   Line: "Churlette de Crum", Bounding polygon {{538,273},{584,273},{585,279},{538,279}}
     Word: "Churlette", Bounding polygon {{539,274},{562,274},{561,279},{538,279}}, Confidence 0.464
     Word: "de", Bounding polygon {{563,274},{569,274},{568,279},{562,279}}, Confidence 0.81
     Word: "Crum", Bounding polygon {{570,274},{582,273},{581,279},{569,279}}, Confidence 0.885
   Line: "Quarterly NI Hands", Bounding polygon {{538,295},{588,295},{588,301},{538,302}}
     Word: "Quarterly", Bounding polygon {{540,296},{562,296},{562,302},{539,302}}, Confidence 0.523
     Word: "NI", Bounding polygon {{563,296},{570,296},{570,302},{563,302}}, Confidence 0.303
     Word: "Hands", Bounding polygon {{572,296},{588,296},{588,302},{571,302}}, Confidence 0.613
   Line: "11.00 AM-12:00 PM", Bounding polygon {{536,304},{588,303},{588,309},{536,310}}
     Word: "11.00", Bounding polygon {{538,304},{552,304},{552,310},{538,310}}, Confidence 0.618
     Word: "AM-12:00", Bounding polygon {{554,304},{578,304},{577,310},{553,310}}, Confidence 0.27
     Word: "PM", Bounding polygon {{579,304},{586,304},{586,309},{578,310}}, Confidence 0.662
   Line: "Bebek Shaman", Bounding polygon {{538,310},{577,310},{577,316},{538,316}}
     Word: "Bebek", Bounding polygon {{539,310},{554,310},{554,317},{539,316}}, Confidence 0.611
     Word: "Shaman", Bounding polygon {{555,310},{576,311},{576,317},{555,317}}, Confidence 0.605
   Line: "Weekly stand up", Bounding polygon {{537,332},{582,333},{582,339},{537,338}}
     Word: "Weekly", Bounding polygon {{538,332},{557,333},{556,339},{538,338}}, Confidence 0.606
     Word: "stand", Bounding polygon {{558,333},{572,334},{571,340},{557,339}}, Confidence 0.489
     Word: "up", Bounding polygon {{574,334},{580,334},{580,340},{573,340}}, Confidence 0.815
   Line: "12:00 PM-1:00 PM", Bounding polygon {{537,340},{583,340},{583,347},{536,346}}
     Word: "12:00", Bounding polygon {{539,341},{553,341},{552,347},{538,347}}, Confidence 0.826
     Word: "PM-1:00", Bounding polygon {{554,341},{575,341},{574,347},{553,347}}, Confidence 0.209
     Word: "PM", Bounding polygon {{576,341},{583,341},{582,347},{575,347}}, Confidence 0.039
   Line: "Delle Marckre", Bounding polygon {{538,347},{582,347},{582,352},{538,353}}
     Word: "Delle", Bounding polygon {{540,348},{559,347},{558,353},{539,353}}, Confidence 0.58
     Word: "Marckre", Bounding polygon {{560,347},{582,348},{582,353},{559,353}}, Confidence 0.275
   Line: "Product review", Bounding polygon {{538,370},{577,370},{577,376},{538,375}}
     Word: "Product", Bounding polygon {{539,370},{559,371},{558,376},{539,376}}, Confidence 0.615
     Word: "review", Bounding polygon {{560,371},{576,371},{575,376},{559,376}}, Confidence 0.04

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы ИИ Azure, можно удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней.

Дальнейшие действия

В этом кратком руководстве вы узнали, как установить клиентский пакет SDK для анализа изображений и выполнять базовые вызовы анализа изображений. Далее ознакомьтесь с дополнительными сведениями о функциях API Analysis 4.0.

Используйте клиентский пакет SDK анализа изображений для Java для анализа изображения для чтения текста и создания подпись изображения. В этом кратком руководстве анализируется удаленное изображение и выводится результаты в консоль.

Справочная документация | Пакет | MavenОбразцы

Совет

API Анализа 4.0 может выполнять множество различных операций. Примеры, демонстрирующие все доступные функции, см. в руководстве по анализу изображений.

Предварительные требования

  • Компьютер с Windows 10 (или более поздней версии) x64 или Linux x64.
  • Установленный пакет средств разработки Java (JDK) версии 8 или более поздней, например Azul Zulu OpenJDK, Microsoft Build of OpenJDK, Oracle Java или предпочитаемый вами пакет JDK. Выполните команду java -version из командной строки, чтобы просмотреть версию и подтвердить успешную установку. Убедитесь, что установка Java является машинной для системной архитектуры и не выполняется через эмуляцию.
  • Установлен Apache Maven . В Linux установите из репозиториев дистрибутивов, если они доступны. Выполните команду mvn -v , чтобы подтвердить успешную установку.
  • подписка Azure — создайте бесплатную учетную запись.
  • Получив подписку Azure, , создайте ресурс Визуального распознавания в портал Azure. Чтобы использовать функцию субтитров, описанную в этом кратком руководстве, необходимо создать ресурс в одном из следующих регионов Azure: Восточная часть США, Центральная Франция, Центральная Корея, Северная Европа, Юго-Восточная Азия, Западная Европа, Западная часть США. После развертывания ресурса выберите элемент Перейти к ресурсу.
    • Вам потребуются ключ и конечная точка из создаваемого ресурса, чтобы подключить приложение к службе "Визуальное распознавание ИИ Azure".
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Настройка приложения

Откройте окно консоли и создайте новую папку для приложения быстрого запуска.

  1. Откройте текстовый редактор и скопируйте следующее содержимое в новый файл. Сохраните файл как pom.xml в каталоге проекта.
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>azure.ai.vision.imageanalysis.samples</groupId>
      <artifactId>image-analysis-quickstart</artifactId>
      <version>0.0</version>
      <dependencies>
        <!-- https://mvnrepository.com/artifact/com.azure/azure-ai-vision-imageanalysis -->
        <dependency>
          <groupId>com.azure</groupId>
          <artifactId>azure-ai-vision-imageanalysis</artifactId>
          <version>0.15.1-beta.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.azure/azure-core-http-netty -->
        <dependency>
          <groupId>com.azure</groupId>
          <artifactId>azure-core-http-netty</artifactId>
          <version>1.13.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>2.0.7</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-simple</artifactId>
          <version>2.0.7</version>
        </dependency>
      </dependencies>
    </project>
    
  2. Установите пакет SDK и зависимости, выполнив следующую команду в каталоге проекта:
    mvn clean dependency:copy-dependencies
    
  3. После успешного выполнения операции убедитесь, что папки target\dependency создавались и содержат .jar файлы.

Дополнительные сведения см. в руководстве по установке пакета SDK.

Создание переменных среды

В этом примере запишите учетные данные в переменные среды на локальном компьютере, на котором выполняется приложение.

Перейдите на портал Azure. Если ресурс, созданный в разделе Предварительные требования , успешно развернут, выберите Перейти к ресурсу в разделе Дальнейшие действия. Ключ и конечную точку можно найти в разделе Управление ресурсами на странице Ключи и конечная точка . Ключ ресурса не совпадает с идентификатором подписки Azure.

Совет

Не включайте ключ непосредственно в код и никогда не публикуйте его в открытом доступе. Дополнительные варианты проверки подлинности, такие как Azure Key Vault, см. в статье о безопасности служб ИИ Azure.

Чтобы задать переменную среды для ключа и конечной точки, откройте окно консоли и следуйте инструкциям для операционной системы и среды разработки.

  1. Чтобы задать VISION_KEY переменную среды, замените your-key одним из ключей ресурса.
  2. Чтобы задать VISION_ENDPOINT переменную среды, замените your-endpoint конечной точкой ресурса.
setx VISION_KEY your-key
setx VISION_ENDPOINT your-endpoint

После добавления переменных среды может потребоваться перезапустить все запущенные программы, которые будут считывать переменные среды, включая окно консоли.

Анализ изображения

Откройте текстовый редактор и скопируйте следующее содержимое в новый файл. Сохраните файл как ImageAnalysis.java

import java.net.URL;
import java.util.EnumSet;

import com.azure.ai.vision.common.*;
import com.azure.ai.vision.imageanalysis.*;

public class ImageAnalysis {

    public static void main(String[] args) {

        try (
            VisionServiceOptions serviceOptions = new VisionServiceOptions(
                new URL(System.getenv("VISION_ENDPOINT")),
                System.getenv("VISION_KEY"));

            VisionSource imageSource = VisionSource.fromUrl(
                new URL("https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png"));

            ImageAnalysisOptions analysisOptions = new ImageAnalysisOptions()) {

            analysisOptions.setFeatures(EnumSet.of(ImageAnalysisFeature.CAPTION, ImageAnalysisFeature.TEXT));

            analysisOptions.setLanguage("en");

            analysisOptions.setGenderNeutralCaption(true);

            try (
                ImageAnalyzer analyzer = new ImageAnalyzer(serviceOptions, imageSource, analysisOptions);

                ImageAnalysisResult result = analyzer.analyze()) {

                if (result.getReason() == ImageAnalysisResultReason.ANALYZED) {

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

                    if (result.getText() != null) {
                        System.out.println(" Text:");
                        for (DetectedTextLine line : result.getText()) {
                            String pointsToString = "{" + String.join(",",
                                    line.getBoundingPolygon().stream().map(Object::toString).toArray(String[]::new))
                                    + "}";
                            System.out.println(
                                    "   Line: '" + line.getContent() + "', Bounding polygon " + pointsToString);

                            for (DetectedTextWord word : line.getWords()) {
                                pointsToString = "{" + String.join(",",
                                        word.getBoundingPolygon().stream().map(Object::toString).toArray(String[]::new))
                                        + "}";
                                System.out.println(
                                        "     Word: '" + word.getContent() + "', Bounding polygon " + pointsToString +
                                                ", Confidence " + String.format("%.4f", word.getConfidence()));
                            }
                        }
                    }
                } else { // result.Reason == ImageAnalysisResultReason.Error
                    ImageAnalysisErrorDetails errorDetails = ImageAnalysisErrorDetails.fromResult(result);
                    System.out.println(" Analysis failed.");
                    System.out.println("   Error reason: " + errorDetails.getReason());
                    System.out.println("   Error code: " + errorDetails.getErrorCode());
                    System.out.println("   Error message: " + errorDetails.getMessage());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Совет

Код показывает анализ URL-адреса изображения. Вы также можете проанализировать локальный файл изображения или изображение из буфера памяти. Дополнительные сведения см. в руководстве по анализу изображений.

Чтобы скомпилировать файл Java, выполните следующую команду:

javac ImageAnalysis.java -cp ".;target\dependency\*"

Вы должны увидеть файл ImageAnalysis.class , созданный в текущей папке.

Чтобы запустить приложение, выполните следующие действия:

java -cp ".;target\dependency\*" ImageAnalysis

Выходные данные

В выходных данных консоли должно отобразиться примерно следующее:

Caption:
   "a person pointing at a screen", Confidence 0.4892
Text:
   Line: '9:35 AM', Bounding polygon {{X=130,Y=129},{X=215,Y=130},{X=215,Y=149},{X=130,Y=148}}
     Word: '9:35', Bounding polygon {{X=131,Y=130},{X=171,Y=130},{X=171,Y=149},{X=130,Y=149}}, Confidence 0.9930
     Word: 'AM', Bounding polygon {{X=179,Y=130},{X=204,Y=130},{X=203,Y=149},{X=178,Y=149}}, Confidence 0.9980
   Line: 'E Conference room 154584354', Bounding polygon {{X=130,Y=153},{X=224,Y=154},{X=224,Y=161},{X=130,Y=161}}
     Word: 'E', Bounding polygon {{X=131,Y=154},{X=135,Y=154},{X=135,Y=161},{X=131,Y=161}}, Confidence 0.1040
     Word: 'Conference', Bounding polygon {{X=142,Y=154},{X=174,Y=154},{X=173,Y=161},{X=141,Y=161}}, Confidence 0.9020
     Word: 'room', Bounding polygon {{X=175,Y=154},{X=189,Y=155},{X=188,Y=161},{X=175,Y=161}}, Confidence 0.7960
     Word: '154584354', Bounding polygon {{X=192,Y=155},{X=224,Y=154},{X=223,Y=162},{X=191,Y=161}}, Confidence 0.8640
   Line: '#: 555-173-4547', Bounding polygon {{X=130,Y=163},{X=182,Y=164},{X=181,Y=171},{X=130,Y=170}}
     Word: '#:', Bounding polygon {{X=131,Y=163},{X=139,Y=164},{X=139,Y=171},{X=131,Y=171}}, Confidence 0.0360
     Word: '555-173-4547', Bounding polygon {{X=142,Y=164},{X=182,Y=165},{X=181,Y=171},{X=142,Y=171}}, Confidence 0.5970
   Line: 'Town Hall', Bounding polygon {{X=546,Y=180},{X=590,Y=180},{X=590,Y=190},{X=546,Y=190}}
     Word: 'Town', Bounding polygon {{X=547,Y=181},{X=568,Y=181},{X=568,Y=190},{X=546,Y=191}}, Confidence 0.9810
     Word: 'Hall', Bounding polygon {{X=570,Y=181},{X=590,Y=181},{X=590,Y=191},{X=570,Y=190}}, Confidence 0.9910
   Line: '9:00 AM - 10:00 AM', Bounding polygon {{X=546,Y=191},{X=596,Y=192},{X=596,Y=200},{X=546,Y=199}}
     Word: '9:00', Bounding polygon {{X=546,Y=192},{X=555,Y=192},{X=555,Y=200},{X=546,Y=200}}, Confidence 0.0900
     Word: 'AM', Bounding polygon {{X=557,Y=192},{X=565,Y=192},{X=565,Y=200},{X=557,Y=200}}, Confidence 0.9910
     Word: '-', Bounding polygon {{X=567,Y=192},{X=569,Y=192},{X=569,Y=200},{X=567,Y=200}}, Confidence 0.6910
     Word: '10:00', Bounding polygon {{X=570,Y=192},{X=585,Y=193},{X=584,Y=200},{X=570,Y=200}}, Confidence 0.8850
     Word: 'AM', Bounding polygon {{X=586,Y=193},{X=593,Y=194},{X=593,Y=200},{X=586,Y=200}}, Confidence 0.9910
   Line: 'Aaron Buaion', Bounding polygon {{X=543,Y=201},{X=581,Y=201},{X=581,Y=208},{X=543,Y=208}}
     Word: 'Aaron', Bounding polygon {{X=545,Y=202},{X=560,Y=202},{X=559,Y=208},{X=544,Y=208}}, Confidence 0.6020
     Word: 'Buaion', Bounding polygon {{X=561,Y=202},{X=580,Y=202},{X=579,Y=208},{X=560,Y=208}}, Confidence 0.2910        
   Line: 'Daily SCRUM', Bounding polygon {{X=537,Y=259},{X=575,Y=260},{X=575,Y=266},{X=537,Y=265}}
     Word: 'Daily', Bounding polygon {{X=538,Y=259},{X=551,Y=260},{X=550,Y=266},{X=538,Y=265}}, Confidence 0.1750
     Word: 'SCRUM', Bounding polygon {{X=552,Y=260},{X=570,Y=260},{X=570,Y=266},{X=551,Y=266}}, Confidence 0.1140
   Line: '10:00 AM 11:00 AM', Bounding polygon {{X=536,Y=266},{X=590,Y=266},{X=590,Y=272},{X=536,Y=272}}
     Word: '10:00', Bounding polygon {{X=539,Y=267},{X=553,Y=267},{X=552,Y=273},{X=538,Y=272}}, Confidence 0.8570
     Word: 'AM', Bounding polygon {{X=554,Y=267},{X=561,Y=267},{X=560,Y=273},{X=553,Y=273}}, Confidence 0.9980
     Word: '11:00', Bounding polygon {{X=564,Y=267},{X=578,Y=267},{X=577,Y=273},{X=563,Y=273}}, Confidence 0.4790
     Word: 'AM', Bounding polygon {{X=579,Y=267},{X=586,Y=267},{X=585,Y=273},{X=578,Y=273}}, Confidence 0.9940
   Line: 'Churlette de Crum', Bounding polygon {{X=538,Y=273},{X=584,Y=273},{X=585,Y=279},{X=538,Y=279}}
     Word: 'Churlette', Bounding polygon {{X=539,Y=274},{X=562,Y=274},{X=561,Y=279},{X=538,Y=279}}, Confidence 0.4640     
     Word: 'de', Bounding polygon {{X=563,Y=274},{X=569,Y=274},{X=568,Y=279},{X=562,Y=279}}, Confidence 0.8100
     Word: 'Crum', Bounding polygon {{X=570,Y=274},{X=582,Y=273},{X=581,Y=279},{X=569,Y=279}}, Confidence 0.8850
   Line: 'Quarterly NI Hands', Bounding polygon {{X=538,Y=295},{X=588,Y=295},{X=588,Y=301},{X=538,Y=302}}
     Word: 'Quarterly', Bounding polygon {{X=540,Y=296},{X=562,Y=296},{X=562,Y=302},{X=539,Y=302}}, Confidence 0.5230     
     Word: 'NI', Bounding polygon {{X=563,Y=296},{X=570,Y=296},{X=570,Y=302},{X=563,Y=302}}, Confidence 0.3030
     Word: 'Hands', Bounding polygon {{X=572,Y=296},{X=588,Y=296},{X=588,Y=302},{X=571,Y=302}}, Confidence 0.6130
   Line: '11.00 AM-12:00 PM', Bounding polygon {{X=536,Y=304},{X=588,Y=303},{X=588,Y=309},{X=536,Y=310}}
     Word: '11.00', Bounding polygon {{X=538,Y=304},{X=552,Y=304},{X=552,Y=310},{X=538,Y=310}}, Confidence 0.6180
     Word: 'AM-12:00', Bounding polygon {{X=554,Y=304},{X=578,Y=304},{X=577,Y=310},{X=553,Y=310}}, Confidence 0.2700      
     Word: 'PM', Bounding polygon {{X=579,Y=304},{X=586,Y=304},{X=586,Y=309},{X=578,Y=310}}, Confidence 0.6620
   Line: 'Bebek Shaman', Bounding polygon {{X=538,Y=310},{X=577,Y=310},{X=577,Y=316},{X=538,Y=316}}
     Word: 'Bebek', Bounding polygon {{X=539,Y=310},{X=554,Y=310},{X=554,Y=317},{X=539,Y=316}}, Confidence 0.6110
     Word: 'Shaman', Bounding polygon {{X=555,Y=310},{X=576,Y=311},{X=576,Y=317},{X=555,Y=317}}, Confidence 0.6050        
   Line: 'Weekly stand up', Bounding polygon {{X=537,Y=332},{X=582,Y=333},{X=582,Y=339},{X=537,Y=338}}
     Word: 'Weekly', Bounding polygon {{X=538,Y=332},{X=557,Y=333},{X=556,Y=339},{X=538,Y=338}}, Confidence 0.6060        
     Word: 'stand', Bounding polygon {{X=558,Y=333},{X=572,Y=334},{X=571,Y=340},{X=557,Y=339}}, Confidence 0.4890
     Word: 'up', Bounding polygon {{X=574,Y=334},{X=580,Y=334},{X=580,Y=340},{X=573,Y=340}}, Confidence 0.8150
   Line: '12:00 PM-1:00 PM', Bounding polygon {{X=537,Y=340},{X=583,Y=340},{X=583,Y=347},{X=536,Y=346}}
     Word: '12:00', Bounding polygon {{X=539,Y=341},{X=553,Y=341},{X=552,Y=347},{X=538,Y=347}}, Confidence 0.8260
     Word: 'PM-1:00', Bounding polygon {{X=554,Y=341},{X=575,Y=341},{X=574,Y=347},{X=553,Y=347}}, Confidence 0.2090       
     Word: 'PM', Bounding polygon {{X=576,Y=341},{X=583,Y=341},{X=582,Y=347},{X=575,Y=347}}, Confidence 0.0390
   Line: 'Delle Marckre', Bounding polygon {{X=538,Y=347},{X=582,Y=347},{X=582,Y=352},{X=538,Y=353}}
     Word: 'Delle', Bounding polygon {{X=540,Y=348},{X=559,Y=347},{X=558,Y=353},{X=539,Y=353}}, Confidence 0.5800
     Word: 'Marckre', Bounding polygon {{X=560,Y=347},{X=582,Y=348},{X=582,Y=353},{X=559,Y=353}}, Confidence 0.2750       
   Line: 'Product review', Bounding polygon {{X=538,Y=370},{X=577,Y=370},{X=577,Y=376},{X=538,Y=375}}
     Word: 'Product', Bounding polygon {{X=539,Y=370},{X=559,Y=371},{X=558,Y=376},{X=539,Y=376}}, Confidence 0.6150       
     Word: 'review', Bounding polygon {{X=560,Y=371},{X=576,Y=371},{X=575,Y=376},{X=559,Y=376}}, Confidence 0.0400 

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы ИИ Azure, можно удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней.

Дальнейшие действия

В этом кратком руководстве вы узнали, как установить клиентский пакет SDK для анализа изображений и выполнять базовые вызовы анализа изображений. Далее ознакомьтесь с дополнительными сведениями о функциях API Analysis 4.0.

Используйте REST API анализа изображений для чтения текста и создания субтитров для образа (только версии 4.0).

Совет

API Анализа 4.0 может выполнять множество различных операций. Примеры, демонстрирующие все доступные функции, см. в руководстве по анализу изображений.

Предварительные требования

  • подписка Azure — создайте бесплатную учетную запись.
  • Получив подписку Azure, , создайте ресурс визуального распознавания в портал Azure, чтобы получить ключ и конечную точку. Чтобы использовать функцию субтитров, описанную в этом кратком руководстве, необходимо создать ресурс в одном из следующих регионов Azure: Восточная часть США, Центральная Франция, Центральная Корея, Северная Европа, Юго-Восточная Азия, Западная Европа, Западная часть США, Восточная Азия. После развертывания ресурса выберите элемент Перейти к ресурсу.
    • Вам потребуются ключ и конечная точка из создаваемого ресурса, чтобы подключить приложение к службе "Визуальное распознавание ИИ Azure". Ключ и конечная точка будут вставлены в приведенный ниже код в кратком руководстве.
    • Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
  • Установленная программа cURL.

Анализ изображения

Чтобы проанализировать изображение на наличие разных визуальных признаков:

  1. Скопируйте следующую curl команду в текстовый редактор.

    curl.exe -H "Ocp-Apim-Subscription-Key: <subscriptionKey>" -H "Content-Type: application/json" "https://<endpoint>/computervision/imageanalysis:analyze?features=caption,read&model-version=latest&language=en&api-version=2023-02-01-preview" -d "{'url':'https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'}"
    
  2. При необходимости внесите следующие изменения в команду.

    1. Замените значение ключом ресурса визуального <subscriptionKey> распознавания.
    2. Замените значение конечной точкой ресурса Визуального <endpoint> распознавания. Например: https://YourResourceName.cognitiveservices.azure.com.
    3. При необходимости замените URL-адрес изображения в тексте запроса (https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png) URL-адресом другого изображения для анализа.
  3. Откройте окно командной строки.

  4. Вставьте измененную curl команду из текстового редактора в окно командной строки и выполните команду .

Изучите ответ.

Успешный ответ возвращается в формате JSON, как показано в следующем примере:

{
    "captionResult":
    {
        "text": "a man pointing at a screen",
        "confidence": 0.4891590476036072
    },
    "modelVersion": "2023-02-01-preview",
    "metadata":
    {
        "width": 1038,
        "height": 692
    },
    "readResult":
    {
        "stringIndexType": "TextElements",
        "content": "9:35 AM\nE Conference room 154584354\n#: 555-173-4547\nTown Hall\n9:00 AM - 10:00 AM\nAaron Buaion\nDaily SCRUM\n10:00 AM 11:00 AM\nChurlette de Crum\nQuarterly NI Hands\n11.00 AM-12:00 PM\nBebek Shaman\nWeekly stand up\n12:00 PM-1:00 PM\nDelle Marckre\nProduct review",
        "pages":
        [
            {
                "height": 692,
                "width": 1038,
                "angle": 0.3048,
                "pageNumber": 1,
                "words":
                [
                    {"content":"9:35","boundingBox":[131,130,171,130,171,149,130,149],"confidence":0.993,"span":{"offset":0,"length":4}},
                    {"content":"AM","boundingBox":[179,130,204,130,203,149,178,149],"confidence":0.998,"span":{"offset":5,"length":2}},
                    {"content":"E","boundingBox":[131,154,135,154,135,161,131,161],"confidence":0.104,"span":{"offset":8,"length":1}},
                    {"content":"Conference","boundingBox":[142,154,174,154,173,161,141,161],"confidence":0.902,"span":{"offset":10,"length":10}},
                    {"content":"room","boundingBox":[175,154,189,155,188,161,175,161],"confidence":0.796,"span":{"offset":21,"length":4}},
                    {"content":"154584354","boundingBox":[192,155,224,154,223,162,191,161],"confidence":0.864,"span":{"offset":26,"length":9}},
                    {"content":"#:","boundingBox":[131,163,139,164,139,171,131,171],"confidence":0.036,"span":{"offset":36,"length":2}},
                    {"content":"555-173-4547","boundingBox":[142,164,182,165,181,171,142,171],"confidence":0.597,"span":{"offset":39,"length":12}},
                    {"content":"Town","boundingBox":[547,181,568,181,568,190,546,191],"confidence":0.981,"span":{"offset":52,"length":4}},
                    {"content":"Hall","boundingBox":[570,181,590,181,590,191,570,190],"confidence":0.991,"span":{"offset":57,"length":4}},
                    {"content":"9:00","boundingBox":[546,192,555,192,555,200,546,200],"confidence":0.09,"span":{"offset":62,"length":4}},
                    {"content":"AM","boundingBox":[557,192,565,192,565,200,557,200],"confidence":0.991,"span":{"offset":67,"length":2}},
                    {"content":"-","boundingBox":[567,192,569,192,569,200,567,200],"confidence":0.691,"span":{"offset":70,"length":1}},
                    {"content":"10:00","boundingBox":[570,192,585,193,584,200,570,200],"confidence":0.885,"span":{"offset":72,"length":5}},
                    {"content":"AM","boundingBox":[586,193,593,194,593,200,586,200],"confidence":0.991,"span":{"offset":78,"length":2}},
                    {"content":"Aaron","boundingBox":[545,202,560,202,559,208,544,208],"confidence":0.602,"span":{"offset":81,"length":5}},
                    {"content":"Buaion","boundingBox":[561,202,580,202,579,208,560,208],"confidence":0.291,"span":{"offset":87,"length":6}},
                    {"content":"Daily","boundingBox":[538,259,551,260,550,266,538,265],"confidence":0.175,"span":{"offset":94,"length":5}},
                    {"content":"SCRUM","boundingBox":[552,260,570,260,570,266,551,266],"confidence":0.114,"span":{"offset":100,"length":5}},
                    {"content":"10:00","boundingBox":[539,267,553,267,552,273,538,272],"confidence":0.857,"span":{"offset":106,"length":5}},
                    {"content":"AM","boundingBox":[554,267,561,267,560,273,553,273],"confidence":0.998,"span":{"offset":112,"length":2}},
                    {"content":"11:00","boundingBox":[564,267,578,267,577,273,563,273],"confidence":0.479,"span":{"offset":115,"length":5}},
                    {"content":"AM","boundingBox":[579,267,586,267,585,273,578,273],"confidence":0.994,"span":{"offset":121,"length":2}},
                    {"content":"Churlette","boundingBox":[539,274,562,274,561,279,538,279],"confidence":0.464,"span":{"offset":124,"length":9}},
                    {"content":"de","boundingBox":[563,274,569,274,568,279,562,279],"confidence":0.81,"span":{"offset":134,"length":2}},
                    {"content":"Crum","boundingBox":[570,274,582,273,581,279,569,279],"confidence":0.885,"span":{"offset":137,"length":4}},
                    {"content":"Quarterly","boundingBox":[540,296,562,296,562,302,539,302],"confidence":0.523,"span":{"offset":142,"length":9}},
                    {"content":"NI","boundingBox":[563,296,570,296,570,302,563,302],"confidence":0.303,"span":{"offset":152,"length":2}},
                    {"content":"Hands","boundingBox":[572,296,588,296,588,302,571,302],"confidence":0.613,"span":{"offset":155,"length":5}},
                    {"content":"11.00","boundingBox":[538,304,552,304,552,310,538,310],"confidence":0.618,"span":{"offset":161,"length":5}},
                    {"content":"AM-12:00","boundingBox":[554,304,578,304,577,310,553,310],"confidence":0.27,"span":{"offset":167,"length":8}},
                    {"content":"PM","boundingBox":[579,304,586,304,586,309,578,310],"confidence":0.662,"span":{"offset":176,"length":2}},
                    {"content":"Bebek","boundingBox":[539,310,554,310,554,317,539,316],"confidence":0.611,"span":{"offset":179,"length":5}},
                    {"content":"Shaman","boundingBox":[555,310,576,311,576,317,555,317],"confidence":0.605,"span":{"offset":185,"length":6}},
                    {"content":"Weekly","boundingBox":[538,332,557,333,556,339,538,338],"confidence":0.606,"span":{"offset":192,"length":6}},
                    {"content":"stand","boundingBox":[558,333,572,334,571,340,557,339],"confidence":0.489,"span":{"offset":199,"length":5}},
                    {"content":"up","boundingBox":[574,334,580,334,580,340,573,340],"confidence":0.815,"span":{"offset":205,"length":2}},
                    {"content":"12:00","boundingBox":[539,341,553,341,552,347,538,347],"confidence":0.826,"span":{"offset":208,"length":5}},
                    {"content":"PM-1:00","boundingBox":[554,341,575,341,574,347,553,347],"confidence":0.209,"span":{"offset":214,"length":7}},
                    {"content":"PM","boundingBox":[576,341,583,341,582,347,575,347],"confidence":0.039,"span":{"offset":222,"length":2}},
                    {"content":"Delle","boundingBox":[540,348,559,347,558,353,539,353],"confidence":0.58,"span":{"offset":225,"length":5}},
                    {"content":"Marckre","boundingBox":[560,347,582,348,582,353,559,353],"confidence":0.275,"span":{"offset":231,"length":7}},
                    {"content":"Product","boundingBox":[539,370,559,371,558,376,539,376],"confidence":0.615,"span":{"offset":239,"length":7}},
                    {"content":"review","boundingBox":[560,371,576,371,575,376,559,376],"confidence":0.04,"span":{"offset":247,"length":6}}
                ],
                "spans":
                [
                    {"offset":0,"length":253}
                ],
                "lines":
                [
                    {"content":"9:35 AM","boundingBox":[130,129,215,130,215,149,130,148],"spans":[{"offset":0,"length":7}]},
                    {"content":"E Conference room 154584354","boundingBox":[130,153,224,154,224,161,130,161],"spans":[{"offset":8,"length":27}]},
                    {"content":"#: 555-173-4547","boundingBox":[130,163,182,164,181,171,130,170],"spans":[{"offset":36,"length":15}]},
                    {"content":"Town Hall","boundingBox":[546,180,590,180,590,190,546,190],"spans":[{"offset":52,"length":9}]},
                    {"content":"9:00 AM - 10:00 AM","boundingBox":[546,191,596,192,596,200,546,199],"spans":[{"offset":62,"length":18}]},
                    {"content":"Aaron Buaion","boundingBox":[543,201,581,201,581,208,543,208],"spans":[{"offset":81,"length":12}]},
                    {"content":"Daily SCRUM","boundingBox":[537,259,575,260,575,266,537,265],"spans":[{"offset":94,"length":11}]},
                    {"content":"10:00 AM 11:00 AM","boundingBox":[536,266,590,266,590,272,536,272],"spans":[{"offset":106,"length":17}]},
                    {"content":"Churlette de Crum","boundingBox":[538,273,584,273,585,279,538,279],"spans":[{"offset":124,"length":17}]},
                    {"content":"Quarterly NI Hands","boundingBox":[538,295,588,295,588,301,538,302],"spans":[{"offset":142,"length":18}]},
                    {"content":"11.00 AM-12:00 PM","boundingBox":[536,304,588,303,588,309,536,310],"spans":[{"offset":161,"length":17}]},
                    {"content":"Bebek Shaman","boundingBox":[538,310,577,310,577,316,538,316],"spans":[{"offset":179,"length":12}]},
                    {"content":"Weekly stand up","boundingBox":[537,332,582,333,582,339,537,338],"spans":[{"offset":192,"length":15}]},
                    {"content":"12:00 PM-1:00 PM","boundingBox":[537,340,583,340,583,347,536,346],"spans":[{"offset":208,"length":16}]},
                    {"content":"Delle Marckre","boundingBox":[538,347,582,347,582,352,538,353],"spans":[{"offset":225,"length":13}]},
                    {"content":"Product review","boundingBox":[538,370,577,370,577,376,538,375],"spans":[{"offset":239,"length":14}]}
                ]
            }
        ],
        "styles": [],
        "modelVersion": "2022-04-30"
    }
}

Дальнейшие действия

Из этого краткого руководства вы узнали, как выполнять базовые вызовы анализа изображений с помощью REST API. Далее ознакомьтесь с дополнительными сведениями о функциях API Analysis 4.0.