Azure Form Recognizer 幫你分析紙本表單

Azure Form Recognizer 能夠自動將手寫或是列印的文字,轉換為可複製修正的文字檔。而這也是文件自動化的重要關鍵,不僅能夠處理大量的資料,也能維持 24 小時運作,讓企業服務不中斷。


如今 Azure 的 Form Recognizer 也從 v2 升至 v3,不僅支援更多預訓練模型和語言,同時也提供 Form Recognizer Studio 的操作介面,連結 Azure 的儲存體服務不須再透過 SAS 來連結,相較於過往的標籤工具  Form Recognizer Sample Tool 在操作方面更為簡易。


因此本篇將帶讀者了解如何運用 Azure 的 Form Recognizer Studio,快速擷取紙本資料。文件標籤、模型訓練、端點部署以及使用 Python SDK 進行端點預測,皆會在本文介紹。

一、情境假設

情境假設如下:小明是某間科技公司的人資,雖然該公司並沒有使用 104 平台徵才,但許多應徵者都是傳 104 的制式簡歷。為了不要錯過任何一個優秀人才,小明也會查閱這些履歷。然而履歷數量過多,他希望能自動化處理履歷中的欄位,尤其是學歷的部分,需要與 Python 後端串接,方便將學歷進行分類儲存。

二、訓練文件(圖片或 PDF)資料準備

為了能訓練模型來滿足小明的需求。首先需將文件資料上傳至 Azure 的儲存體帳戶,如此一來才可以作為表格辨識器的訓練資料來源。

1.建立儲存體帳戶

進入儲存體帳戶的服務後點選「建立」。如沒有特殊需求,僅需命名儲存體帳戶名稱就可以點選「檢閱+建立」。由於本篇只是示範,備援僅選擇LRS。詳細的規格與計費可參照官網

2.建立容器

點選我們剛創建的儲存體帳戶,之後再點選旁邊欄的「容器」

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 訓練文件(圖片或 PDF)資料準備-建立容器

進入之後只會有一個 $logs 的容器,這是 Azure 內建的。我們需要自行建立新的容器來儲存文件資料。點選上方的「+容器」,替新容器命名後,其餘選項無須更動就可以點選「建立」。

3.上傳資料

點選剛創建的新容器,「上傳」我們要用來訓練的文件資料,最好要有 5 個以上的訓練樣本。

4.資源共用(CORS)設定

由於等會要用到 Azure 的表格辨識器,因此我們需要更改 CORS 設定,讓表格辨識器可以讀寫容器內的文件。
因此需要回到我們創建的儲存體帳戶,點選資源共用(CORS)

Azure Form Recognizer 幫你分析紙本表單 | 訓練文件(圖片或 PDF)資料準備- 資源共用(CORS)設定 : 回到我們創建的儲存體帳戶,點選資源共用(CORS)

進入後按照下圖的參數進行設定,「允許來源」、「允許的標題」、「公開的標題」都設定「*」,「允許的方法」則全選,「存留期上限」為 200。設定完之後記得要「儲存」。

Azure Form Recognizer 幫你分析紙本表單 | 訓練文件(圖片或 PDF)資料準備- 資源共用(CORS)設定 : 回到我們創建的儲存體帳戶,點選資源共用(CORS)-進入後按照下圖的參數進行設定,「允許來源」、「允許的標題」、「公開的標題」都設定「*」

三、資料標籤與模型訓練

接下來就要進到本文的重點,該如何透過表格辨識器進行資料標籤並訓練模型。

1.建立表格辨識器服務

從 Azure Portal 點選表格辨識器,之後點選建立便會出現表單選項。由於我們只是示範因此 Pricing tier 僅選擇 F0(免費,每個月有 500 頁的額度),規格和費用可以參照官網

2.開啟 Form Recognizer Studio

我們所使用的 Form Recognizer Studio 為v3,能夠更好的整合表格辨識器和儲存體帳戶。
進入 Form Recognizer Studio,下滑點選 Custom form。

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 資料標籤與模型訓練-進入 Form Recognizer Studio,下滑點選 Custom form

點選 Create a project,之後就依照資源名稱進行填寫,填寫完畢就可以創建Project 。
完成後容器中所放的文件就會出現在 Label data。

3.標籤所要擷取的文字範圍

由於辨識出來的實體除了文字外,還有表格和勾選方格,因此我們須點選多重菱形的圖示,取消勾選表格和勾選方格,才能擷取到正確的文字。

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 資料標籤與模型訓練-標籤所要擷取的文字範圍

我們的目標是要抓取學校,因此將學校的欄位也就是國立中央大學進行圈選。
被圈選的文字會反綠並彈出輸入框,我們將命名欄位填寫為 school,之後再選擇 Field 便會將這個位置的國立中央大學標記為 school。

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 資料標籤與模型訓練-標籤所要擷取的文字範圍:被圈選的文字會反綠並彈出輸入框,我們將命名欄位填寫為 school,之後再選擇 Field 便會將這個位置的國立中央大學標記為 school。

標記完結果如下,接著以此類推將其他文件標記完。

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 資料標籤與模型訓練-標籤所要擷取的文字範圍:標記完結果如下,接著以此類推將其他文件標記完。

4.模型訓練與評估

標記完點選右上角的 Train,命名模型名稱就能建立模型。等待模型建立完成後,點選模型就可以看到準確率。
因為我們的訓練資料只有 5 份,因此準確率 0.8 算是不錯的表現。如果資料量越大,預測效果也會更加準確。

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 資料標籤與模型訓練-模型訓練與評估

5.測試預測結果

之後點選 Test,進入介面後點選 Add 就能上傳新的履歷。上傳後點選 Analyze就能得到測試結果。

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 資料標籤與模型訓練-測試預測結果

結果也準確預測出新履歷的學歷,可信度高達 0.939。

四、使用 Python SDK 進行預測

最後小明希望能自動分類學歷,這就需要與透過 Python 來呼叫端點。我們的程式碼則在此,程式碼主要參考自 Azure 官方網站,環境為 Google Colab。

1.套件安裝

因為我們使用的 DocumentAnalysisClient 為測試版,因此須依照以下指令安裝套件。詳情可看 Github 討論
!pip install azure-ai-formrecognizer –pre –upgrade

2.金鑰端點

endpoint, key 分別為端點和金鑰 1,這些都可以在表格辨識器的概觀介面底下找到。

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 使用 Python SDK 進行預測-金鑰端點 endpoint, key 分別為端點和金鑰 1,這些都可以在表格辨識器的概觀介面底下找到。

3.預測結果

Microsoft Azure Form Recognizer 幫你分析紙本表單 | 使用 Python SDK 進行預測-預測結果

上圖就是我們的預測結果,可信度為 0.939 與 FormRecognizer 的結果一致。 如此一來 Azure 的表格辨識器,就能有效減少小明的作業負擔。

五、總結

隨著 AI 技術的進步,中文字體預測的準確度也隨之上升,減少過去對於預測品質不佳的疑慮。現在 Form Recognizer 也被廣泛應用於不同場景,像是企業內部的文件處理、零售業的海關表單分析或是財務的收據分析。


當然中文的 Form Recognizer 不只是 Azure 有提供,像是使用 Google Cloud Platform 的客戶,也可透過 DocumentAI 來實做。如果有興趣使用的客戶也歡迎來信諮詢。

教你如何用 Vertex AI 實現文本分類

發布日期 : 2023-09

閱讀更多 : Microsoft Azure 聲音合成服務 (自訂神經語音 TTS)

從 0 到 1 教你如何用 AI 進行瑕疵檢測 | Google Cloud Vertex AI

| Google 的機器學習平台 Vertex AI

| Vertex AI – 使用整合式人工智慧平台中的預先訓練和自訂工具,加快建立、部署及擴充機器學習模型的速度

羽昇國際-企業上雲規劃評估服務