1. 簡介
Document AI 是一項文件解讀解決方案,可將文件、電子郵件等非結構化的資料擷取出來,讓您更輕鬆地解讀、分析和消化這些資料。
透過 Document AI Workbench 進階訓練模型,並為特定文件類型提供更多標記範例,即可建立新模型版本,進而提高文件處理的準確率。
在本實驗室中,您將建立應付憑據剖析器處理器、設定處理器以進行進階訓練、為範例文件加上標籤,以及進階訓練處理器。
本實驗室使用的文件資料集,包含虛構管道公司的隨機產生發票。
必要條件
本程式碼研究室以其他 Document AI 程式碼研究室的內容為基礎。
建議您先完成下列程式碼研究室,再繼續操作。
- 使用 Document AI 來執行光學字元辨識 (Python)
- 使用 Document AI 剖析表單 (Python)
- 使用 Document AI 的專用處理器 (Python)
- 使用 Python 管理 Document AI 處理器
- Document AI:迴圈中的人
課程內容
- 設定應付憑據剖析器處理器的進階訓練。
- 使用註解工具為 Document AI 訓練資料加上標籤。
- 訓練新版模型。
- 評估新模型版本的準確度。
軟硬體需求
2. 開始設定
本程式碼研究室假設您已完成入門程式碼研究室中列出的 Document AI 設定步驟。
請先完成下列步驟再繼續:
3. 建立處理器
您必須先建立應付憑據剖析器處理器,才能在本實驗室中使用。

- 點按「建立處理器」,捲動至「專用」 (或在搜尋列中輸入「應付憑據剖析器」),然後選取「應付憑據剖析器」。

- 將名稱設為
codelab-invoice-uptraining(或是您可以記住的其他名稱),然後從清單中選取最接近的區域。

- 點按「建立」即可建立處理器。接著,您應該會看到「處理器總覽」頁面。

4. 建立資料集
如要訓練處理器,我們必須建立具有訓練和測試資料的資料集,以協助處理器識別要擷取的實體。
您需要在 Cloud Storage 中建立新值區,以儲存資料集。注意:請勿使用目前儲存文件的 bucket。
- 開啟 Cloud Shell,然後執行下列指令來建立 bucket。您也可以在 Cloud 控制台中建立新的 bucket。請儲存這個 bucket 名稱,後續步驟會用到。
export PROJECT_ID=$(gcloud config get-value project)
gsutil mb -p $PROJECT_ID "gs://${PROJECT_ID}-uptraining-codelab"
- 前往「資料集」分頁,然後點按「建立資料集」

- 將您在步驟一建立的值區名稱,貼到「Destination Path」(目的地路徑) 欄位。(請勿加入
gs://)

- 等待資料集建立完成,系統應會將您導向資料集管理頁面。

5. 匯入測試文件
現在,請將應付憑據 PDF 範例匯入資料集。
- 按一下「Import Documents」(匯入文件)

- 我們提供範例 PDF,供您在本實驗室中使用。複製下列連結並貼到「來源路徑」方塊中。目前請將「資料分割」保留為「未指派」。按一下「匯入」。
cloud-samples-data/documentai/codelabs/uptraining/pdfs

- 等待系統匯入文件。在我的測試中,這個過程不到 1 分鐘。

- 匯入完成後,您應該會在資料集管理使用者介面中看到該文件。按一下即可進入標籤控制台。

6. 為測試文件加上標籤
接著,我們會找出要擷取實體的文字元素和標籤。這些標籤將用於訓練模型,以便剖析這類特定文件結構並識別正確類型。
- 現在應該會進入標記控制台,畫面如下所示。

- 按一下「選取文字」工具,然後醒目顯示「McWilliam Piping International Piping Company」文字,並指派
supplier_name標籤。您可以使用文字篩選器搜尋標籤名稱。

- 醒目顯示「14368 Pipeline Ave Chino, CA 91710」文字,並指派
supplier_address標籤。

- 醒目顯示「10001」文字,並指派
invoice_id標籤。

- 醒目顯示「2020-01-02」文字,然後指派
due_date標籤。

- 切換至「Bounding Box」工具。醒目顯示「Knuckle Couplers」文字,並指派
line_item/description標籤。

- 醒目顯示「9」這個文字,然後指派
line_item/quantity標籤。

- 醒目顯示「74.43」文字,並指派
line_item/unit_price標籤。

- 醒目顯示「669.87」文字,並指派
line_item/amount標籤。

- 針對下兩個委刊項重複執行上述 4 個步驟。完成後應如下所示。

- 醒目顯示「小計」旁的「1,419.57」,然後指派
net_amount標籤。

- 醒目顯示「稅金」旁邊的「113.57」,然後指派
total_tax_amount標籤。

- 醒目顯示「總計」旁的「1,533.14」文字,然後指派
total_amount標籤。

- 醒目顯示其中一個「$」字元,並指派
currency標籤。

- 完成後,加上標籤的文件應如下所示。請注意,如要調整這些標籤,可以點選文件中的邊界方塊,或左側選單中的標籤名稱/值。標籤完成後,請按一下「儲存」。

- 以下是完整的標籤和值清單
標籤名稱 | Text |
| 麥克威廉國際管道公司 |
| 14368 Pipeline Ave Chino, CA 91710 |
| 10001 |
| 2020-01-02 |
| 連接管 |
| 9 |
| 74.43 |
| 669.87 |
| 聚氯乙烯管 (12 英寸) |
| 7 |
| 15.90 |
| 111.30 |
| 銅管 |
| 7 |
| 91.20 |
| 638.40 |
| 1,419.57 |
| 113.57 |
| 1,533.14 |
| $ |
7. 將文件指派給訓練集
您現在應該會返回資料集管理控制台。請注意,標示和未標示的文件數量以及有效標籤數量也已變更。

- 我們需要將這份文件指派給「訓練」或「測試」集。按一下文件。

- 按一下「指派給資料集」,然後點選「訓練」。

- 請注意,資料分割的數字已變更。

8. 匯入預先加上標籤的資料
Document AI Uptraining 在訓練集和測試集中至少需要 10 個文件,每個組合中的每個標籤至少需要 10 個執行個體。
建議您每個組合至少加入 50 份文件,每個標籤包含 50 個例項,以獲得最佳成效。訓練資料越多,通常就越準確。
手動為 100 份文件加上標籤需要很長時間,因此我們提供了一些預先加上標籤的文件,您可以在這個實驗室中匯入這些文件。
您可以匯入 Document.json 格式的預先標記文件檔案。這些結果可能來自於呼叫處理器,並使用人機迴圈 (HITL) 驗證準確度。
- 按一下「匯入文件」。

- 複製/貼上下列 Cloud Storage 路徑,並指派給「訓練」集。
cloud-samples-data/documentai/codelabs/uptraining/training
- 按一下「新增其他儲存空間」。然後複製/貼上下列 Cloud Storage 路徑,並指派給「測試」集。
cloud-samples-data/documentai/codelabs/uptraining/test

- 按一下「Import」(匯入),然後等待系統匯入文件。這次需要處理的文件較多,因此時間會比上次長。根據我的測試結果,這項程序大約需要 6 分鐘。您可以先離開這個頁面,稍後再返回查看。

- 完成後,您應該會在資料集管理頁面看到這些文件。

9. 編輯標籤
我們在這個範例中使用的範例文件,並未包含應付憑據剖析器支援的所有標籤。訓練前,我們需要將未使用的標籤標示為無效。您也可以按照類似步驟,在進階訓練前新增自訂標籤。
- 按一下左下角的「管理標籤」。

- 您現在應該會進入標籤管理控制台。

- 使用核取方塊和「停用」/「啟用」按鈕,將下列標籤標示為「已啟用」。
currencydue_dateinvoice_idline_item/amountline_item/descriptionline_item/quantityline_item/unit_pricenet_amountsupplier_addresssupplier_nametotal_amounttotal_tax_amount
- 完成後,控制台應如下所示。完成後,請按一下「儲存」。

- 按一下返回箭頭,返回資料集管理控制台。請注意,例項數為 0 的標籤已標示為「停用」。

10. 選用:自動為新匯入的文件加上標籤
在使用現有已部署處理器版本的處理器匯入無標籤文件時,您可以使用自動加上標籤功能節省標籤時間。
- 在「Train」(訓練) 頁面上,按一下「Import Documents」(匯入文件)。
- 複製及貼上下列 路徑。這個目錄包含 5 個未加上標籤的應付憑據 PDF。在「Data split」(資料分割) 下拉式清單中選取「Training」(訓練)。
cloud-samples-data/documentai/Custom/Invoices/PDF_Unlabeled - 在「自動加上標籤」專區中,勾選「使用自動加上標籤功能匯入」核取方塊。
- 選取現有的處理器版本來為文件加上標籤。
- 例如:
pretrained-invoice-v1.3-2022-07-15
- 按一下「Import」(匯入),然後等待系統匯入文件。您可以先離開這個頁面,稍後再返回查看。
- 完成後,文件就會顯示在「Auto-labeling」(自動加上標籤) 區段的「Train」(訓練) 頁面中。
- 您不得將自動加上標籤的文件用於訓練或測試,除非您將其標示為已加上標籤。如要查看已自動加上標籤的文件,請前往「Auto-labeled」(已自動加上標籤) 專區。
- 選取第一份文件即可進入標籤控制台。
- 確認標籤、定界框和值是否正確。為省略的任何值加上標籤。
- 完成後,請選取「標示為已加上標籤」。
- 為每個自動加上標籤的文件重複執行標籤驗證,然後返回「Train」(訓練) 頁面來使用這些資料進行訓練。
11. 訓練模型
現在,我們已準備好開始訓練應付憑據剖析器。
- 按一下「訓練新版本」

- 為版本命名,例如
codelab-uptraining-test-1。「基礎」版本是這個新版本所建構的模型版本。如果使用新的處理器,唯一選項應為「Google Pretrained Next with Uptraining」

- (選用) 你也可以選取「查看標籤統計資料」,查看資料集中標籤的指標。

- 按一下「開始訓練」,即可開始訓練程序。系統應會將您重新導向至「資料集管理」頁面。您可以在右側查看訓練狀態。訓練作業需要數小時才能完成。您可以先離開這個頁面,稍後再返回查看。

- 按一下版本名稱,系統會將您導向「管理版本」頁面,其中會顯示版本 ID 和訓練工作的目前狀態。

12. 測試新模型版本
訓練工作完成後 (在我的測試中約需 1 小時),您就可以測試新版模型,並開始用於預測。
- 前往「管理版本」頁面。您可以在這裡查看目前的狀態和 F1 分數。

- 我們需要先部署這個模型版本,才能使用。按一下右側的垂直圓點,然後選取「Deploy Version」(部署版本)。

- 等待版本部署完成時,請從彈出式視窗中選取「Deploy」(部署)。這項作業要幾分鐘才能完成。部署完成後,您也可以將這個版本設為預設版本。

- 部署完成後,請前往「評估」分頁。接著點選「版本」下拉式選單,然後選取我們新建立的版本。

- 在這個頁面中,您可以查看整份文件和個別標籤的評估指標,包括 F1 分數、精確度和召回率。如要進一步瞭解這些指標,請參閱 AutoML 說明文件。
- 下載下方連結的 PDF 檔案。這是未納入訓練集或測試集的範例文件。
- 按一下「上傳測試文件」,然後選取 PDF 檔案。

- 擷取的實體應如下所示。

13. 結語
恭喜!您已成功使用 Document AI 進階訓練應付憑據剖析器。現在,就像使用任何專業處理器一樣,您可以透過這個處理器剖析月結單。
您可以參閱專業處理器程式碼研究室,瞭解如何處理處理回應。
清除
如要避免系統向您的 Google Cloud 帳戶收取您在本教學課程中所用資源的相關費用:
資源
- Document AI Workbench 說明文件
- The Future of Documents - YouTube 播放清單
- Document AI 說明文件
- Document AI Python 用戶端程式庫
- Document AI 範例
授權
這項內容採用的授權為 Creative Commons 姓名標示 2.0 通用授權。