OCR 認知スキル
光学式文字認識 (OCR) スキルでは、画像ファイルに印字された手書きテキストが認識されます。 この記事は、OCR スキルのリファレンス ドキュメントです。 使用手順については、画像からのテキスト抽出に関する記事を参照してください。
OCR スキルでは、Azure AI サービスの Azure AI Vision API v3.2 によって提供される機械学習モデルが使用されます。 OCR スキルは、次の機能にマップします。
「Azure AI Vision の言語サポート」に記載されている言語については、Read API が使用されます。
ギリシャ語とセルビア語のキリル語では、バージョン 3.2 API のレガシ OCR が使用されます。
OCR スキルはイメージファイルからテキストを抽出します。 サポートされているファイル形式は以下の通りです。
- .JPEG
- .JPG
- .PNG
- .BMP
- .TIFF
Note
このスキルは Azure AI サービスにバインドされており、1 日にインデクサーあたり 20 ドキュメントを超えるトランザクションには課金対象リソースが必要です。 組み込みスキルの実行は、既存の Azure AI サービスの従量課金制の価格で課金されます。
さらに、画像抽出は Azure AI Search による課金対象になります。
スキルのパラメーター
パラメーターの大文字と小文字は区別されます。
パラメーター名 | 説明 |
---|---|
detectOrientation |
画像の向きを検出します。 有効な値は、true または false 。 このパラメーターは、 legacy OCR バージョン 3.2 API が使用されている場合にのみ適用されます。 |
defaultLanguageCode |
入力テキストの言語コード。 サポートされる言語には、Azure AI Vision の一般的に使用できる言語がすべて含まれます。 unk (不明) を指定することもできます。 言語コードが指定されないか null の場合、言語は英語に設定されます。 言語が明示的に unk に設定されている場合、すべての言語が自動検出によって検出され、返されます。 |
lineEnding |
行区切り記号として使用する値。 指定できる値: "Space"、"CarriageReturn"、"LineFeed"。 既定は "Space" です。 |
以前のバージョンでは、印刷 ("printed") または手書き ("handwritten") テキストの抽出を指定するための "textExtractionAlgorithm" というパラメーターが存在していました。 最新の Read API アルゴリズムはどちらのタイプのテキストも一度に抽出できるため、このパラメーターは非推奨となっています。 このパラメーターがスキルに含まれていても削除する必要はありませんが、スキルの実行中には使用されません。
スキルの入力
入力名 | 説明 |
---|---|
image |
複合型。 現在は "/document/normalized_images" フィールドでのみ機能し、imageAction が none 以外の値に設定されている場合に、Azure BLOB インデクサーによって生成されます。 |
スキルの出力
出力名 | 説明 |
---|---|
text |
イメージから抽出されたプレーン テキスト。 |
layoutText |
抽出されたテキストと、そのテキストが検出された場所を記述した複合型。 |
OCR を PDF や他のアプリケーション ファイルに埋め込まれた画像に対して呼び出した場合、OCR 出力はページの下部にある、抽出および処理されたテキストの後に配置されます。
定義例
{
"skills": [
{
"description": "Extracts text (plain and structured) from image.",
"@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": null,
"detectOrientation": true,
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "text",
"targetName": "myText"
},
{
"name": "layoutText",
"targetName": "myLayoutText"
}
]
}
]
}
テキストと layoutText 出力例
{
"text": "Hello World. -John",
"layoutText":
{
"language" : "en",
"text" : "Hello World. -John",
"lines" : [
{
"boundingBox":
[ {"x":10, "y":10}, {"x":50, "y":10}, {"x":50, "y":30},{"x":10, "y":30}],
"text":"Hello World."
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"-John"
}
],
"words": [
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"Hello"
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"World."
},
{
"boundingBox": [ {"x":110, "y":10}, {"x":150, "y":10}, {"x":150, "y":30},{"x":110, "y":30}],
"text":"-John"
}
]
}
}
サンプル: 埋め込まれたイメージから抽出されたテキストとドキュメントの内容をマージ
スキルセット実行の最初のステップであるドキュメント解析では、テキストと画像の内容が分離されます。 Text Merger の一般的なユース ケースとしては、ドキュメントの content フィールドへの画像のテキスト表現 (OCR スキルからのテキスト、または画像のキャプション) のマージがあります。 テキストと埋め込み画像を組み合わせた Word 文書や PDF がソース ドキュメントであるシナリオに適しています。
次に示すのは、merged_text フィールドを作成するスキルセットの例です。 このフィールドには、ドキュメントのテキスト コンテンツが格納されるほか、そのドキュメントに埋め込まれている各画像から OCR で読み込まれたテキストが格納されます。
要求本文の構文
{
"description": "Extract text from images and merge with content text to produce merged_text",
"skills":
[
{
"description": "Extract text (plain and structured) from image.",
"@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": "en",
"detectOrientation": true,
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "text"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.MergeSkill",
"description": "Create merged_text, which includes all the textual representation of each image inserted at the right location in the content field.",
"context": "/document",
"insertPreTag": " ",
"insertPostTag": " ",
"inputs": [
{
"name":"text",
"source": "/document/content"
},
{
"name": "itemsToInsert",
"source": "/document/normalized_images/*/text"
},
{
"name":"offsets",
"source": "/document/normalized_images/*/contentOffset"
}
],
"outputs": [
{
"name": "mergedText",
"targetName" : "merged_text"
}
]
}
]
}
上記のスキルセット例は、normalized-images フィールドが存在していることを前提としています。 このフィールドを生成するには、以下に示すように、インデクサー定義内の imageAction 構成を generateNormalizedImages に設定します。
{
//...rest of your indexer definition goes here ...
"parameters": {
"configuration": {
"dataToExtract":"contentAndMetadata",
"imageAction":"generateNormalizedImages"
}
}
}