OCR 認知技能
光學字元辨識 (OCR) 技能可辨識圖像檔案中的印刷和手寫文字。 本文是 OCR 技能的參考檔。 如需使用指示,請參閱 從影像 擷取文字。
OCR 技能會使用 Azure AI 視覺 API v3.2 在 Azure AI 服務中提供的機器學習模型。 OCR 技能會對應至下列功能:
OCR 技能會從圖像檔案和內嵌影像擷取文字。 支援的檔案格式包括:
- .JPEG
- .JPG
- .PNG
- .BMP
- .TIFF
OCR 和影像分析支持的數據源是 Azure Blob 儲存體 和 Azure Data Lake Storage (ADLS) Gen2 中的 Blob,以及 OneLake 中的影像內容。 影像可以是獨立檔案或 PDF 或其他檔案中的內嵌影像。
注意
此技能會繫結至 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"
}
}
}