共用方式為


範例:建立表格辨識器自訂技能 (封存)

此範例已封存且不支援。 其中說明如何使用 C# 和 Visual Studio 建立表格辨識器自訂技能。

必要條件

  • Visual Studio (任何版本) 。
  • 至少有五個相同類型的表單。 您可以使用本指南提供的範例資料。

建立表格辨識器資源

請參閱建立表格辨識器資源

定型模型

您必須先使用輸入表單來定型表格辨識器模型,才能使用此技能。 使用表格辨識器模型說明如何定型模型。 您可以使用範例資料或自行提供。

模型定型後,請將其識別碼值複製到安全的位置。

設定自訂技能

本教學課程使用 Azure Search Power Skills GitHub 存放庫中的 AnalyzeForm 專案。 將此存放庫複製到本機電腦,並瀏覽至 Vision/AnalyzeForm/ 以存取專案。 然後,在 Visual Studio 中開啟 AnalyzeForm.csproj。 此專案會建立可實行自訂技能介面、並且可用於 Azure 認知搜尋擴充的 Azure 函式資源。 它會採用表單文件作為輸入,並輸出您指定的索引鍵/值組 (以文字格式)。

首先,請新增專案層級環境變數。 在左窗格中找出 AnalyzeForm 專案,並以滑鼠右鍵按一下該專案,然後選取 [屬性]。 在 [ 屬性 ] 視窗中,選取 [ 錯] 索引標籤,然後尋找 [環境變數] 欄位。 選取 [新增 ] 以新增下列變數:

  • FORMS_RECOGNIZER_ENDPOINT_URL (將值設定為您的端點 URL)。
  • FORMS_RECOGNIZER_API_KEY (將值設定為您的訂用帳戶金鑰)。
  • FORMS_RECOGNIZER_MODEL_ID (將值設定為您定型之模型的識別碼)。
  • FORMS_RECOGNIZER_RETRY_DELAY (將值設定為 1000)。 此值是程式在重試查詢之前等候的時間 (以毫秒為單位)。
  • FORMS_RECOGNIZER_MAX_ATTEMPTS (將值設定為 100)。 此值是程式在嘗試取得成功回應時查詢服務的次數。

接著,開啟 AnalyzeForm.cs,並尋找參考 field-mappings.json 檔案的 fieldMappings 變數。 此檔案 (和加以參考的變數) 會定義您想要從表單中擷取的索引鍵清單,以及每個索引鍵的自訂標籤。 例如,值 { "Address:", "address" }, { "Invoice For:", "recipient" } 表示指令碼只會儲存偵測到的 Address:Invoice For: 欄位的值,且會分別這些值標記為 "address""recipient"

最後,請記下 contentType 變數。 此指令碼會在 URL 所參考的遠端文件上執行指定的表格辨識器模型,因此內容類型為 application/json。 如果您想要藉由在 HTTP 要求中包含位元組資料流來分析本機檔案,則必須將 contentType 變更為檔案的適當 MIME 類型

從 Visual Studio 測試函式

編輯專案後請加以儲存,並將 AnalyzeForm 專案設定為 Visual Studio 中的啟始專案 (如果尚未設定)。 然後,按 F5 在本機環境中執行函式。 使用 Postman 之類的 REST 服務來呼叫 函式。

HTTP 要求

您將提出下列要求來呼叫函式。

POST http://localhost:7071/api/analyze-form

要求本文

從要求本文範本開始

{
    "values": [
        {
            "recordId": "record1",
            "data": { 
                "formUrl": "<your-form-url>",
                "formSasToken": "<your-sas-token>"
            }
        }
    ]
}

在此,您必須提供與您用來定型的表單同類型的表單 URL。 基於測試用途,您可以使用您的其中一個定型表單。 如果您先前依照 cURL 快速入門操作,您的表單將會位於 Azure Blob 儲存體帳戶中。 請開啟 Azure 儲存體總管,找出表單檔案在其上按一下滑鼠右鍵,然後選取 [取得共用存取簽章]。 下一個對話方塊視窗會提供 URL 和 SAS 權杖。 分別在要求本文的 "formUrl""formSasToken" 欄位中輸入這些字串。

Azure 儲存體總管;已選取 PDF 文件

如果您想要分析不在 Azure Blob 儲存體中的遠端文件,請在 "formUrl" 欄位中貼上其 URL,並將 "formSasToken" 欄位保留為空白。

注意

當技能整合到技能集時,認知搜尋將會提供 URL 和權杖。

回應

您應該會看到類似於以下範例的回應:

{
    "values": [
        {
            "recordId": "record1",
            "data": {
                "address": "1111 8th st. Bellevue, WA 99501 ",
                "recipient": "Southridge Video 1060 Main St. Atlanta, GA 65024 "
            },
            "errors": null,
            "warnings": null
        }
    ]
}

將函式發佈至 Azure

如果您對函數行為感到滿意,就可以將其發佈。

  1. 在 Visual Studio 的方案總管中,以滑鼠右鍵按一下專案名稱,然後選取 [發佈]。 選擇 [建立新項目]>[發佈]。
  2. 如果您尚未將 Visual Studio 連線到您的 Azure 帳戶,請選取 [新增帳戶...]。
  3. 遵循螢幕上的提示進行。 指定應用程式服務的唯一名稱、Azure 訂用帳戶、資源群組、主控方案,以及您要使用的儲存體帳戶。 如果還沒有的話,您可以建立新的資源群組、新的主控方案和新的儲存體帳戶。 完成之後,選取 [建立]。
  4. 完成部署後,請記下網站 URL。 此 URL 是 Azure 中函式應用程式的位址。 請將其儲存至暫存位置。
  5. Azure 入口網站中,瀏覽至資源群組,並尋找您發佈的 AnalyzeForm 函式。 在 [管理] 區段下,應該會看到主機金鑰。 複製預設主機金鑰,並將其儲存到暫存位置。

連線到您的管線

若要在認知搜尋管線中使用這項技能,您必須將技能定義新增至技能集。 下列 JSON 區塊是範例技能定義 (您應更新輸入和輸出,以反映您的特定案例和技能集環境)。 將 AzureFunctionEndpointUrl 取代為您的函式 URL,並將 AzureFunctionDefaultHostKey 取代為您的主機金鑰。

{ 
  "description":"Skillset that invokes the Form Recognizer custom skill",
  "skills":[ 
    "[... your existing skills go here]",
    { 
      "@odata.type":"#Microsoft.Skills.Custom.WebApiSkill",
      "name":"formrecognizer",
      "description":"Extracts fields from a form using a pre-trained form recognition model",
      "uri":"[AzureFunctionEndpointUrl]/api/analyze-form?code=[AzureFunctionDefaultHostKey]",
      "httpMethod":"POST",
      "timeout":"PT30S",
      "context":"/document",
      "batchSize":1,
      "inputs":[ 
        { 
          "name":"formUrl",
          "source":"/document/metadata_storage_path"
        },
        { 
          "name":"formSasToken",
          "source":"/document/metadata_storage_sas_token"
        }
      ],
      "outputs":[ 
        { 
          "name":"address",
          "targetName":"address"
        },
        { 
          "name":"recipient",
          "targetName":"recipient"
        }
      ]
    }
  ]
}