このガイドでは、v3.2 GA Read API を呼び出して画像からテキストを抽出する方法について説明します。 この API の動作をニーズに合わせて構成できるさまざまな方法を学習します。
次の手順では、既に Computer 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」を参照してください。
データの処理方法を決定する (省略可能)
OCR モデルの指定
既定では、サービスは最新の一般提供 (GA) モデルを使用してテキストを抽出します。 Read v3.2 以降では、model-version
パラメーターによって、所与の API バージョンの GA とプレビュー モデルのどちらかを選択できます。 指定したモデルは、読み取り操作でテキストを抽出するために使用されます。
読み取り操作を使用する場合は、省略可能な model-version
パラメーターに次の値を使用します。
値 | 使用モデル |
---|---|
指定されていません | 最新の GA モデル |
最新 | 最新の GA モデル |
2022-04-30 | 最新の GA モデル。 印刷テキスト 164 言語、手書きテキスト 9 言語、品質とパフォーマンスに関するいくつかの機能強化が含まれます |
2022-01-30 | ヒンディー語、アラビア語、関連言語の印刷テキストのサポートが追加されます。 手書きテキストについては日本語と韓国語のサポートが追加されています。 |
2021-09-30 | ロシア語とその他のキリル言語の印刷テキストのサポートが追加されます。 手書きテキストの場合、簡体字中国語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語のサポートが追加されます。 |
2021-04-12 | 2021 GA モデル |
入力言語
既定で、サービスでは、イメージまたは混合言語を含むドキュメントからすべてのテキストを抽出します。 読み取り操作には、言語に対する省略可能な要求パラメーターがあります。 その特定の言語としてドキュメントを処理するように強制する場合にのみ言語コードを指定してください。 そうでない場合、サービスが不完全で不正確なテキストを返すことがあります。
自然な読み取り順序の出力 (ラテン言語のみ)
既定では、サービスによって、テキスト行が左から右の順に出力されます。 次の例に示すように、readingOrder
要求パラメーターに natural
を使用してよりわかりやすい読み取り順序の出力を行います。 この機能は、ラテン語系の言語でのみサポートされています。
テキスト抽出のページまたはページ範囲の選択
既定では、サービスはドキュメント内のすべてのページからテキストを抽出します。 必要に応じて、pages
要求パラメーターを使用して、ページ番号またはページ範囲を指定し、それらのページからのみテキストを抽出します。 次の例は、10 ページを含むドキュメントを示しています。ここには、すべてのページ (1 から 10) と選択したページ (3 から 6) の両方に対して抽出されたテキストがあります。
サービスにデータを送信する
ローカルの画像またはリモートの画像を Read API に送信します。 ローカルの場合、バイナリ画像データを HTTP 要求本文に配置します。 リモートの場合、要求本文を次の例のような形式にして、画像の URL を指定します。
{"url":"http://example.com/images/test.jpg"}
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/d3d3d3d3-eeee-ffff-aaaa-b4b4b4b4b4b4 |
注
請求書
「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 が許可されており、これはリクエストに応じて増やせます。 Azure リソース ID とリージョンをメモし、Azure サポート チケットを開くか、アカウント チームに連絡して、RPS レートの引き上げをリクエストします。
status フィールドに succeeded
値が指定されている場合、JSON 応答には、画像またはドキュメントから抽出されたテキスト コンテンツが含まれます。 JSON の応答では、認識された単語の元の行グループが維持されます。 抽出されたテキスト行とその境界ボックスの座標が含まれます。 各テキスト行には、抽出されたすべての単語と、その座標および信頼度スコアが含まれています。
注
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
}
]
}
]
}
]
}
}
テキスト行の手書き分類 (ラテン言語のみ)
応答には、テキストの各行が手書きなのかどうかを示す分類と信頼度スコアが含まれます。 この機能は、ラテン語系の言語でのみ利用できます。 次の例は、画像内のテキストの手書き分類を示しています。