クイックスタート: 光学式文字認識 (OCR)

Computer Vision Read REST API またはクライアント ライブラリの使用を開始します。 Read APIは、画像からテキストを抽出し、それを構造化文字列として返す AI アルゴリズムを提供します。 以下の手順に従って、パッケージを自分のアプリケーションにインストールし、基本タスクのコード例を試してみましょう。

OCR クライアント ライブラリを使用して、リモート画像内の印刷されたテキストや手書きのテキストを読み取ります。 OCR サービスは、画像に映っているテキストを読み取って、文字ストリームに変換することができます。 テキスト認識の詳細については、光学式文字認識 (OCR) の概要を参照してください。 このセクションのコードでは、最新の Read 3.0 用 Computer Vision SDK リリースを使います。

ヒント

ローカルの画像からテキストを抽出することもできます。 ComputerVisionClient のメソッドを参照してください (ReadInStreamAsync など)。 また、ローカルの画像に関連したシナリオについては、GitHub 上のサンプル コードを参照してください。

リファレンスのドキュメント | ライブラリのソース コード | パッケージ (NuGet) | サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • Visual Studio IDE または現在のバージョンの .NET Core
  • Azure サブスクリプションを入手したら、Azure portal で Computer Vision リソースを作成し、キーとエンドポイントを取得します。 デプロイされたら、 [リソースに移動] をクリックします。
    • 対象のアプリケーションを Computer Vision サービスに接続するには、作成したリソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。
    • Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

印刷されたテキストと手書きのテキストを読み取る

  1. 新しい C# アプリケーションを作成します。

    Visual Studio を使用して、新しい .NET Core アプリケーションを作成します。

    クライアント ライブラリをインストールする

    新しいプロジェクトを作成したら、ソリューション エクスプローラーでプロジェクト ソリューションを右クリックし、 [NuGet パッケージの管理] を選択して、クライアント ライブラリをインストールします。 パッケージ マネージャーが開いたら、[参照] を選択し、[プレリリースを含める] をオンにして、 を検索します。 バージョン 7.0.0 を選択し、 [インストール] を選択します。

  2. キーとエンドポイントを見つけます。

    Azure Portal にアクセスします。 「前提条件」セクションで作成した Computer Vision リソースが正常にデプロイされた場合、 [次の手順] の下にある [リソースに移動] ボタンをクリックします。 キーとエンドポイントは、リソースの [key and endpoint](キーとエンドポイント) ページの [リソース管理] にあります。

  3. プロジェクト ディレクトリから、好みのエディターまたは IDE で Program.cs ファイルを開きます。 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();
            }
    
        }
    }
    
  4. キーとエンドポイントを、コード内に示されている場所に貼り付けます。 Computer Vision エンドポイントの形式は https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/ です。

    重要

    終わったらコードからキーを削除し、公開しないよう注意してください。 運用環境では、資格情報を安全に格納して利用するための方法を用いることを検討してください。 たとえば、Azure Key Vault が考えられます。

  5. 省略可能な手順として、モデル バージョンを指定する方法に関するページを参照してください。 たとえば、最新の GA モデルを明示的に指定するには、次のように ReadAsync 呼び出しを編集します。 パラメーターを省くか "latest" を使用すると、最新の GA モデルが自動的に使用されます。

      // Read text from URL with a specific model version
      var textHeaders = await client.ReadAsync(urlFile,null,null,"2022-04-30");
    
  6. アプリケーションを実行します。

    IDE ウィンドウ上部にある [デバッグ] ボタンをクリックします。


出力

Azure Cognitive Services Computer Vision - .NET quickstart example

----------------------------------------------------------
READ FILE FROM URL

Extracting text from URL file printed_text.jpg...


Nutrition Facts Amount Per Serving
Serving size: 1 bar (40g)
Serving Per Package: 4
Total Fat 13g
Saturated Fat 1.5g
Amount Per Serving
Trans Fat 0g
Calories 190
Cholesterol 0mg
ories from Fat 110
Sodium 20mg
nt Daily Values are based on Vitamin A 50%
calorie diet.

リソースをクリーンアップする

Cognitive Services サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ

このクイックスタートでは、OCR クライアント ライブラリをインストールし、Read API を使用する方法について学習しました。 次は、Read API の機能の詳細について学習しましょう。

[Read API を呼び出す](../Vision-API-How-to-Topics/call-read-api.md)

OCR クライアント ライブラリを使用して、リモート画像内の印刷されたテキストや手書きのテキストを読み取ります。 OCR サービスは、画像に映っているテキストを読み取って、文字ストリームに変換することができます。 テキスト認識の詳細については、光学式文字認識 (OCR) の概要を参照してください。

ヒント

また、ローカルの画像からテキストを読み取ることもできます。 ComputerVisionClientOperationsMixin のメソッドを参照してください (read_in_stream など)。 また、ローカルの画像に関連したシナリオについては、GitHub 上のサンプル コードを参照してください。

リファレンス ドキュメントライブラリのソース コードパッケージ (PiPy)サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します

  • Python 3.x

    • Python のインストールには、pip が含まれている必要があります。 pip がインストールされているかどうかを確認するには、コマンド ラインで pip --version を実行します。 最新バージョンの Python をインストールして pip を入手してください。
  • Azure サブスクリプションを入手したら、Azure portal で Computer Vision リソースを作成し、キーとエンドポイントを取得します。 デプロイされたら、 [リソースに移動] をクリックします。

    • 対象のアプリケーションを Computer Vision サービスに接続するには、作成したリソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。
    • Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

印刷されたテキストと手書きのテキストを読み取る

  1. クライアント ライブラリをインストールします。

    次のようにして、クライアント ライブラリをインストールできます。

    pip install --upgrade azure-cognitiveservices-vision-computervision
    

    また、Pillow ライブラリもインストールします。

    pip install pillow
    
  2. 新しい Python アプリケーションを作成する

    新しい Python ファイル (たとえば quickstart-file.py) を作成します。 次に、お好きなエディターまたは IDE で開きます。

  3. キーとエンドポイントを見つけます。

    Azure Portal にアクセスします。 「前提条件」セクションで作成した Computer Vision リソースが正常にデプロイされた場合、 [次の手順] の下にある [リソースに移動] ボタンをクリックします。 キーとエンドポイントは、リソースの [key and endpoint](キーとエンドポイント) ページの [リソース管理] にあります。

  4. quickstart-file.py の内容を次のコードに置き換えます。

    from azure.cognitiveservices.vision.computervision import ComputerVisionClient
    from azure.cognitiveservices.vision.computervision.models import OperationStatusCodes
    from azure.cognitiveservices.vision.computervision.models import VisualFeatureTypes
    from msrest.authentication import CognitiveServicesCredentials
    
    from array import array
    import os
    from PIL import Image
    import sys
    import time
    
    '''
    Authenticate
    Authenticates your credentials and creates a client.
    '''
    subscription_key = "PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE"
    endpoint = "PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE"
    
    computervision_client = ComputerVisionClient(endpoint, CognitiveServicesCredentials(subscription_key))
    '''
    END - Authenticate
    '''
    
    '''
    OCR: Read File using the Read API, extract text - remote
    This example will extract text in an image, then print results, line by line.
    This API call can also extract handwriting style text (not shown).
    '''
    print("===== Read File - remote =====")
    # Get an image with text
    read_image_url = "https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/master/articles/cognitive-services/Computer-vision/Images/readsample.jpg"
    
    # Call API with URL and raw response (allows you to get the operation location)
    read_response = computervision_client.read(read_image_url,  raw=True)
    
    # Get the operation location (URL with an ID at the end) from the response
    read_operation_location = read_response.headers["Operation-Location"]
    # Grab the ID from the URL
    operation_id = read_operation_location.split("/")[-1]
    
    # Call the "GET" API and wait for it to retrieve the results 
    while True:
        read_result = computervision_client.get_read_result(operation_id)
        if read_result.status not in ['notStarted', 'running']:
            break
        time.sleep(1)
    
    # Print the detected text, line by line
    if read_result.status == OperationStatusCodes.succeeded:
        for text_result in read_result.analyze_result.read_results:
            for line in text_result.lines:
                print(line.text)
                print(line.bounding_box)
    print()
    '''
    END - Read File - remote
    '''
    
    print("End of Computer Vision quickstart.")
    
    
  5. キーとエンドポイントを、コード内に示されている場所に貼り付けます。 Computer Vision エンドポイントの形式は https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/ です。

    重要

    終わったらコードからキーを削除し、公開しないよう注意してください。 運用環境では、資格情報を安全に格納して利用するための方法を用いることを検討してください。 たとえば、Azure Key Vault が考えられます。

  6. 省略可能な手順として、モデル バージョンを指定する方法に関するページを参照してください。 たとえば、最新の GA モデルを明示的に指定するには、次のように read ステートメントを編集します。 パラメーターを省くか "latest" を使用すると、最新の GA モデルが自動的に使用されます。

       # Call API with URL and raw response (allows you to get the operation location)
       read_response = computervision_client.read(read_image_url,  raw=True, model_version="2022-04-30")
    
  7. クイック スタート ファイルで python コマンドを使用して、アプリケーションを実行します。

    python quickstart-file.py
    

出力

===== Read File - remote =====
The quick brown fox jumps
[38.0, 650.0, 2572.0, 699.0, 2570.0, 854.0, 37.0, 815.0]
Over
[184.0, 1053.0, 508.0, 1044.0, 510.0, 1123.0, 184.0, 1128.0]
the lazy dog!
[639.0, 1011.0, 1976.0, 1026.0, 1974.0, 1158.0, 637.0, 1141.0]

End of Computer Vision quickstart.

リソースをクリーンアップする

Cognitive Services サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ

このクイックスタートでは、OCR クライアント ライブラリをインストールし、Read API を使用する方法について学習しました。 次は、Read API の機能の詳細について学習しましょう。

[Read API を呼び出す](../Vision-API-How-to-Topics/call-read-api.md)

OCR クライアント ライブラリを使用して、リモート画像内の印刷されたテキストや手書きのテキストを読み取ります。 OCR サービスは、画像に映っているテキストを読み取って、文字ストリームに変換することができます。 テキスト認識の詳細については、光学式文字認識 (OCR) の概要を参照してください。

ヒント

また、ローカル環境の画像のテキストを読み取ることもできます。 ComputerVision のメソッドを参照してください (read など)。 また、ローカルの画像に関連したシナリオについては、GitHub 上のサンプル コードを参照してください。

リファレンス ドキュメントライブラリ ソース コード成果物 (Maven)サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 最新バージョンの Java Development Kit (JDK)
  • Gradle ビルド ツール、または別の依存関係マネージャー。
  • Azure サブスクリプションを入手したら、Azure portal で Computer Vision リソースを作成し、キーとエンドポイントを取得します。 デプロイされたら、 [リソースに移動] をクリックします。
    • 対象のアプリケーションを Computer Vision サービスに接続するには、作成したリソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。
    • Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

印刷されたテキストと手書きのテキストを読み取る

  1. 新しい Gradle プロジェクトを作成します。

    コンソール ウィンドウ (cmd、PowerShell、Bash など) で、ご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。

    mkdir myapp && cd myapp
    

    作業ディレクトリから gradle init コマンドを実行します。 次のコマンドを実行すると、build.gradle.kts を含む、Gradle 用の重要なビルド ファイルが作成されます。これは、アプリケーションを作成して構成するために、実行時に使用されます。

    gradle init --type basic
    

    DSL を選択するよう求められたら、Kotlin を選択します。

  2. クライアント ライブラリをインストールします。

    このクイックスタートでは、Gradle 依存関係マネージャーを使用します。 クライアント ライブラリとその他の依存関係マネージャーの情報については、Maven Central Repository を参照してください。

    build.gradle.kts を検索し、任意の IDE またはテキスト エディターで開きます。 その後、次のビルド構成をコピーします。 この構成では、エントリ ポイントが ComputerVisionQuickstart クラスである Java アプリケーションとしてプロジェクトが定義されます。 これによって、Computer Vision ライブラリがインポートされます。

    plugins {
        java
        application
    }
    application { 
        mainClass.set("ComputerVisionQuickstart")
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        implementation(group = "com.microsoft.azure.cognitiveservices", name = "azure-cognitiveservices-computervision", version = "1.0.6-beta")
    }
    
  3. テスト画像を設定します。

    プロジェクトの src/main/ フォルダーに resources/ フォルダーを作成し、テキストを読み取る画像を追加します。 使用するサンプル画像は、ここからダウンロードできます。

  4. Java ファイルを作成します。

    作業ディレクトリから次のコマンドを実行し、プロジェクト ソース フォルダーを作成します。

    mkdir -p src/main/java
    

    新しいフォルダーに移動し、ComputerVisionQuickstart.java という名前のファイルを作成します。 好みのエディターまたは IDE で開きます。

  5. キーとエンドポイントを見つけます。

    Azure Portal にアクセスします。 「前提条件」セクションで作成した Computer Vision リソースが正常にデプロイされた場合、 [次の手順] の下にある [リソースに移動] ボタンをクリックします。 キーとエンドポイントは、リソースの [key and endpoint](キーとエンドポイント) ページの [リソース管理] にあります。

  6. このファイルの内容を次のコードに置き換えます。 このコードでは、リモート イメージ パスを受け取って画像のテキストをコンソールに出力するメソッド ReadFromUrl が定義されています。

    import com.microsoft.azure.cognitiveservices.vision.computervision.*;
    import com.microsoft.azure.cognitiveservices.vision.computervision.implementation.ComputerVisionImpl;
    import com.microsoft.azure.cognitiveservices.vision.computervision.models.*;
    
    import java.io.*;
    import java.nio.file.Files;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.UUID;
    
    public class ComputerVisionQuickstart {
    
        static String subscriptionKey = "PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE";
        static String endpoint = "PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE";
    
        public static void main(String[] args) {
            
            System.out.println("\nAzure Cognitive Services Computer Vision - Java Quickstart Sample");
    
            // Create an authenticated Computer Vision client.
            ComputerVisionClient compVisClient = Authenticate(subscriptionKey, endpoint); 
    
            // Read from remote image
            ReadFromUrl(compVisClient);
        }
    
        public static ComputerVisionClient Authenticate(String subscriptionKey, String endpoint){
            return ComputerVisionManager.authenticate(subscriptionKey).withEndpoint(endpoint);
        }
        
        /**
         * OCR with READ : Performs a Read Operation
         * @param client instantiated vision client
         */
        private static void ReadFromUrl(ComputerVisionClient client) {
            System.out.println("-----------------------------------------------");
            
            String remoteTextImageURL = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/printed_text.jpg";
            System.out.println("Read with URL: " + remoteTextImageURL);
    
            try {
                // Cast Computer Vision to its implementation to expose the required methods
                ComputerVisionImpl vision = (ComputerVisionImpl) client.computerVision();
    
                // Read in remote image and response header
                ReadHeaders responseHeader = vision.readWithServiceResponseAsync(remoteTextImageURL, null)
                .toBlocking()
                .single()
                .headers();
    
                // Extract the operation Id from the operationLocation header
                String operationLocation = responseHeader.operationLocation();
                System.out.println("Operation Location:" + operationLocation);
    
                getAndPrintReadResult(vision, operationLocation);
    
            } catch (Exception e) {
                System.out.println(e.getMessage());
                e.printStackTrace();
            }
        }
    
        /**
         * Extracts the OperationId from a Operation-Location returned by the POST Read operation
         * @param operationLocation
         * @return operationId
         */
        private static String extractOperationIdFromOpLocation(String operationLocation) {
            if (operationLocation != null && !operationLocation.isEmpty()) {
                String[] splits = operationLocation.split("/");
    
                if (splits != null && splits.length > 0) {
                    return splits[splits.length - 1];
                }
            }
            throw new IllegalStateException("Something went wrong: Couldn't extract the operation id from the operation location");
        }
    
        /**
         * Polls for Read result and prints results to console
         * @param vision Computer Vision instance
         * @return operationLocation returned in the POST Read response header
         */
        private static void getAndPrintReadResult(ComputerVision vision, String operationLocation) throws InterruptedException {
            System.out.println("Polling for Read results ...");
    
            // Extract OperationId from Operation Location
            String operationId = extractOperationIdFromOpLocation(operationLocation);
    
            boolean pollForResult = true;
            ReadOperationResult readResults = null;
    
            while (pollForResult) {
                // Poll for result every second
                Thread.sleep(1000);
                readResults = vision.getReadResult(UUID.fromString(operationId));
    
                // The results will no longer be null when the service has finished processing the request.
                if (readResults != null) {
                    // Get request status
                    OperationStatusCodes status = readResults.status();
    
                    if (status == OperationStatusCodes.FAILED || status == OperationStatusCodes.SUCCEEDED) {
                        pollForResult = false;
                    }
                }
            }
    
            // Print read results, page per page
            for (ReadResult pageResult : readResults.analyzeResult().readResults()) {
                System.out.println("");
                System.out.println("Printing Read results for page " + pageResult.page());
                StringBuilder builder = new StringBuilder();
    
                for (Line line : pageResult.lines()) {
                    builder.append(line.text());
                    builder.append("\n");
                }
    
                System.out.println(builder.toString());
            }
        }
    }
    
  7. キーとエンドポイントを、上のコードで示されている場所に貼り付けます。 Computer Vision エンドポイントの形式は https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/ です。

    重要

    終わったらコードからキーを削除し、公開しないよう注意してください。 運用環境では、資格情報を安全に格納して利用するための方法を用いることを検討してください。 たとえば、Azure Key Vault が考えられます。

  8. 次のコマンドでアプリをビルドします。

    gradle build
    

    次に、gradle run コマンドをでアプリケーションを実行します。

    gradle run
    

リソースをクリーンアップする

Cognitive Services サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ

このクイックスタートでは、OCR クライアント ライブラリをインストールし、Read API を使用する方法について学習しました。 次は、Read API の機能の詳細について学習しましょう。

[Read API を呼び出す](../Vision-API-How-to-Topics/call-read-api.md)

Read API を使用して、画像内の印刷されたテキストや手書きのテキストを読み取ります。 OCR サービスは、画像に映っているテキストを読み取って、文字ストリームに変換することができます。 テキスト認識の詳細については、光学式文字認識 (OCR) の概要を参照してください。

ヒント

また、ローカルの画像からテキストを読み取ることもできます。 ComputerVisionClient のメソッドを参照してください (readInStream など)。 また、ローカルの画像に関連したシナリオについては、GitHub 上のサンプル コードを参照してください。

リファレンスのドキュメント | ライブラリのソース コード | パッケージ (npm) | サンプル

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 最新バージョンの Node.js
  • Azure サブスクリプションを入手したら、Azure portal で Computer Vision リソースを作成し、キーとエンドポイントを取得します。 デプロイされたら、 [リソースに移動] をクリックします。
    • 対象のアプリケーションを Computer Vision サービスに接続するには、作成したリソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。
    • Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

印刷されたテキストと手書きのテキストを読み取る

  1. 新しい Node.js アプリケーションを作成します。

    コンソール ウィンドウ (cmd、PowerShell、Bash など) で、ご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。

    mkdir myapp && cd myapp
    

    npm init コマンドを実行し、package.json ファイルを使用して node アプリケーションを作成します。

    npm init
    

    クライアント ライブラリをインストールする

    ms-rest-azure および @azure/cognitiveservices-computervision NPM パッケージをインストールします。

    npm install @azure/cognitiveservices-computervision
    

    また、async モジュールもインストールします。

    npm install async
    

    アプリの package.json ファイルが依存関係によって更新されます。

    index.js という新しいファイルを作成し、テキスト エディターで開きます。

  2. キーとエンドポイントを見つけます。

    Azure Portal にアクセスします。 「前提条件」セクションで作成した Computer Vision リソースが正常にデプロイされた場合、 [次の手順] の下にある [リソースに移動] ボタンをクリックします。 キーとエンドポイントは、リソースの [key and endpoint](キーとエンドポイント) ページの [リソース管理] にあります。

  3. 次のコードを index.js ファイルに貼り付けます。

    'use strict';
    
    const async = require('async');
    const fs = require('fs');
    const https = require('https');
    const path = require("path");
    const createReadStream = require('fs').createReadStream
    const sleep = require('util').promisify(setTimeout);
    const ComputerVisionClient = require('@azure/cognitiveservices-computervision').ComputerVisionClient;
    const ApiKeyCredentials = require('@azure/ms-rest-js').ApiKeyCredentials;
    /**
     * AUTHENTICATE
     * This single client is used for all examples.
     */
    const key = 'PASTE_YOUR_COMPUTER_VISION_SUBSCRIPTION_KEY_HERE';
    const endpoint = 'PASTE_YOUR_COMPUTER_VISION_ENDPOINT_HERE';
    
    const computerVisionClient = new ComputerVisionClient(
      new ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': key } }), endpoint);
    /**
     * END - Authenticate
     */
    
    function computerVision() {
      async.series([
        async function () {
    
          /**
           * OCR: READ PRINTED & HANDWRITTEN TEXT WITH THE READ API
           * Extracts text from images using OCR (optical character recognition).
           */
          console.log('-------------------------------------------------');
          console.log('READ PRINTED, HANDWRITTEN TEXT AND PDF');
          console.log();
    
          // URL images containing printed and/or handwritten text. 
          // The URL can point to image files (.jpg/.png/.bmp) or multi-page files (.pdf, .tiff).
          const printedTextSampleURL = 'https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/ComputerVision/Images/printed_text.jpg';
    
          // Recognize text in printed image from a URL
          console.log('Read printed text from URL...', printedTextSampleURL.split('/').pop());
          const printedResult = await readTextFromURL(computerVisionClient, printedTextSampleURL);
          printRecText(printedResult);
    
          // Perform read and await the result from URL
          async function readTextFromURL(client, url) {
            // To recognize text in a local image, replace client.read() with readTextInStream() as shown:
            let result = await client.read(url);
            // Operation ID is last path segment of operationLocation (a URL)
            let operation = result.operationLocation.split('/').slice(-1)[0];
    
            // Wait for read recognition to complete
            // result.status is initially undefined, since it's the result of read
            while (result.status !== "succeeded") { await sleep(1000); result = await client.getReadResult(operation); }
            return result.analyzeResult.readResults; // Return the first page of result. Replace [0] with the desired page if this is a multi-page file such as .pdf or .tiff.
          }
    
          // Prints all text from Read result
          function printRecText(readResults) {
            console.log('Recognized text:');
            for (const page in readResults) {
              if (readResults.length > 1) {
                console.log(`==== Page: ${page}`);
              }
              const result = readResults[page];
              if (result.lines.length) {
                for (const line of result.lines) {
                  console.log(line.words.map(w => w.text).join(' '));
                }
              }
              else { console.log('No recognized text.'); }
            }
          }
    
          /**
           * 
           * Download the specified file in the URL to the current local folder
           * 
           */
          function downloadFilesToLocal(url, localFileName) {
            return new Promise((resolve, reject) => {
              console.log('--- Downloading file to local directory from: ' + url);
              const request = https.request(url, (res) => {
                if (res.statusCode !== 200) {
                  console.log(`Download sample file failed. Status code: ${res.statusCode}, Message: ${res.statusMessage}`);
                  reject();
                }
                var data = [];
                res.on('data', (chunk) => {
                  data.push(chunk);
                });
                res.on('end', () => {
                  console.log('   ... Downloaded successfully');
                  fs.writeFileSync(localFileName, Buffer.concat(data));
                  resolve();
                });
              });
              request.on('error', function (e) {
                console.log(e.message);
                reject();
              });
              request.end();
            });
          }
    
          /**
           * END - Recognize Printed & Handwritten Text
           */
          console.log();
          console.log('-------------------------------------------------');
          console.log('End of quickstart.');
    
        },
        function () {
          return new Promise((resolve) => {
            resolve();
          })
        }
      ], (err) => {
        throw (err);
      });
    }
    
    computerVision();
    
  4. キーとエンドポイントを、上のコードで示されている場所に貼り付けます。 Computer Vision エンドポイントの形式は https://<your_computer_vision_resource_name>.cognitiveservices.azure.com/ です。

    重要

    終わったらコードからキーを削除し、公開しないよう注意してください。 運用環境では、資格情報を安全に格納して利用するための方法を用いることを検討してください。 たとえば、Azure Key Vault が考えられます。

  5. 省略可能な手順として、モデル バージョンを指定する方法に関するページを参照してください。 たとえば、最新の GA モデルを明示的に指定するには、次のように read ステートメントを編集します。 パラメーターを省くか "latest" を使用すると、最新の GA モデルが自動的に使用されます。

      let result = await client.read(url,{modelVersion:"2022-04-30"});
    
  6. クイック スタート ファイルで node コマンドを使用して、アプリケーションを実行します。

    node index.js
    

出力

-------------------------------------------------
READ PRINTED, HANDWRITTEN TEXT AND PDF

Read printed text from URL... printed_text.jpg
Recognized text:
Nutrition Facts Amount Per Serving
Serving size: 1 bar (40g)
Serving Per Package: 4
Total Fat 13g
Saturated Fat 1.5g
Amount Per Serving
Trans Fat 0g
Calories 190
Cholesterol 0mg
ories from Fat 110
Sodium 20mg
nt Daily Values are based on Vitamin A 50%
calorie diet.

-------------------------------------------------
End of quickstart.

リソースをクリーンアップする

Cognitive Services サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。

次のステップ

このクイックスタートでは、OCR クライアント ライブラリをインストールし、Read API を使用する方法について学習しました。 次は、Read API の機能の詳細について学習しましょう。

[Read API を呼び出す](../Vision-API-How-to-Topics/call-read-api.md)

光学式文字認識 REST API を使用して、印刷されたテキストや手書きのテキストを読み取ります。

Note

このクイックスタートでは、cURL コマンドを使用して REST API を呼び出します。 また、プログラミング言語を使用して REST API を呼び出すこともできます。 C#PythonJavaJavaScript の例については、GitHub のサンプルを参照してください。

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • Azure サブスクリプションを入手したら、Azure portal で Computer Vision リソースを作成し、キーとエンドポイントを取得します。 デプロイされたら、 [リソースに移動] をクリックします。
    • 対象のアプリケーションを Computer Vision サービスに接続するには、作成したリソースのキーとエンドポイントが必要です。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。
    • Free 価格レベル (`F0`) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。
  • インストールされた [cURL](https://curl.haxx.se/)

印刷されたテキストと手書きテキストの抽出

OCR サービスを使用すると、画像またはドキュメント内の可視テキストを抽出し、文字ストリームに変換することができます。 テキスト抽出の詳細については、光学式文字認識 (OCR) の概要を参照してください。

Read API を呼び出す

このサンプルを作成して実行するには、次の手順を実行します。

  1. テキスト エディターに次のコマンドをコピーします。
  2. 必要に応じて、コマンドに次の変更を加えます。
    1. <subscriptionKey> の値をキーに置き換えます。
    2. 要求 URL (`westcentralus`) の最初の部分を独自のエンドポイント URL 内のテキストに置き換えます。

      Note

      2019 年 7 月 1 日より後に作成された新しいリソースには、カスタム サブドメイン名が使用されます。 リージョンのエンドポイントの詳細および全一覧については、「Cognitive Services のカスタム サブドメイン名」を参照してください。

    3. 必要に応じて、要求本文の画像 URL (`https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png\`) を、分析する別の画像の URL に変更します。
  3. コマンド プロンプト ウィンドウを開きます。
  4. テキスト エディターからコマンド プロンプト ウィンドウにコマンドを貼り付けて、コマンドを実行します。
curl -v -X POST "https://westcentralus.api.cognitive.microsoft.com/vision/v3.2/read/analyze" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription key>" --data-ascii "{\"url\":\"https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png\"}"

応答には `Operation-Location` ヘッダーが含まれ、その値は一意の URL になります。 この URL を使用して、読み取り操作の結果に対してクエリを実行します。 URL の有効期間は 48 時間です。

必要に応じて、モデルのバージョンを指定する

省略可能な手順として、モデル バージョンを指定する方法に関するページを参照してください。 たとえば、最新の GA モデルを明示的に指定するには、model-version=2022-04-30 をパラメーターとして使用します。 パラメーターを省くか model-version=latest を使用すると、最新の GA モデルが自動的に使用されます。

curl -v -X POST "https://westcentralus.api.cognitive.microsoft.com/vision/v3.2/read/analyze?model-version=2022-04-30" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription key>" --data-ascii "{\"url\":\"https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png\"}"

読み取りの結果を取得する

  1. テキスト エディターに次のコマンドをコピーします。
  2. URL を前の手順でコピーした `Operation-Location` 値に置き換えます。
  3. 必要に応じて、コマンドに次の変更を加えます。
    1. <subscriptionKey> 値を、サブスクリプション キーに置き換えます。
  4. コマンド プロンプト ウィンドウを開きます。
  5. テキスト エディターからコマンド プロンプト ウィンドウにコマンドを貼り付けて、コマンドを実行します。
curl -v -X GET "https://westcentralus.api.cognitive.microsoft.com/vision/v3.2/read/analyzeResults/{operationId}" -H "Ocp-Apim-Subscription-Key: {subscription key}" --data-ascii "{body}" 

結果の確認

成功応答が JSON で返されます。 サンプル アプリケーションによって成功応答が解析され、次の例のようにコマンド プロンプト ウィンドウに表示されます。

{
  "status": "succeeded",
  "createdDateTime": "2021-04-08T21:56:17.6819115+00:00",
  "lastUpdatedDateTime": "2021-04-08T21:56:18.4161316+00:00",
  "analyzeResult": {
    "version": "3.2",
    "readResults": [
      {
        "page": 1,
        "angle": 0,
        "width": 338,
        "height": 479,
        "unit": "pixel",
        "lines": [
          {
            "boundingBox": [
              25,
              14,
              318,
              14,
              318,
              59,
              25,
              59
            ],
            "text": "NOTHING",
            "appearance": {
              "style": {
                "name": "other",
                "confidence": 0.971
              }
            },
            "words": [
              {
                "boundingBox": [
                  27,
                  15,
                  294,
                  15,
                  294,
                  60,
                  27,
                  60
                ],
                "text": "NOTHING",
                "confidence": 0.994
              }
            ]
          }
        ]
      }
    ]
  }
}

次のステップ

このクイックスタートでは、Read REST API を呼び出す方法について説明しました。 次は、Read API の機能の詳細について学習しましょう。

[Read API を呼び出す](../Vision-API-How-to-Topics/call-read-api.md)

前提条件

  • ご利用の Azure サブスクリプションと Cognitive Services リソースで Vision Studio にサインインします。 この手順に関するヘルプが必要な場合は、概要セクションを参照してください。

印刷されたテキストと手書きのテキストを読み取る

  1. [テキストの抽出] タブを選択し、[画像からテキストを抽出する] というタイトルのパネルを選択します。
  2. 評価エクスペリエンスを使用するには、リソースを選び、価格レベルに従って使用量が発生することについて同意する必要があります。
  3. 使用可能なセットから画像を選択するか、独自の画像をアップロードします。
  4. 画像を選択すると、抽出されたテキストが出力ウィンドウに表示されます。 [JSON] タブを選択して、API 呼び出しから返される JSON 出力を表示することもできます。
  5. 評価エクスペリエンスの下には、この機能をご自身のアプリケーションで使い始めるための次のステップがあります。

次のステップ

このクイック スタートでは、Vision Studio を使用して Read API にアクセスしました。 次は、Read API の機能の詳細について学習しましょう。

[Read API を呼び出す](../Vision-API-How-to-Topics/call-read-api.md)