OCR 認知技能
光學字元辨識 (OCR) 技能可辨識圖像檔案中的印刷和手寫文字。 本文是 OCR 技能的參考檔。 如需使用指示,請參閱 從影像 擷取文字。
OCR 技能會使用 Azure AI 視覺 API v3.2 在 Azure AI 服務中提供的機器學習模型。 OCR 技能會對應至下列功能:
OCR 技能會從圖像檔擷取文字。 支援的檔案格式包括:
- .JPEG
- .JPG
- .PNG
- .BMP
- .TIFF
注意
此技能會繫結至 Azure AI 服務,並且每個索引子每天超過 20 個文件的交易需要可計費資源。 內建技能的執行會依現有的 Azure AI 服務預付型方案價格收費。
此外,影像擷取是由 Azure AI 搜尋服務計費。
技能參數
這些參數會區分大小寫。
參數名稱 | 描述 |
---|---|
detectOrientation |
偵測影像方向。 有效值為 true 或 false 。 此參數僅適用於使用舊版 OCR 3.2 版 API 時。 |
defaultLanguageCode |
輸入文字的語言代碼。 支援的語言包括 Azure AI 視覺的所有 正式推出語言 。 您也可以指定 unk (未知)。 如果未指定語言代碼或 Null,則語言會設定為英文。 如果語言明確設定為 unk ,則會自動偵測並傳回找到的所有語言。 |
lineEnding |
要當做行分隔符使用的值。 可能的值:「Space」、“CarriageReturn”、“LineFeed”。 預設值為 “Space”。 |
在舊版中,有一個稱為 “textExtractionAlgorithm” 的參數,可指定擷取 “printed” 或 “handwritten” 文字。 此參數已被取代,因為目前的讀取 API 演算法會同時擷取這兩種類型的文字。 如果您的技能包含此參數,則不需要將其移除,但在技能執行期間不會使用它。
技能輸入
輸入名稱 | 描述 |
---|---|
image |
複雜類型。 目前僅可搭配 "/document/normalized_images" 欄位使用,該欄位是由 Azure Blob 索引子在 imageAction 被設定為 none 以外的其他值時產生。 |
技能輸出
輸出名稱 | 描述 |
---|---|
text |
從影像擷取的純文字。 |
layoutText |
描述所擷取文字和找到文字位置的複雜類型。 |
如果您在內嵌於 PDF 或其他應用程式檔案的影像上呼叫 OCR,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"
}
]
}
}
範例:合併從內嵌影像擷取的文字與文件的內容
檔破解,技能集執行的第一個步驟,分隔文字和影像內容。 文字合併的常見使用案例是將影像的文字表示法(OCR 技能中的文字或影像的標題)合併到檔的內容欄位中。 這是針對源文檔是 PDF 或 Word 檔,結合文字與內嵌影像的情況。
下列範例技能集會 建立merged_text 欄位。 此欄位包含您檔案的文字內容,以及該檔案內嵌之每個影像的 OCRed 文字。
要求本文語法
{
"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"
}
]
}
]
}
上述技能集範例假設正規化影像欄位存在。 若要產生此欄位,請在索引器定義中設定 imageAction 組態以 產生NormalizedImages ,如下所示:
{
//...rest of your indexer definition goes here ...
"parameters": {
"configuration": {
"dataToExtract":"contentAndMetadata",
"imageAction":"generateNormalizedImages"
}
}
}