使用範例標籤工具定型自定義模型

此內容適用於:Document Intelligence v2.1 checkmarkv2.1。

提示

在本文中,您會搭配使用文件智慧服務 REST API 與範例標籤工具,以手動標記的資料定型自訂模型。

必要條件

您需要下列資源以完成此專案:

  • Azure 訂用帳戶 - 免費建立一個訂用帳戶
  • 擁有 Azure 訂用帳戶之後,請使用,在 Azure 入口網站中建立文件智慧服務資源,以取得您的金鑰和端點。 部署之後,請選取 [移至資源]。
    • 您需要使用已建立資源的金鑰和端點,將應用程式連線至文件智慧服務 API。 您稍後會在快速入門中將金鑰和端點貼到程式碼中。
    • 您可以使用免費定價層 (F0) 來試用服務,稍後再升級至生產環境的付費層。
  • 一組至少六種相同類型的表單。 您會使用此資料來定型模型和測試表單。 您可以針對本快速入門使用 範例數據集 (下載並擷取 sample_data.zip)。 將定型檔案上傳至標準效能層 Azure 儲存體 帳戶中 Blob 記憶體容器的根目錄。

建立文件智慧服務資源

前往 Azure 入口網站,並使用建立新的文件智慧服務資源。 在 [ 建立] 窗格中,提供下列資訊:

專案詳細資料 描述
訂用帳戶 選取已授與存取權的 Azure 訂用帳戶。
資源群組 包含您資源的 Azure 資源群組。 您可建立新的群組或新增群組至先前已有的群組。
區域 Azure AI 服務資源的位置。 不同的位置可能會產生延遲,但是對於您資源的執行階段可用性沒有影響。
名稱 資源的描述性名稱。 我們建議使用描述性名稱,例如 MyNameFormRecognizer
定價層 您的資源成本取決於您選擇的定價層和使用量。 如需詳細資訊,請參閱 API 價格詳細資料
檢閱 + 建立 選取 [檢閱 + 建立] 按鈕,以在 Azure 入口網站 上部署您的資源。

擷取金鑰和端點

當文件智慧服務資源完成部署後,您可以從入口網站中的 [所有資源] 清單尋找並選取該項資源。 您的金鑰和端點會位於資源 [金鑰和端點] 頁面的 [資源管理] 底下。 在繼續進行之前,請將這兩者儲存到暫存位置。

試試看

線上試用文件智慧服務範例標籤工具

您必須擁有 Azure 訂用帳戶 (免費建立帳戶) 和文件智慧服務資源端點和金鑰,才能試用文件智慧服務。

設定範例標籤工具

注意

如果儲存體資料位於 VNet 或防火牆後方,您必須在 VNet 或防火牆後方部署文件智慧服務範例標籤工具,並透過建立 系統指派的受控識別來授與存取權。

您會使用 Docker 引擎執行範例標籤工具。 請遵循下列步驟來設定 Docker 容器。 如需 Docker 和容器基本概念的入門,請參閱 Docker 概觀

提示

OCR 表單標籤工具也可作為 GitHub 上的 開放原始碼 專案。 此工具是使用 React + Redux 建置的 TypeScript Web 應用程式。 若要深入瞭解或參與,請參閱 OCR 窗體卷標工具 存放庫。 若要線上試用工具,請前往文件智慧服務範例標籤工具網站

  1. 首先,在主計算機上安裝 Docker。 本指南說明如何使用本機電腦作為主機。 如果您想要在 Azure 中使用 Docker 裝載服務,請參閱 部署範例卷標工具 操作指南。

    主計算機必須符合下列硬體需求:

    容器 最小值 建議需求
    範例標籤工具 2 核心,4 GB 記憶體 4 核心,8 GB 記憶體

    依照作業系統的適當指示,在您的電腦上安裝 Docker:

  2. 使用 docker pull 命令取得範例標籤工具容器。

     docker pull mcr.microsoft.com/azure-cognitive-services/custom-form/labeltool:latest-2.1
    
  3. 現在您已準備好使用 docker run執行容器。

     docker run -it -p 3000:80 mcr.microsoft.com/azure-cognitive-services/custom-form/labeltool:latest-2.1 eula=accept
    

    此命令讓範例標籤工具可透過網頁瀏覽器使用。 移至http://localhost:3000

注意

您也可以使用文件智慧服務 REST API,為文件新增標籤及定型模型。 若要使用 REST API 定型和分析,請參閱 使用 REST API 和 Python 使用標籤型。

設定輸入數據

首先,請確定所有定型檔的格式都相同。 如果您的表單有多種格式,請根據共同的格式將這些表單組織成子資料夾。 在定型時,您必須將 API 導向子資料夾。

設定跨網域資源分享 (CORS)

在您的記憶體帳戶上啟用 CORS。 在 Azure 入口網站 中選取您的記憶體帳戶,然後選擇左窗格中的 [CORS] 索引標籤。 在底線中,填入下列值。 在頂端選取儲存

  • 允許的來源 = *
  • 允許的方法 = [全部選取]
  • 允許的標頭 = *
  • 公開的標頭 = *
  • 最大年齡 = 200

CORS setup in the Azure portal

連線 範例標籤工具

範例卷標工具會連線到來源(原始上傳的窗體)和目標(已建立的標籤和輸出數據)。

您可以在項目之間設定和共用 連線。 它們使用可延伸的提供者模型,因此您可以輕鬆地新增來源/目標提供者。

若要建立新的連線,請選取左側導覽列中的 [新增 連線 集(即插即用)圖示。

以下欄值填入欄位:

  • 顯示名稱 - 連接顯示名稱。

  • 描述 - 您的項目描述。

  • SAS URL - Azure Blob 儲存體 容器的共用存取簽章 (SAS) URL。 若要擷取自定義模型定型數據的SAS URL,請移至 Azure 入口網站 中的記憶體資源,然後選取 [儲存體總管] 索引卷標。流覽至您的容器,按兩下滑鼠右鍵,然後選取 [取得共用存取簽章]。 請務必取得容器的SAS,而不是記憶體帳戶本身。 確定已核取 [讀取]、[寫入]、[刪除] 和 [列表] 許可權,然後按兩下 [建立]。 然後將URL區段中的值複製到暫存位置。 其格式應該為:https://<storage account>.blob.core.windows.net/<container name>?<SAS value>

    SAS URL retrieval

Connection settings of Sample Labeling tool.

建立新專案

在範例標籤工具中,專案會儲存您的組態和設定。 建立新的專案,並使用下列值填入欄位:

  • 顯示名稱 - 項目顯示名稱
  • 安全性令牌 - 某些項目設定可以包含敏感性值,例如金鑰或其他共享密碼。 每個專案都會產生可用於加密/解密敏感專案設定的安全性權杖。 您可以在應用程式 設定 中找到安全性令牌,方法是選取左側導覽列底部的齒輪圖示。
  • 來源 連線 - 您在上一個步驟中建立的 Azure Blob 儲存體 連線,您想要用於這個專案。
  • 資料夾路徑 - 選擇性 - 如果您的來源表單位於 Blob 容器上的資料夾中,請在這裡指定資料夾名稱
  • 文件智慧服務 URI - 您的文件智慧端點 URL。
  • 索引鍵 - 您的文件智慧服務索引鍵。
  • 描述 - 選擇性 - 專案描述

New project page on Sample Labeling tool.

為您的表單加上標籤

當您建立或開啟專案時,主要標籤編輯器視窗隨即開啟。 標籤編輯器包含三個部分:

  • 可重設大小的 v3.0 窗格,其中包含來源連線中表單的可捲動清單。
  • 可讓您套用標籤的主要編輯器窗格。
  • 標籤編輯器窗格,可讓使用者修改、鎖定、重新排序和刪除標籤。

識別文字和數據表

在左窗格的未檢視檔上選取 [執行版面配置],以取得每個檔的文字和表格版面配置資訊。 標籤工具會在每個文字元素周圍繪製週框方塊。

標籤工具也會顯示已自動擷取哪些資料表。 選取檔左側的數據表/方格圖示,以查看解壓縮的數據表。 由於本快速入門中會自動擷取資料表內容,因此我們不會為資料表內容加上標籤,而是會仰賴自動化擷取。

Table visualization in Sample Labeling tool.

在 v2.1 中,如果您的訓練檔沒有填入值,您可以繪製值應該所在的方塊。 使用 視窗左上角的 [繪製區域 ] 可標記區域。

將標籤套用至文字

接下來,您會建立標記 (標籤),並將其套用至要讓模型分析的文字元素。

  1. 首先,使用 [卷標編輯器] 窗格來建立您想要識別的標籤。
    1. 選取 + 以建立新的標籤。
    2. 輸入標籤名稱。
    3. 按 Enter 以儲存標記。
  2. 在主編輯器中,從醒目提示的文字元素或您繪製的區域選取單字。
  3. 選取您要套用的標籤,或按對應的鍵盤按鍵。 數字索引鍵會指派為前 10 個標記的快速鍵。 您可以使用標籤編輯器窗格中的向上和向下箭號圖示來重新排列標籤。
  4. 請遵循上述步驟,至少為五個表單加上標籤。

    提示

    當您標記表單時,請記住下列秘訣:

    • 您只能將一個標籤套用至每個選取的文字元素。
    • 每個標籤每個頁面只能套用一次。 如果相同窗體上出現多次值,請為每個實例建立不同的標記。 例如:“invoice# 1”、“invoice# 2” 等等。
    • 標籤無法跨越頁面。
    • 在表單上顯示時加上標籤;請勿嘗試將值分割成兩個不同標記的兩個部分。 例如,即使位址欄位跨越多行,也應該以單一標籤示。
    • 請勿在標記的欄位中包含索引鍵,只包含值。
    • 數據表數據應該會自動偵測,而且將在最終輸出 JSON 檔案中提供。 不過,如果模型無法偵測到所有數據表數據,您也可以手動標記這些欄位。 以不同的標籤數據表中的每個儲存格。 如果您的表單具有具有不同資料列數目的資料表,請確定您至少標記一個具有最大可能數據表的表單。
    • 使用右側的 + 按鈕來搜尋、重新命名、重新排序及刪除您的標記。
    • 若要移除套用的標籤而不刪除標籤,請選擇檔案檢視上的標記矩形,然後按下刪除鍵。

Main editor window of Sample Labeling tool.

指定標籤的標籤類型

您可以為每個標記設定預期的資料類型。 開啟標籤的操作功能表,然後從功能表選取類型。 這項功能可讓偵測演算法做出改善文字偵測精確度的假設。 也能確保在最終 JSON 輸出中,會以標準化格式傳回偵測到的值。 實值類型資訊會儲存在 fields.json 檔案中,與標籤檔案相同的路徑中。

Value type selection with Sample Labeling tool

目前支援下列實值類型和變化:

  • string

    • default、 、 no-whitespacesalphanumeric
  • number

    • 預設 currency
    • 格式化為浮點值。
    • 範例:文件上的 1234.98 會在輸出時格式化為 1234.98
  • date

    • default、 、 dmymdyymd
  • time

  • integer

    • 格式化為整數值。
    • 範例:文件上的 1234.98 會在輸出時格式化為 123498。
  • selectionMark

注意

請參閱這些規則以取得日期格式設定:

您必須指定格式 (dmymdyymd、 ),日期格式才能運作。

下列字元可以做為日期分隔符號:, - / . \。 空格元不能當做分隔符使用。 例如:

  • 01,01,2020
  • 01-01-2020
  • 01/01/2020

日和月可以各寫為一位或兩位數字,而年可以是兩位或四位數字:

  • 1-1-2020
  • 1-01-20

如果日期字串有八位數字,分隔符號為選用:

  • 01012020
  • 01 01 2020

月份也可以寫為完整名稱或簡短名稱。 如果使用名稱,則分隔符號是選用字元。 不過,此格式辨識起來可能不如其他格式正確。

  • 01/Jan/2020
  • 01Jan2020
  • 01 Jan 2020

標籤資料表 (僅限 v2.1)

有時,您的數據可能更適合將它標示為數據表,而不是索引鍵/值組。 在此情況下,您可以選取 [新增數據表卷標] 來建立數據表卷標。 根據文件指定資料表具有固定數目的資料列或可變數目的資料列,並定義結構描述。

Configuring a table tag.

定義數據表標記之後,請標記數據格值。

Labeling a table.

定型自訂模型

選擇左窗格中的 [訓練] 圖示,以開啟 [訓練] 頁面。 然後選取 [ 定型] 按鈕以開始定型模型。 定型程序完成後,您會看到下列資訊:

  • 模型標識碼 - 已建立和定型之模型的標識碼。 每個定型呼叫都會使用自己的標識碼來建立新的模型。 請將此字串複製到安全之處;如果您想要透過 REST API用戶端程式庫指南進行預測呼叫,就會需要此字串。
  • 平均精確度 - 模型的平均精確度。 您可以藉由新增和標記更多窗體來改善模型精確度,然後重新定型以建立新的模型。 建議您從標記五個窗體開始,並視需要新增更多窗體。
  • 標記清單,以及每個標記的估計精確度。

Training view.

定型完成後,請檢查 [平均精確度] 值。 如果該值偏低,您應新增更多輸入文件,並重複標籤步驟。 您已加上標籤的文件會保留在專案索引中。

提示

您也可以使用 REST API 呼叫來執行定型程式。 若要瞭解如何執行這項操作,請參閱 使用 Python 使用標籤型。

撰寫定型的模型

使用「模型撰寫」時,您最多可以將 200 個模型撰寫為單一模型識別碼。 當您使用已撰寫的 modelID 呼叫分析時,文件智慧服務會對您所提交的表單分類,選擇最相符的模型,再傳回該模型的結果。 當傳入表單可能屬於數個範本之一時,這項作業很有用。

  • 若要在範例標籤工具中撰寫模型,請從導覽列中選取 [模型撰寫 (合併箭號)] 圖示。
  • 選取您想要一起撰寫的模型。 具有箭號圖示的模型已經組成模型。
  • 選擇 [ 撰寫] 按鈕。 在快顯中,將新的撰寫模型命名為 ,然後選取 [撰寫]。
  • 作業完成時,新撰寫的模型應該會出現在清單中。

Model compose UX view.

分析表單

從導覽列中選取 [分析] 圖示以測試您的模型。 選取來源 [本機檔案]。 瀏覽檔案,然後從您在測試資料夾中解壓縮的範例數據集中選取檔案。 然後選擇 [ 執行分析 ] 按鈕,以取得表單的索引鍵/值組、文字和數據表預測。 此工具會將標籤套用至周框方塊中,並報告每個標籤的信賴度。

Screenshot of analyze-a-custom-form window

提示

您也可以使用 REST 呼叫來執行分析 API。 若要瞭解如何執行這項操作,請參閱 使用 Python 使用標籤型。

改善結果

根據報告的正確性,您可能想要進行進一步的定型來改善模型。 完成預測之後,請檢查每個已套用標籤的信賴值。 如果平均精確度定型值很高,但信賴分數很低(或結果不正確),請將預測檔案新增至定型集、加上標籤,然後重新定型。

當分析的檔與定型中使用的文件不同時,回報的平均精確度、信賴分數和實際精確度可能會不一致。 請記住,某些檔在人員檢視時看起來類似,但看起來與 AI 模型不同。 例如,您可以使用具有兩個變化的窗體類型進行定型,其中定型集包含 20% 變化 A 和 80% 變化 B。在預測期間,變化 A 檔的信心分數可能會較低。

儲存專案並稍後繼續

若要在另一次或另一個瀏覽器中繼續您的專案,您必須儲存專案的安全性令牌,並在稍後重新輸入。

取得項目認證

移至您的項目設定頁面(滑杆圖示),並記下安全性令牌名稱。 然後移至您的應用程式設定(齒輪圖示),以顯示您目前瀏覽器實例中的所有安全性令牌。 尋找專案的安全性令牌,並將其名稱和金鑰值複製到安全的位置。

還原項目認證

當您想要繼續專案時,您必須先建立與相同 Blob 記憶體容器的連線。 若要這樣做,請重複上述步驟。 然後,移至應用程式設定頁面(齒輪圖示),並查看專案的安全性令牌是否存在。 如果不是,請新增安全性令牌,並從上一個步驟複製令牌名稱和密鑰。 選取 [ 儲存 ] 以保留您的設定。

繼續專案

最後,移至主頁面(房屋圖示),然後選取 [ 開啟雲端專案]。 然後選取 Blob 記憶體連線,然後選取項目的 .fott 檔案。 應用程式具有安全性權杖,因此會載入所有專案的設定。

下一步

在本快速入門中,您已了解如何使用文件智慧服務範例標籤工具,以手動標記的資料將模型定型。 如果您想要建置自己的公用程式來標記定型數據,請使用處理已標記數據定型的 REST API。