Azure AI Vision 3.2 GA Read API を呼び出す

このガイドでは、v3.2 GA Read API を呼び出して画像からテキストを抽出する方法について説明します。 この API の動作をニーズに合わせて構成できるさまざまな方法を学習します。 このガイドでは、既にVision リソースを作成し、キーとエンドポイント URL を取得していることを前提としています。 まだの場合は、クイックスタートに従って作業を開始してください。

OCR (Read) エディション

重要

要件に最も適した Read エディションを選択します。

入力 Read のエディション 特長
画像: 一般に出回っている画像 ラベル、道路標識、ポスター 画像の OCR (バージョン 4.0) OCR をユーザー エクスペリエンス シナリオに簡単に埋め込むことができる、パフォーマンスが向上した同期 API を使用して、ドキュメント以外の一般的な画像用に最適化されています。
ドキュメント: デジタルとスキャン (画像を含む) 書籍、記事、レポート Document Intelligence 読み取りモデル インテリジェントなドキュメント処理を大規模に自動化するために、非同期 API を使用してテキストの量が多いスキャンおよびデジタル ドキュメント用に最適化されています。

Azure AI Vision v3.2 GA Read について

最新の Azure AI Vision v3.2 GA Read をお探しですか? 今後のすべての OCR の読み取り拡張機能は、前述の 2 つのサービスの一部です。 Azure AI Vision v3.2 に対する更新はこれ以上ありません。 詳細については、「Azure AI Vision 3.2 GA Read API の呼び出し」と「クイック スタート: Azure AI Vision v3.2 GA Read」を参照してください。

入力の要件

Read API 呼び出しにより、画像とドキュメントが入力として取得されます。 これには次の要件があります。

  • サポートされているファイル形式: JPEG、PNG、BMP、PDF、TIFF
  • PDF ファイルと TIFF ファイルの場合は、最大 2,000 ページ (Free レベルの場合は最初の 2 ページのみ) が処理されます。
  • 画像のファイル サイズは 500 MB 未満 (Free レベルの場合は 4 MB)、寸法は 50 x 50 ピクセル以上 10,000 x 10,000 ピクセル以下にする必要があります。 PDF ファイルにはサイズ制限がありません。
  • 抽出するテキストの最小の高さは、1024 x 768 のイメージの場合は 12 ピクセルです。 これは、150 DPI での約 8 ポイントのフォントのテキストに対応します。

Note

テキスト行の画像をトリミングする必要はありません。 画像全体を Read API に送信すると、すべてのテキストが認識されます。

データの処理方法を決定する (省略可能)

OCR モデルの指定

既定では、サービスは最新の一般提供 (GA) モデルを使用してテキストを抽出します。 Read 3.2 以降では、model-version パラメーターによって、所与の API バージョンの GA とプレビュー モデルのどちらかを選択できます。 指定したモデルは、読み取り操作でテキストを抽出するために使用されます。

読み取り操作を使用する場合は、省略可能な model-version パラメーターに次の値を使用します。

使用モデル
Not provided 最新の GA モデル
latest 最新の GA モデル
2022-04-30 最新の GA モデル。 印刷テキスト 164 言語、手書きテキスト 9 言語、品質とパフォーマンスに関するいくつかの機能強化が含まれます
2022-01-30-preview プレビュー モデルでは、ヒンディー語、アラビア語、および関連言語の印刷テキストのサポートが追加されています。 手書きテキストについては日本語と韓国語のサポートが追加されています。
2021-09-30-preview プレビュー モデルにより、ロシア語やその他のキリル言語の印刷テキストサポートが追加されます。 手書きテキストの場合、簡体字中国語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語のサポートが追加されます。
2021-04-12 2021 GA モデル

入力言語

既定で、サービスでは、イメージまたは混合言語を含むドキュメントからすべてのテキストを抽出します。 読み取り操作には、言語に対する省略可能な要求パラメーターがあります。 その特定の言語としてドキュメントを処理するように強制する場合にのみ言語コードを指定してください。 そうしないと、サービスが不完全で不正確なテキストを返すことがあります。

自然な読み取り順序の出力 (ラテン言語のみ)

既定では、サービスによって、テキスト行が左から右の順に出力されます。 次の例に示すように、readingOrder 要求パラメーターに natural を使用してよりわかりやすい読み取り順序の出力を行います。 この機能は、ラテン語系の言語でのみサポートされています。

OCR Reading order example

テキスト抽出のページまたはページ範囲の選択

既定では、サービスはドキュメント内のすべてのページからテキストを抽出します。 必要に応じて、pages 要求パラメーターを使用して、ページ番号またはページ範囲を指定し、それらのページからのみテキストを抽出します。 次の例は、10 ページを含むドキュメントを示しています。ここには、すべてのページ (1 から 10) と選択したページ (3 から 6) の両方に対して抽出されたテキストがあります。

Selected pages output

サービスにデータを送信する

ローカルの画像またはリモートの画像を Read API に送信します。 ローカルの場合、バイナリ画像データを HTTP 要求本文に配置します。 リモートの場合、要求本文を {"url":"http://example.com/images/test.jpg"} のような形式にして、画像の URL を指定します。

Read API の Read 呼び出しは、画像または PDF ドキュメントを入力として受け取り、非同期でテキストを抽出します。

https://{endpoint}/vision/v3.2/read/analyze[?language][&pages][&readingOrder]

この呼び出しにより、Operation-Location という応答ヘッダー フィールドが返されます。 Operation-Location 値は、次の手順で使用する操作 ID を含む URL です。

応答ヘッダー 値の例
Operation-Location https://cognitiveservice/vision/v3.2/read/analyzeResults/49a36324-fc4b-4387-aa06-090cfbf0064f

Note

Billing

Azure AI Vision の価格」ページには、Read の価格レベルが含まれています。 分析された画像またはページはそれぞれ 1 つのトランザクションです。 100 ページを含む PDF または TIFF ドキュメントを使用して操作を呼び出した場合、Read 操作ではそれは 100 トランザクションとしてカウントされ、100 トランザクションに対して課金されます。 操作に対して 50 回の呼び出しを行い、各呼び出しで 100 ページのドキュメントが送信された場合、50 X 100 = 5000 トランザクションに対して課金されます。

サービスから結果を取得する

2 番目のステップでは、読み取り結果の取得操作を呼び出します。 この操作は、読み取り操作によって作成された操作 ID を入力として受け取ります。

https://{endpoint}/vision/v3.2/read/analyzeResults/{operationId}

これにより、次の設定可能な値を持つ status フィールドが含まれた JSON 応答が返されます。

説明
notStarted 操作は開始されていません。
running 操作を処理しています。
failed 操作は失敗しました。
succeeded 操作は成功しました。

succeeded の値が返されるまで、この操作を対話形式で呼び出します。 1 秒あたりの要求 (RPS) レートを超えないようにするために、1 秒から 2 秒の間隔を使用してください。

注意

Free レベルでは、要求レートは 1 分あたり 20 回の呼び出しに制限されます。 有料レベルでは 30 RPS (1 秒あたりの要求) が可能で、これは要求に応じて増やすことができます。 Azure リソース ID とリージョンをメモし、Azure サポート チケットを開くか、アカウント チームに連絡して、1 秒あたりの要求 (RPS) レートの引き上げをリクエストします。

status フィールドに succeeded 値が指定されている場合、JSON 応答には、画像またはドキュメントから抽出されたテキスト コンテンツが含まれます。 JSON の応答では、認識された単語の元の行グループが維持されます。 抽出されたテキスト行とその境界ボックスの座標が含まれます。 各テキスト行には、抽出されたすべての単語と、その座標および信頼度スコアが含まれています。

Note

Read 操作に送信されたデータは一時的に暗号化され、しばらくの間保存されてから削除されます。 これにより、アプリケーションからは、サービス応答の一部として抽出されたテキストを取得できます。

サンプル JSON 出力

成功した JSON 応答の例を次に示します。

{
  "status": "succeeded",
  "createdDateTime": "2021-02-04T06:32:08.2752706+00:00",
  "lastUpdatedDateTime": "2021-02-04T06:32:08.7706172+00:00",
  "analyzeResult": {
    "version": "3.2",
    "readResults": [
      {
        "page": 1,
        "angle": 2.1243,
        "width": 502,
        "height": 252,
        "unit": "pixel",
        "lines": [
          {
            "boundingBox": [
              58,
              42,
              314,
              59,
              311,
              123,
              56,
              121
            ],
            "text": "Tabs vs",
            "appearance": {
              "style": {
                "name": "handwriting",
                "confidence": 0.96
              }
            },
            "words": [
              {
                "boundingBox": [
                  68,
                  44,
                  225,
                  59,
                  224,
                  122,
                  66,
                  123
                ],
                "text": "Tabs",
                "confidence": 0.933
              },
              {
                "boundingBox": [
                  241,
                  61,
                  314,
                  72,
                  314,
                  123,
                  239,
                  122
                ],
                "text": "vs",
                "confidence": 0.977
              }
            ]
          }
        ]
      }
    ]
  }
}

テキスト行の手書き分類 (ラテン言語のみ)

応答には、テキストの各行が手書きなのかどうかを示す分類と信頼度スコアが含まれます。 この機能は、ラテン語系の言語でのみ利用できます。 次の例は、画像内のテキストの手書き分類を示しています。

OCR handwriting classification example

次のステップ