夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Azure Compture VisionをVisualStudioで試す。

本日はAzure 学習枠です。

少し間が開いてしまいましたが前回に引き続きAzure Cognitive Servicesを試していきます。

現在OCR(文字認識)を試しています。

redhologerbera.hatenablog.com

前回はAzureポータル上で実行できるAzure Cloud ShellでOCRを実行しました。

今回はローカル環境でVisualStudioを使用してOCRを試します。

Microsoft Docsのクイックスタートに基づいて進めていきます。

クイックスタート: 光学式文字認識 (OCR) - Azure Cognitive Services | Microsoft Learn

〇Computre Visionを使用してVisualStudioでOCRを試す。

 ①VisualStudioを起動します。 今回はVisualStudio2019を使用しています。

 ②新しいプロジェクトの作成を選択しプロジェクトを作成します。

 ③コンソールアプリケーションのテンプレートを使用します。

 保存先やプロジェクト名は任意につけてください。

 ここからAzure ComputerVisionのパッケージを導入します。

 ④ソリューションエクスプローラーからNuGetパッケージの管理を開きます。

 ⑤検索バーにAzure Computerと検索しMicrosoft.Azure.CognitiveServices.Vision.ComputerVisionを選択します。

 ⑥Microsoft.Azure.CognitiveServices.Vision.Computerをインストールします。

 ⑦Program.csを次のように書き換えます。

using System;
using System.Collections.Generic;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Threading;
using System.Linq;

namespace ComputerVisionQuickstart
{
    class Program
    {
        // Add your Computer Vision subscription key and endpoint
        static string subscriptionKey = "PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE";
        static string endpoint = "PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE";

        private const string READ_TEXT_URL_IMAGE = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/printed_text.jpg";

        static void Main(string[] args)
        {
            Console.WriteLine("Azure Cognitive Services Computer Vision - .NET quickstart example");
            Console.WriteLine();

            ComputerVisionClient client = Authenticate(endpoint, subscriptionKey);

            // Extract text (OCR) from a URL image using the Read API
            ReadFileUrl(client, READ_TEXT_URL_IMAGE).Wait();
        }

        public static ComputerVisionClient Authenticate(string endpoint, string key)
        {
            ComputerVisionClient client =
              new ComputerVisionClient(new ApiKeyServiceClientCredentials(key))
              { Endpoint = endpoint };
            return client;
        }

        public static async Task ReadFileUrl(ComputerVisionClient client, string urlFile)
        {
            Console.WriteLine("----------------------------------------------------------");
            Console.WriteLine("READ FILE FROM URL");
            Console.WriteLine();

            // Read text from URL
            var textHeaders = await client.ReadAsync(urlFile);
            // After the request, get the operation location (operation ID)
            string operationLocation = textHeaders.OperationLocation;
            Thread.Sleep(2000);

            // Retrieve the URI where the extracted text will be stored from the Operation-Location header.
            // We only need the ID and not the full URL
            const int numberOfCharsInOperationId = 36;
            string operationId = operationLocation.Substring(operationLocation.Length - numberOfCharsInOperationId);

            // Extract the text
            ReadOperationResult results;
            Console.WriteLine($"Extracting text from URL file {Path.GetFileName(urlFile)}...");
            Console.WriteLine();
            do
            {
                results = await client.GetReadResultAsync(Guid.Parse(operationId));
            }
            while ((results.Status == OperationStatusCodes.Running ||
                results.Status == OperationStatusCodes.NotStarted));

            // Display the found text.
            Console.WriteLine();
            var textUrlFileResults = results.AnalyzeResult.ReadResults;
            foreach (ReadResult page in textUrlFileResults)
            {
                foreach (Line line in page.Lines)
                {
                    Console.WriteLine(line.Text);
                }
            }
            Console.WriteLine();
        }

    }
}

⑧Azure Portalを開きすでに作成しているOCRのキーとエンドポイントをコピーします。

 ⑨Program.csに自身のサブスクリプションキーとエンドポイントを入力します。

 ⑩最後にデバッグからデバッグなしで開始を選択します。

以上でサンプルが実行できました。  

     private const string READ_TEXT_URL_IMAGE のURLを変更することで任意の画像の解析もできます。