読み取りモデルを使用する

この攻略ガイドでは、Azure Form Recognizer の読み取りモデルを使用して、ドキュメントから活字と手書きのテキストを抽出する方法について説明します。 読み取りモデルでは、行、単語、場所、言語を検出できます。 任意のプログラミング言語または REST API を使用できます。 テクノロジを学習している場合は、無料のサービスを使用することをお勧めします。 無料のページは 1 か月あたり 500 ページに制限されていることに注意してください。

読み取りモデルは、他のすべての Form Recognizer モデルの基礎です。 レイアウト、一般的なドキュメント、カスタム、事前構築済みの各モデルでは、ドキュメントからテキストを抽出するための基盤として読み取りモデルが使用されます。

現在の API バージョンは、2022-08-31 です。

SDK リファレンス|API リファレンス | パッケージ (NuGet) | サンプル | サポートされている REST API のバージョン

前提条件

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

  • Visual Studio IDE の現在のバージョン。

  • Cognitive Services または Form Recognizer リソース。 Azure サブスクリプションを用意できたら、Azure portal で単一サービスまたはマルチサービスの Form Recognizer リソースを作成し、キーとエンドポイントを取得します。 Free 価格レベル (`F0`) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

ヒント

1 つのエンドポイント/キーで複数の Cognitive Services にアクセスする予定の場合は、Cognitive Services リソースを作成します。 Form Recognizer アクセスのみの場合は、Form Recognizer リソースを作成します。 Azure Active Directory 認証を使用する場合は、単一サービス リソースが必要になることに注意してください。

  • リソースがデプロイされたら、 [リソースに移動] を選択します。 自分のアプリケーションを Form Recognizer API に接続するには、作成したリソースのキーとエンドポイントが必要になります。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

    スクリーンショット: Azure portal のキーとエンドポイントの場所。

設定

  1. Visual Studio を起動します。

  2. スタート ページで、 [新しいプロジェクトの作成] を選択します。

    スクリーンショット: Visual Studio のスタート ウィンドウ。

  3. [新しいプロジェクトの作成] ページで、検索ボックスに「コンソール」と入力します。 [コンソール アプリケーション] テンプレートを選択し、 [次へ] を選択します。

    スクリーンショット: Visual Studio の [新しいプロジェクトの作成] ページ。

  4. [新しいプロジェクトの構成] ダイアログ ウィンドウの [プロジェクト名] ボックスに「formRecognizer_quickstart」と入力します。 その後、[次へ] を選択します。

    スクリーンショット: Visual Studio の [新しいプロジェクトの構成] ダイアログ ウィンドウ。

  5. [追加情報] ダイアログ ウィンドウで、[.NET 6.0 (長期的なサポート)] を選択し、[作成] を選択します。

    スクリーンショット: Visual Studio の [追加情報] ダイアログ ウィンドウ。

NuGet を使用してクライアント ライブラリをインストールする

  1. formRecognizer_quickstart プロジェクトを右クリックし、 [NuGet パッケージの管理...] を選択します。

    Visual Studio の NuGet パッケージの選択ウィンドウのスクリーンショット。

  2. [参照] タブを選択し、「Azure.AI.FormRecognizer」と入力します。

    Visual Studio のプレリリース NuGet パッケージの選択のスクリーンショット。

  3. ドロップダウン メニューからバージョン 4.0.0 を選択し、プロジェクトにパッケージをインストールします。

読み取りモデル

Form Recognizer サービスと対話するには、DocumentAnalysisClient クラスのインスタンスを作成する必要があります。 それを行うには、Azure portal から key を使用して AzureKeyCredential を作成し、その AzureKeyCredential と Form Recognizer の endpoint を使用して DocumentAnalysisClient インスタンスを作成します。

Note

  • .NET 6 以降、console テンプレートを使用した新しいプロジェクトからは、以前のバージョンとは異なるコードが生成されます。
  • この新しい出力では、プログラムに記述する必要があるコードを簡素化できる最新の C# 機能が使用されています。
  • 新しいバージョンで使用する場合、記述する必要があるのは、`Main` メソッドの本体のみです。 他のプログラム要素を含める必要はありません。
  • 詳細については、「新しい C# テンプレートで、最上位レベルのステートメントが生成される」を "参照" してください。
  • この例では、URI で指定されたフォーム ドキュメント ファイルが必要になります。 このクイックスタートでは、Microsoft のサンプル フォーム ドキュメントを使用できます。
  • スクリプトの先頭にある Uri fileUri 変数にファイル URI 値が追加されています。
  • URI で指定されたファイルからレイアウトを抽出するには、StartAnalyzeDocumentFromUri メソッドを使用して prebuilt-read をモデル ID として渡します。 戻り値は、送信されたドキュメントからのデータを含む AnalyzeResult オブジェクトです。
  1. Program.cs ファイルを開きます。

  2. 既存のコード (行 Console.Writeline("Hello World!") を含む) を削除し、次のコード サンプルをコピーしてアプリケーションに貼り付けます。 Azure portal の Form Recognizer インスタンスの値を使用して、キーとエンドポイントの各変数を必ず更新してください

using Azure;
using Azure.AI.FormRecognizer.DocumentAnalysis;

//set `<your-endpoint>` and `<your-key>` variables with the values from the Azure portal to create your `AzureKeyCredential` and `DocumentAnalysisClient` instance
string endpoint = "<your-endpoint>";
string key = "<your-key>";
AzureKeyCredential credential = new AzureKeyCredential(key);
DocumentAnalysisClient client = new DocumentAnalysisClient(new Uri(endpoint), credential);

//sample document
Uri fileUri = new Uri("https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/rest-api/read.png");

AnalyzeDocumentOperation operation = await client.AnalyzeDocumentFromUriAsync(WaitUntil.Completed, "prebuilt-read", fileUri);
AnalyzeResult result = operation.Value;

foreach (DocumentPage page in result.Pages)
{
    Console.WriteLine($"Document Page {page.PageNumber} has {page.Lines.Count} line(s), {page.Words.Count} word(s),");

    for (int i = 0; i < page.Lines.Count; i++)
    {
        DocumentLine line = page.Lines[i];
        Console.WriteLine($"  Line {i} has content: '{line.Content}'.");

        Console.WriteLine($"    Its bounding polygon is:");
        Console.WriteLine($"      Upper left => X: {line.BoundingPolygon[0].X}, Y= {line.BoundingPolygon[0].Y}");
        Console.WriteLine($"      Upper right => X: {line.BoundingPolygon[1].X}, Y= {line.BoundingPolygon[1].Y}");
        Console.WriteLine($"      Lower right => X: {line.BoundingPolygon[2].X}, Y= {line.BoundingPolygon[2].Y}");
        Console.WriteLine($"      Lower left => X: {line.BoundingPolygon[3].X}, Y= {line.BoundingPolygon[3].Y}");
    }
}

foreach (DocumentStyle style in result.Styles)
{
    // Check the style and style confidence to see if text is handwritten.
    // Note that value '0.8' is used as an example.

    bool isHandwritten = style.IsHandwritten.HasValue && style.IsHandwritten == true;

    if (isHandwritten && style.Confidence > 0.8)
    {
        Console.WriteLine($"Handwritten content found:");

        foreach (DocumentSpan span in style.Spans)
        {
            Console.WriteLine($"  Content: {result.Content.Substring(span.Index, span.Length)}");
        }
    }
}

Console.WriteLine("Detected languages:");

foreach (DocumentLanguage language in result.Languages)
{
    Console.WriteLine($"  Found language with locale'{language.Locale}' with confidence {language.Confidence}.");
}

重要

  • 終わったらコードからキーを削除し、公開しないよう注意してください。 運用環境では、セキュリティで保護された方法を使用して資格情報を格納し、アクセスします。 詳細については、Cognitive Services のセキュリティ参照してください。
  1. アプリケーションにコード サンプルを追加したら、[formRecognizer_quickstart] の横にある緑色の [開始] ボタンを選択してプログラムをビルドして実行するか、または F5 キーを押します。

    スクリーンショット: Visual Studioプログラムの実行。

読み取りモデルの出力

予想される出力のスニペットを次に示します。

Document Page 1 has 86 line(s), 697 word(s),
  Line 0 has content: 'While healthcare is still in the early stages of its Al journey, we'.
    Its bounding box is:
      Upper left => X: 259, Y= 55
      Upper right => X: 816, Y= 56
      Lower right => X: 816, Y= 79
      Lower left => X: 259, Y= 77
.
.
.
  Found language 'en' with confidence 0.95.

出力全体を表示するには、GitHub 上の Azure サンプル リポジトリにアクセスして、読み取りモデルの出力を表示します。

次のステップ

読み取りモデルが提供する内容に加えて、選択マークとテーブル構造を抽出できるレイアウト モデルを試してください。

SDK リファレンス | API リファレンス | パッケージ (Maven) | サンプル| サポートされている REST API のバージョン

前提条件

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

  • Visual Studio Code または好みの IDE の最新バージョン。 Java in Visual Studio Code をご覧ください。

    ヒント

    • Visual Studio Code には、Windows および macOS 用の Java 用コーディング パック が用意されています。コーディング パックは、VS Code、Java Development Kit (JDK)、および Microsoft が推奨する拡張機能のコレクションのバンドルです。 コーディング パックを使用して、既存の開発環境を修正できます。
    • VS Code と Java 用のコーディング パックを使用している場合は、Java 用 Gradle 拡張機能をインストールします。
  • VS Code を使用していない場合、開発環境に次のものがインストールされていることを確認してください。

  • Cognitive Services または Form Recognizer リソース。 Azure サブスクリプションを用意できたら、Azure portal で単一サービスまたはマルチサービスの Form Recognizer リソースを作成し、キーとエンドポイントを取得します。 Free 価格レベル (`F0`) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

    ヒント

    1 つのエンドポイント/キーで複数の Cognitive Services にアクセスする予定の場合は、Cognitive Services リソースを作成します。 Form Recognizer アクセスのみの場合は、Form Recognizer リソースを作成します。 Azure Active Directory 認証を使用する場合は、単一サービス リソースが必要になることに注意してください。

  • リソースがデプロイされたら、 [リソースに移動] を選択します。 自分のアプリケーションを Form Recognizer API に接続するには、作成したリソースのキーとエンドポイントが必要になります。 後で、下のコードに、自分のキーとエンドポイントを貼り付けます。

    スクリーンショット: Azure portal のキーとエンドポイントの場所。

設定

新しい Gradle プロジェクトを作成する

  1. コンソール ウィンドウ (cmd、PowerShell、Bash など) で、form-recognizer-app という名前のアプリ用に新しいディレクトリを作成し、そこに移動します。

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

    gradle init --type basic
    
  3. DSL を選択するよう求められたら、Kotlin を選択します。

  4. 既定のプロジェクト名 (form-recognizer-app) をそのまま使用する

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

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

  1. IDE でプロジェクトの build.gradle.kts ファイルを開きます。 次のコードをコピーして貼り付け、必要なプラグインと設定と共に、クライアント ライブラリを implementation ステートメントとして含めます。

    plugins {
        java
        application
    }
    application {
        mainClass.set("FormRecognizer")
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        implementation(group = "com.azure", name = "azure-ai-formrecognizer", version = "4.0.0")
    }
    

Java アプリケーションの作成

Form Recognizer サービスと対話するには、DocumentAnalysisClient クラスのインスタンスを作成する必要があります。 これを行うには、Azure portal からご自分の key を使用して AzureKeyCredential を作成し、AzureKeyCredential とお使いの Form Recognizer endpoint を使用して DocumentAnalysisClient インスタンスを作成します。

  1. form-recognizer-app ディレクトリから、次のコマンドを実行します。

    mkdir -p src/main/java
    

    次のディレクトリ構造を作成します。

    スクリーンショット: Java ディレクトリ構造

  2. java ディレクトリに移動して、FormRecognizer.java という名前のファイルを作成します。

    ヒント

    • PowerShell を使用して新しいファイルを作成できます。
    • Shift キーを押しながらフォルダーを右クリックして、プロジェクト ディレクトリで PowerShell ウィンドウを開きます。
    • コマンド New-Item FormRecognizer.java をタイプします。

読み取りモデル

  • この例では、URI にフォーム ドキュメント ファイルが必要になります。 このクイックスタートでは、Microsoft のサンプル フォーム ドキュメントを使用できます。
  • URI で特定のファイルを分析するには、beginAnalyzeDocumentFromUrl メソッドを使用して、モデル ID として prebuilt-read を渡します。返される値は、送信されたドキュメントに関するデータを含む AnalyzeResult オブジェクトです。
  • Main メソッドの documentUrl 変数にファイル URI 値を追加してあります。
  1. FormRecognizer.java ファイルを開き、次のコード サンプルをコピーしてアプリケーションに貼り付けます。 Azure portal の Form Recognizer インスタンスの値を使用して、キーとエンドポイントの各変数を必ず更新してください
import com.azure.ai.formrecognizer.*;

import com.azure.ai.formrecognizer.documentanalysis.models.*;
import com.azure.ai.formrecognizer.documentanalysis.DocumentAnalysisClient;
import com.azure.ai.formrecognizer.documentanalysis.DocumentAnalysisClientBuilder;

import com.azure.core.credential.AzureKeyCredential;
import com.azure.core.util.polling.SyncPoller;

import java.io.IOException;
import java.util.List;
import java.util.Arrays;
import java.time.LocalDate;
import java.util.Map;
import java.util.stream.Collectors;

public class FormRecognizer {

    // set `<your-endpoint>` and `<your-key>` variables with the values from the Azure portal
    private static final String endpoint = "<your-endpoint>";
    private static final String key = "<your-key>";

        public static void main(String[] args) {

        // create your `DocumentAnalysisClient` instance and `AzureKeyCredential` variable
        DocumentAnalysisClient client = new DocumentAnalysisClientBuilder()
            .credential(new AzureKeyCredential(key))
            .endpoint(endpoint)
            .buildClient();

        // sample document
        String documentUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/rest-api/read.png";

        String modelId = "prebuilt-read";

            SyncPoller < OperationResult, AnalyzeResult > analyzeLayoutResultPoller =
                client.beginAnalyzeDocumentFromUrl(modelId, documentUrl);

            AnalyzeResult analyzeLayoutResult = analyzeLayoutResultPoller.getFinalResult();

                // pages
                analyzeLayoutResult.getPages().forEach(documentPage -> {
                    System.out.printf("Page has width: %.2f and height: %.2f, measured with unit: %s%n",
                        documentPage.getWidth(),
                        documentPage.getHeight(),
                        documentPage.getUnit());

                // lines
                documentPage.getLines().forEach(documentLine ->
                    System.out.printf("Line %s is within a bounding polygon %s.%n",
                        documentLine.getContent(),
                        documentLine.getBoundingPolygon().toString()));

                // words
                documentPage.getWords().forEach(documentWord ->
                    System.out.printf("Word '%s' has a confidence score of %.2f.%n",
                        documentWord.getContent(),
                        documentWord.getConfidence()));
            });
        }
    }

重要

終わったらコードからキーを削除し、公開しないよう注意してください。 運用環境では、セキュリティで保護された方法を使用して資格情報を格納し、アクセスします。 詳細については、Cognitive Services のセキュリティをご覧ください。

  1. メイン プロジェクト ディレクトリ form-recognizer-app に戻ります。

  2. build コマンドを使用してアプリケーションをビルドします。

    gradle build
    
  3. run コマンドを使用してアプリケーションを実行します。

    gradle run
    

読み取りモデルの出力

予想される出力のスニペットを次に示します。

Page has width: 915.00 and height: 1190.00, measured with unit: pixel
Line While healthcare is still in the early stages of its Al journey, we is within a bounding box [259.0, 55.0, 816.0, 56.0, 816.0, 79.0, 259.0, 77.0].
Line are seeing pharmaceutical and other life sciences organizations is within a bounding box [258.0, 83.0, 825.0, 83.0, 825.0, 106.0, 258.0, 106.0].
Line making major investments in Al and related technologies." is within a bounding box [259.0, 112.0, 784.0, 112.0, 784.0, 136.0, 259.0, 136.0].
.
.
.
Word 'While' has a confidence score of 1.00.
Word 'healthcare' has a confidence score of 1.00.
Word 'is' has a confidence score of 1.00.

出力全体を表示するには、GitHub 上の Azure サンプル リポジトリにアクセスして、読み取りモデルの出力を表示します。

次のステップ

読み取りモデルが提供する内容に加えて、選択マークとテーブル構造を抽出できるレイアウト モデルを試してください。

SDK リファレンス | API リファレンス | パッケージ (npm) | サンプル |サポートされている REST API のバージョン

前提条件

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

  • Visual Studio Code または好みの IDE の最新バージョン。 詳細については、Visual Studio Code の Node.js を参照してください

  • Node.js の最新 LTS バージョン

  • Cognitive Services または Form Recognizer リソース。 Azure サブスクリプションを用意できたら、Azure portal で単一サービスまたはマルチサービスの Form Recognizer リソースを作成し、キーとエンドポイントを取得します。 Free 価格レベル (`F0`) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

    ヒント

    1 つのエンドポイント/キーで複数の Cognitive Services にアクセスする予定の場合は、Cognitive Services リソースを作成します。 Form Recognizer アクセスのみの場合は、Form Recognizer リソースを作成します。 Azure Active Directory 認証を使用する場合は、単一サービス リソースが必要になることに注意してください。

  • リソースがデプロイされたら、 [リソースに移動] を選択します。 自分のアプリケーションを Form Recognizer API に接続するには、作成したリソースのキーとエンドポイントが必要になります。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

    スクリーンショット: Azure portal のキーとエンドポイントの場所。

設定

  1. Node.js Express 新規アプリケーションを作成: コンソール ウィンドウ (cmd、PowerShell、Bash など) で、form-recognizer-app というご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。

    mkdir form-recognizer-app && cd form-recognizer-app
    
  2. npm init コマンドを実行して、アプリケーションを初期化し、プロジェクトをスキャフォールディングします。

    npm init
    
  3. ターミナルに表示されるプロンプトを使用して、プロジェクトの属性を指定します。

    • 最も重要な属性は、名前、バージョン番号、およびエントリ ポイントです。
    • エントリ ポイント名は index.js を保持することをお勧めします。 説明、テスト コマンド、GitHub リポジトリ、キーワード、作成者、ライセンス情報はオプションの属性であり、このプロジェクトでは省略可能です。
    • [戻る] または Enter キーを押して、かっこで囲んだ候補を受け入れます。
    • 画面の指示に従って入力すると、form-recognizer-app ディレクトリに package.json ファイルが作成されます。
  4. ai-form-recognizer クライアント ライブラリと azure/identity npm パッケージをインストールします。

    npm i @azure/ai-form-recognizer @azure/identity
    
    • アプリの package.json ファイルが依存関係によって更新されます。
  5. index.js というファイルをアプリケーション ディレクトリ内に作成します。

    ヒント

    • PowerShell を使用して新しいファイルを作成できます。
    • Shift キーを押しながらフォルダーを右クリックして、プロジェクト ディレクトリで PowerShell ウィンドウを開きます。
    • 次のコマンド New-Item index.js を入力します。

読み取りモデル

Form Recognizer サービスと対話するには、DocumentAnalysisClient クラスのインスタンスを作成する必要があります。 これを行うには、Azure portal からご自分の key を使用して AzureKeyCredential を作成し、AzureKeyCredential とお使いの Form Recognizer endpoint を使用して DocumentAnalysisClient インスタンスを作成します。

  • この例では、URL で指定されたフォーム ドキュメント ファイルが必要になります。 このクイックスタートでは、Microsoft のサンプル フォーム ドキュメントを使用できます。
  • ファイルの先頭付近にある formUrl 変数にファイル URL 値が追加されています。
  • URL で指定されたファイルを分析するには、beginAnalyzeDocuments メソッドを使用して prebuilt-read をモデル ID として渡します。
  1. Visual Studio Code または任意の IDE で index.js ファイルを開き、次のコード サンプルをコピーしてアプリケーションに貼り付けます。 Azure portal の Form Recognizer インスタンスの値を使用して、キーとエンドポイントの各変数を必ず更新してください
const { AzureKeyCredential, DocumentAnalysisClient } = require("@azure/ai-form-recognizer");
 
function* getTextOfSpans(content, spans) {
  for (const span of spans) {
    yield content.slice(span.offset, span.offset + span.length);
  }
}

// set `<your-endpoint>` and `<your-key>` variables with the values from the Azure portal
const endpoint = "<your-endpoint>";
const key = "<your-key>";

// sample document
const formUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/rest-api/read.png"

async function main() {
  // create your `DocumentAnalysisClient` instance and `AzureKeyCredential` variable
  const client = new DocumentAnalysisClient(endpoint, new AzureKeyCredential(key));
  const poller = await client.beginAnalyzeDocument("prebuilt-read", formUrlRead);

  const { content, pages, languages, styles } = await poller.pollUntilDone();

  if (pages.length <= 0) {
    console.log("No pages were extracted from the document.");
  } else {
    console.log("Pages:");
    for (const page of pages) {
      console.log("- Page", page.pageNumber, `(unit: ${page.unit})`);
      console.log(`  ${page.width}x${page.height}, angle: ${page.angle}`);
      console.log(`  ${page.lines.length} lines, ${page.words.length} words`);

      if (page.lines.length > 0) {
        console.log("  Lines:");

        for (const line of page.lines) {
          console.log(`  - "${line.content}"`);

          // The words of the line can also be iterated independently. The words are computed based on their
          // corresponding spans.
          for (const word of line.words()) {
            console.log(`    - "${word.content}"`);
          }
        }
      }
    }
  }

  if (languages.length <= 0) {
    console.log("No language spans were extracted from the document.");
  } else {
    console.log("Languages:");
    for (const languageEntry of languages) {
      console.log(
        `- Found language: ${languageEntry.languageCode} (confidence: ${languageEntry.confidence})`
      );
      for (const text of getTextOfSpans(content, languageEntry.spans)) {
        const escapedText = text.replace(/\r?\n/g, "\\n").replace(/"/g, '\\"');
        console.log(`  - "${escapedText}"`);
      }
    }
  }

  if (styles.length <= 0) {
    console.log("No text styles were extracted from the document.");
  } else {
    console.log("Styles:");
    for (const style of styles) {
      console.log(
        `- Handwritten: ${style.isHandwritten ? "yes" : "no"} (confidence=${style.confidence})`
      );

      for (const word of getTextOfSpans(content, style.spans)) {
        console.log(`  - "${word}"`);
      }
    }
  }
}

main().catch((error) => {
  console.error("An error occurred:", error);
  process.exit(1);
});

重要

終わったらコードからキーを削除し、公開しないよう注意してください。 運用環境では、セキュリティで保護された方法を使用して資格情報を格納し、アクセスします。 詳細については、Cognitive Services のセキュリティをご覧ください。

  1. アプリケーションにコード サンプルを追加したら、Form Recognizer アプリケーション (form-recognizer-app) があるフォルダーに移動します。

  2. ご利用のターミナルで、次のコマンドを入力します。

    node index.js
    

読み取りモデルの出力

予想される出力のスニペットを次に示します。

Pages:
- Page 1 (unit: pixel)
  915x1190, angle: 0
  86 lines, 697 words
  Lines:
  - "While healthcare is still in the early stages of its Al journey, we"
    - "While"
    - "healthcare"
    - "is"
.
.
.
Languages:
- Found language: en (confidence: 0.95)
  - "While healthcare is still in the early stages of its Al journey, we\nare seeing pharmaceutical and other life sciences organizations"
  - "As pharmaceutical and other life sciences organizations invest\nin and deploy advanced technologies, they are beginning to see"
  - "are looking to incorporate automation and continuing smart"
.
.
.
No text styles were extracted from the document.

出力全体を表示するには、GitHub 上の Azure サンプル リポジトリにアクセスして、読み取りモデルの出力を表示します。

次のステップ

読み取りモデルが提供する内容に加えて、選択マークとテーブル構造を抽出できるレイアウト モデルを試してください。

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

前提条件

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

  • Python 3.7 以降

    • Python のインストールには、pip が含まれている必要があります。 pip がインストールされているかどうかを確認するには、コマンド ラインで pip --version を実行します。 最新バージョンの Python をインストールして pip を入手してください。
  • Visual Studio Code または好みの IDE の最新バージョン。 詳細については、「VS Code でのはじめての Python」を参照してください

  • Cognitive Services または Form Recognizer リソース。 Azure サブスクリプションを用意できたら、Azure portal で単一サービスまたはマルチサービスの Form Recognizer リソースを作成し、キーとエンドポイントを取得します。 Free 価格レベル (`F0`) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

ヒント

1 つのエンドポイント/キーで複数の Cognitive Services にアクセスする予定の場合は、Cognitive Services リソースを作成します。 Form Recognizer アクセスのみの場合は、Form Recognizer リソースを作成します。 Azure Active Directory 認証を使用する場合は、単一サービス リソースが必要になることに注意してください。

  • リソースがデプロイされたら、 [リソースに移動] を選択します。 自分のアプリケーションを Form Recognizer API に接続するには、作成したリソースのキーとエンドポイントが必要になります。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

    スクリーンショット: Azure portal のキーとエンドポイントの場所。

設定

ローカル環境でターミナル ウィンドウを開き、pip を使用して Python 用 Azure Form Recognizer クライアント ライブラリをインストールします。

pip install azure-ai-formrecognizer==3.2.0

読み取りモデル

Form Recognizer サービスと対話するには、DocumentAnalysisClient クラスのインスタンスを作成する必要があります。 これを行うには、Azure portal からご自分の key を使用して AzureKeyCredential を作成し、AzureKeyCredential とお使いの Form Recognizer endpoint を使用して DocumentAnalysisClient インスタンスを作成します。

  • この例では、URL で指定されたフォーム ドキュメント ファイルが必要になります。 このクイックスタートでは、Microsoft のサンプル フォーム ドキュメントを使用できます。
  • analyze_read 関数の formUrl 変数にファイル URL 値を追加してあります。
  • URL で指定されたファイルを分析するには、begin_analyze_document_from_url メソッドを使用して、モデル ID として prebuilt-read を渡します。返される値は、送信されたドキュメントに関するデータを含む result オブジェクトです。
  1. 任意のエディターまたは IDE で、form_recognizer_quickstart.py という新しい Python ファイルを作成します。

  2. form_recognizer_quickstart.py ファイルを開き、次のコード サンプルをコピーしてアプリケーションに貼り付けます。 Azure portal の Form Recognizer インスタンスの値を使用して、キーとエンドポイントの各変数を必ず更新してください

# import libraries
import os
from azure.ai.formrecognizer import DocumentAnalysisClient
from azure.core.credentials import AzureKeyCredential

# set `<your-endpoint>` and `<your-key>` variables with the values from the Azure portal
endpoint = "<your-endpoint>"
key = "<your-key>"

def format_bounding_box(bounding_box):
    if not bounding_box:
        return "N/A"
    return ", ".join(["[{}, {}]".format(p.x, p.y) for p in bounding_box])

def analyze_read():
    # sample form document
    formUrl = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/rest-api/read.png"

    # create your `DocumentAnalysisClient` instance and `AzureKeyCredential` variable
    document_analysis_client = DocumentAnalysisClient(
        endpoint=endpoint, credential=AzureKeyCredential(key)
    )
    
    poller = document_analysis_client.begin_analyze_document_from_url(
            "prebuilt-read", formUrl)
    result = poller.result()

    print ("Document contains content: ", result.content)
    
    for idx, style in enumerate(result.styles):
        print(
            "Document contains {} content".format(
                "handwritten" if style.is_handwritten else "no handwritten"
            )
        )

    for page in result.pages:
        print("----Analyzing Read from page #{}----".format(page.page_number))
        print(
            "Page has width: {} and height: {}, measured with unit: {}".format(
                page.width, page.height, page.unit
            )
        )

        for line_idx, line in enumerate(page.lines):
            print(
                "...Line # {} has text content '{}' within bounding box '{}'".format(
                    line_idx,
                    line.content,
                    format_bounding_box(line.bounding_box),
                )
            )

        for word in page.words:
            print(
                "...Word '{}' has a confidence of {}".format(
                    word.content, word.confidence
                )
            )

    print("----------------------------------------")


if __name__ == "__main__":
    analyze_read()

重要

終わったらコードからキーを削除し、公開しないよう注意してください。 運用環境では、セキュリティで保護された方法を使用して資格情報を格納し、アクセスします。 詳細については、Cognitive Services のセキュリティ参照してください。

  1. アプリケーションにコード サンプルを追加したら、form_recognizer_quickstart.py ファイルがあるフォルダーに移動します。

  2. ご利用のターミナルで、次のコマンドを入力します。

    python form_recognizer_quickstart.py
    

読み取りモデルの出力

予想される出力のスニペットを次に示します。

Document contains content:  While healthcare is still in the early stages of its Al journey, we
are seeing pharmaceutical and other life sciences organizations
making major investments in Al and related technologies."
.
.
.
----Analyzing Read from page #1----
Page has width: 915.0 and height: 1190.0, measured with unit: pixel
...Line # 0 has text content 'While healthcare is still in the early stages of its Al journey, we' within bounding box '[259.0, 55.0], [816.0, 56.0], [816.0, 79.0], [259.0, 77.0]'
...Line # 1 has text content 'are seeing pharmaceutical and other life sciences organizations' within bounding box '[258.0, 83.0], [825.0, 83.0], [825.0, 106.0], [258.0, 106.0]'
...Line # 2 has text content 'making major investments in Al and related technologies."' within bounding box '[259.0, 112.0], [784.0, 112.0], [784.0, 136.0], [259.0, 136.0]'
.
.
.
...Word 'While' has a confidence of 0.999
...Word 'healthcare' has a confidence of 0.995
...Word 'is' has a confidence of 0.997

出力全体を表示するには、GitHub 上の Azure サンプル リポジトリにアクセスして、読み取りモデルの出力を表示します。

次のステップ

読み取りモデルが提供する内容に加えて、選択マークとテーブル構造を抽出できるレイアウト モデルを試してください。

前提条件

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

  • インストールされた cURL

  • PowerShell バージョン 7.* 以降、または同様のコマンドライン アプリケーション。 PowerShell バージョンを確認するには、「Get-Host | Select-Object Version」と入力します。

  • Cognitive Services または Form Recognizer リソース。 Azure サブスクリプションを用意できたら、Azure portal で単一サービスまたはマルチサービスの Form Recognizer リソースを作成し、キーとエンドポイントを取得します。 Free 価格レベル (`F0`) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

ヒント

1 つのエンドポイント/キーで複数の Cognitive Services にアクセスする予定の場合は、Cognitive Services リソースを作成します。 Form Recognizer アクセスのみの場合は、Form Recognizer リソースを作成します。 Azure Active Directory 認証を使用する場合は、単一サービス リソースが必要になることに注意してください。

  • リソースがデプロイされたら、 [リソースに移動] を選択します。 自分のアプリケーションを Form Recognizer API に接続するには、作成したリソースのキーとエンドポイントが必要になります。 このクイックスタートで後に示すコードに、自分のキーとエンドポイントを貼り付けます。

    スクリーンショット: Azure portal のキーとエンドポイントの場所。

読み取りモデル

Form Recognizer v3.0 では、ドキュメントの分析 (POST) と結果の取得 (GET) 要求が 1 つの操作に統合されています。 modelId は POST 操作に、resultId は GET 操作に使われます。

  • この例では、URI で指定されたフォーム ドキュメント ファイルが必要になります。 このクイックスタートでは、Microsoft のサンプル フォーム ドキュメントを使用できます。
  • ファイル URI の値を以下の POST curl コマンドに追加しました。

POST 要求

次の curl コマンドを実行する前に、次の変更を行います。

  1. {endpoint} を、Azure portal の Form Recognizer インスタンスのエンドポイント値に置き換えます。
  2. {key} を Azure portal の Form Recognizer インスタンスのキー値に置き換えます。
curl -v -i POST "{endpoint}/formrecognizer/documentModels/prebuilt-read:analyze?api-version=2022-08-31" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: {key}" --data-ascii "{'urlSource': 'https://raw.githubusercontent.com/Azure-Samples/cognitive-services-REST-api-samples/master/curl/form-recognizer/rest-api/read.png'}"

Operation-Location

Operation-Location ヘッダーを含む 202 (Success) 応答を受信します。 このヘッダーの値には、非同期操作の状態を取得するために照会できる resultID が含まれています。

{alt-text}

要求を取得する

Analyze document API を呼び出した後に Get analyze result API を呼び出して、操作の状態と抽出されたデータを取得します。 コマンドを実行する前に、次の変更を行います。

  1. {endpoint} を、Azure portal の Form Recognizer インスタンスのエンドポイント値に置き換えます。
  2. {key} を Azure portal の Form Recognizer インスタンスのキー値に置き換えます。
  3. {resultID}Operation-Location ヘッダーの結果 ID に置き換えます。
curl -v -X GET "{endpoint}/formrecognizer/documentModels/prebuilt-read/analyzeResults/{resultId}?api-version=2022-08-31" -H "Ocp-Apim-Subscription-Key: {key}"

読み取りモデルの出力

JSON 出力で 200 (Success) 応答を受信します。 最初のフィールド "status" は、操作の状態を示します。 操作が完了していない場合、"status" の値は "running" または "notStarted" になり、手動またはスクリプトでもう一度 API を呼び出す必要があります。 呼び出しの間隔は 1 秒以上あけることをお勧めします。

{
    "status": "succeeded",
    "createdDateTime": "2022-04-08T00:36:48Z",
    "lastUpdatedDateTime": "2022-04-08T00:36:50Z",
    "analyzeResult": {
        "apiVersion": "2022-08-31",
        "modelId": "prebuilt-read",
        "stringIndexType": "textElements",
        "content": "While healthcare is still in the early stages of its Al journey, we\nare seeing...",
        "pages": [
            {
                "pageNumber": 1,
                "angle": 0,
                "width": 915,
                "height": 1190,
                "unit": "pixel",
                "words": [
                    {
                        "content": "While",
                        "boundingBox": [
                            260,
                            56,
                            307,
                            56,
                            306,
                            76,
                            260,
                            76
                        ],
                        "confidence": 0.999,
                        "span": {
                            "offset": 0,
                            "length": 5
                        }
                    }
                ]
            }
        ]
    }
}

出力全体を表示するには、GitHub 上の Azure サンプル リポジトリにアクセスして、読み取りモデルの出力を表示します。

次のステップ

読み取りモデルが提供する内容に加えて、選択マークとテーブル構造を抽出できるレイアウト モデルを試してください。