检查点
Enable the Document AI API.
/ 20
Configure your Vertex AI Workbench instance
/ 20
Make a synchronous process document request.
/ 20
Prepare your environment for asynchronous API calls
/ 20
Make an asynchronous process document request
/ 20
透過 Document AI API 使用 Python 處理文件
GSP925
總覽
Document AI API 是一項文件解讀解決方案,可擷取文件和電子郵件等非結構化資料,讓您更輕鬆地解讀、分析和使用這些資料。
在本實驗室中,您將結合 Document AI API 和 Python 來建立各種處理器 (包括一般表單處理器和文件 OCR 處理器),然後透過 Python 對 API 發出同步或非同步呼叫。本實驗室已為您建立 Vertex AI Workbench 執行個體,供您搭配 JupyterLab 筆記本使用 Document AI Python 用戶端模組。
目標
本實驗室的學習內容包括:
- 啟用 Document AI API 並建立處理器。
- 在 Vertex AI Workbench 執行個體安裝 Python 用戶端程式庫。
- 使用 Python 剖析表單掃描檔中的資料,以便發出同步 API 呼叫。
- 使用 Python 剖析表單掃描檔中的資料,以便發出非同步 API 呼叫。
設定和需求
點選「Start Lab」按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
- 點按 Google Cloud 控制台上方的「啟用 Cloud Shell」圖示 。
連線完成即代表已通過驗證,且專案已設為您的 PROJECT_ID。輸出內容中有一行宣告本工作階段 PROJECT_ID 的文字:
gcloud
是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
-
點按「授權」。
-
輸出畫面應如下所示:
輸出內容:
- (選用) 您可以使用下列指令來列出專案 ID:
輸出內容:
輸出內容範例:
gcloud
的完整說明,請前往 Google Cloud 並參閱「gcloud CLI overview guide」(gcloud CLI 總覽指南)。
工作 1:建立及測試一般表單處理器
在這項工作中,您將啟用 Document AI API,然後建立及測試一般表單處理器。一般表單處理器能處理任何類型的文件,並將文件中可辨識的所有文字內容擷取出來。這類處理器支援數種語言,不僅能處理印刷、手寫和以任意方向書寫的文字,還可解讀各項表單資料元素間的關係,協助您針對加上文字標籤的表單欄位擷取鍵/值組合。
啟用 Cloud Document AI API
您必須先啟用 API,才能使用 Document AI。
-
前往 Cloud 控制台,依序點按「導覽選單」圖示 >「API 和服務」>「程式庫」。
-
搜尋「Cloud Document AI API」,然後點按「啟用」按鈕,即可在 Google Cloud 專案中使用這個 API。
如果先前已啟用 Cloud Document AI API,畫面上會顯示「管理」按鈕,表示您可繼續完成後續的實驗室活動。
建立一般表單處理器
請使用 Document AI 表單剖析器建立 Document AI 處理器。
-
前往控制台,依序點按「導覽選單」圖示 >「Document AI」>「總覽」。
-
點按「Explore processor」並選取「Form Parser」,這屬於一般處理器的一種。
-
將處理器名稱設為 form-parser,然後從清單中選取「US (美國)」。
-
點按「建立」,即可建立 form-parser 處理器。
系統隨即會建立處理器,並傳回處理器詳細資料頁面,當中會顯示處理器 ID、狀態和預測端點。
- 記下處理器 ID,後續工作需使用這個 ID 來更新 JupyterLab 筆記本中的變數。
工作 2:設定 Vertex AI Workbench 執行個體,以便執行 Document AI API 呼叫
接下來,您會連線至 Vertex AI Workbench 執行個體 (已在實驗室啟動時自動建立) 中運作的 JupyterLab,然後設定環境,方便進行其餘的實驗室工作。
-
前往 Google Cloud 控制台,依序點選「導覽選單」>「Vertex AI」>「Workbench」。
-
找出
執行個體,點選「Open JupyterLab」按鈕。
Workbench 執行個體的 JupyterLab 介面會在新瀏覽器分頁中開啟。
-
點按「終端機」,在 Vertex AI Workbench 執行個體中開啟終端機殼層。
-
在終端機殼層輸入下列指令,將實驗室檔案匯入 Vertex AI Workbench 執行個體:
- 在終端機殼層輸入下列指令,安裝 Document AI 需要用到的 Python 用戶端程式庫和其他必要程式庫:
輸出內容應該會指出程式庫已安裝成功。
- 在終端機殼層輸入下列指令,匯入範例健康資料登記表:
-
在筆記本介面中,開啟 JupyterLab 筆記本
。 -
出現「Select Kernel」對話方塊時,從可用核心清單中選取「Python 3」。
工作 3:發出同步處理文件要求
您需要透過同步 Document AI API 呼叫,發出處理文件的要求。如要一次處理大量文件,也可使用非同步 API,後續工作也會用到這個 API。
檢查用來發出同步 Document AI API 呼叫的 Python 程式碼
請花點時間檢查
第一個程式碼區塊會匯出必要的程式庫,並初始化某些變數。
「Set your Processor ID」程式碼儲存格的作用是設定處理器 ID。您必須先手動完成這項設定,才能使用筆記本處理文件。
在這個步驟中,請使用工作 1 建立的 Document AI 處理器 ID。
提示:若未記下處理器 ID,請前往 Cloud 控制台分頁,依序點按「導覽選單」圖示 >「Document AI」>「我的處理器」,然後按一下處理器名稱來開啟詳細資料頁面。您可以在隨即顯示的頁面中複製處理器 ID。
「Process Document Function」程式碼儲存格會定義 process_document
函式,用來對 Document AI 處理器發出同步呼叫。這個函式會建立 Document AI API 用戶端物件。
您可以使用 project_id
、locations
和 processor_id
參數建立 API 呼叫需要的處理器名稱,並以 mime_type
結構來讀取和儲存範例 PDF 文件。
這個函式會建立含有完整文件處理器名稱的要求物件,並將這個物件做為參數,對 Document AI API 用戶端發出同步呼叫。成功送出要求後,處理器將傳回文件物件,當中提供的屬性包含表單內偵測到的實體。
「Process Document」程式碼儲存格會呼叫 process_document
函式,將回應儲存在 document
變數中,然後顯示偵測到的原始文字。所有處理器都會傳回 document.text
屬性的部分資料。
「Get Text Function」程式碼儲存格會定義 get_text()
函式,使用具名元素 text_segments
的 text_anchor
、start_index
和 end_index
屬性,擷取具名元素的文字。如果處理器傳回表單資料,就能使用這個函式來擷取這類資料的表單名稱和值。
「Display Form Data」儲存格會逐一分析偵測到的所有頁面,並對偵測到的每個 form_field
使用 get_text()
函式,用來擷取欄位名稱和值。接著,處理器會顯示這些值和對應的可信度分數。如果處理器是使用一般表單剖析器或專用剖析器,就會傳回表單資料,而透過文件 OCR 剖析器建立的處理器則不會。
「Display Entity Data」儲存格會擷取文件物件中的實體資料,然後分析偵測到的每個實體,並顯示實體類型、值和可信度屬性。請注意,「只有」使用專用 Document AI 剖析器 (例如採購費用剖析器) 的處理器,才會傳回實體資料。一般表單剖析器和文件 OCR 剖析器不會傳回實體資料。
工作 4:執行同步 Document AI Python 程式碼
請在 JupyterLab 筆記本中執行程式碼,對 Document AI API 發出同步呼叫。
-
在第二個「Set your Processor ID」程式碼儲存格中,將
PROCESSOR_ID
預留位置文字換成您在前述步驟建立的 form-parser 處理器 ID。 -
選取第一個儲存格,依序點按「Run」選單和「Run Selected Cell and All Below」,即可執行筆記本中的所有程式碼。
如果您已使用範例健康資料登記表,就會在輸出內容儲存格中,看見類似下方的表單資料:
若您能建立專用處理器,最後一個儲存格會顯示實體資料,否則儲存格將顯示空白資料表。
- 在 JupyterLab 選單中,依序點按「File」和「Save Notebook」,儲存目前工作進度。
工作 5:建立採用文件 OCR 的 Document AI 處理器
在這項工作中,您將使用一般文件 OCR 剖析器,建立 Document AI 處理器。
-
在「導覽選單」中,依序點按「Document AI」和「總覽」。
-
點按「Explore processor」後,找到「Document OCR」並點按「建立處理器」,這屬於一般處理器的一種。
-
將處理器名稱設為 ocr-processor,然後從清單中選取「US (美國)」。
-
點按「建立」即可建立處理器。
-
記下處理器 ID,後續工作需要指定這個值。
工作 6:準備非同步 Document AI API 呼叫的使用環境
在這項工作中,您會上傳範例 JupyterLab 筆記本,以便測試非同步 Document AI API 呼叫,並將實驗室的部分範例表單複製到 Cloud Storage,開始進行非同步處理作業。
-
點按「終端機」分頁標籤,在 Vertex AI Workbench 執行個體中重新開啟終端機殼層。
-
建立輸入文件專用的 Cloud Storage bucket,然後將範例 W2 表單複製到該 bucket:
-
在筆記本介面中,開啟 JupyterLab 筆記本
。 -
出現「Select Kernel」對話方塊時,從可用核心清單中選取「Python 3」。
工作 7:發出非同步處理文件要求
檢查用來發出非同步 Document AI API 呼叫的 Python 程式碼
請花點時間檢查
第一個程式碼儲存格會匯出必要的程式庫。
「Set your Processor ID」程式碼儲存格的作用是設定處理器 ID。您必須先手動完成這項設定,才能使用筆記本處理文件。
「Set your variables」程式碼儲存格會定義用來發出非同步呼叫的參數,包括輸入/輸出內容 Cloud Storage bucket 的位置,這些 bucket 將用於來源資料和輸出檔案。執行程式碼前,請先更新這個儲存格中的 PROJECT_ID
預留位置值,並在實驗室的下一個部分,更改 PROCESSOR_ID
的預留位置值。其他變數包含處理器位置和輸出/輸入內容 Cloud Storage bucket 的預設值,對此您不需要進行任何調整。
「Define Google Cloud client objects」程式碼儲存格會初始化 Document AI 和 Cloud Storage 用戶端。
「Create input configuration」程式碼儲存格會建立來源資料的輸入設定陣列參數,並將這項參數傳遞至非同步 Document AI 要求,做為輸入設定。處理器會找出輸入內容 Cloud Storage 位置中的檔案,然後將個別檔案的 Cloud Storage 來源位置和 MIME 類型儲存至這個陣列。
「Create output configuration」程式碼儲存格會建立非同步要求的輸出參數 (當中包含輸出內容 Cloud Storage bucket 位置),然後將這項參數儲存為 Document AI 批次輸出設定。
「Create the Document AI API request」程式碼儲存格會使用輸入和輸出設定物件,建立非同步 Document AI 批次處理要求物件。
「Start the batch (asynchronous) API operation」程式碼儲存格會將要求物件傳遞至 batch_process_documents()
方法,以便發出非同步文件處理要求。由於執行的是非同步呼叫,您需要使用 result()
方法,強制筆記本等待背景中的所有非同步工作完成。
「Fetch list of output files」儲存格會根據 destination_uri
變數的定義,列舉輸出內容 bucket 位置中的物件。
「Display detected text from asynchronous output JSON files」儲存格的作用,是載入歸類為 Document AI 文件物件的每個輸出 JSON 檔案,並顯示文件 OCR 處理器偵測到的文字資料。
「Display entity data」儲存格會顯示找到的實體資料,但請注意,只有透過專用剖析器建立的處理器,才能顯示這類資料。這項工作採用一般 Document AI OCR 剖析器,因此不會顯示實體資料。
執行非同步 Document AI Python 程式碼
請使用 Jupyterlab 筆記本提供的程式碼範例,透過 Document AI 批次處理要求,以非同步方式處理文件。
-
在第二個程式碼儲存格中,將
PROCESSOR_ID
預留位置文字換成您在前述步驟建立的 form-parser 處理器 ID。 -
選取第一個儲存格,依序點按「Run」選單和「Run Selected Cell and All Below」,即可執行筆記本中的所有程式碼。
-
程式碼儲存格執行期間,您可以逐步檢查筆記本中的程式碼和註解,瞭解非同步要求物件的建立和使用方式。
根據「Start the batch (asynchronous) API operation」程式碼儲存格的定義,筆記本會等待一到兩分鐘,確定非同步批次處理作業已完成。批次處理 API 呼叫屬於非同步性質,因此筆記本會使用 result
方法,強制筆記本等到非同步呼叫完成,再列舉及顯示輸出資料。
如果非同步工作因耗費過多時間而逾時,您可以重新執行其餘的儲存格,也就是「Start the batch (asynchronous) API operation」儲存格後的所有儲存格,以便顯示輸出內容。
輸出內容會包含文字說明,列出每個檔案中偵測到的 Document AI 資料。由於文件 OCR 剖析器無法偵測表單或實體資料,處理器不會顯示這類內容。若您能建立專用處理器,最後一個儲存格也會顯示實體資料。
- 在 JupyterLab 選單中,依序點按「File」和「Save Notebook」,儲存目前工作進度。
恭喜
您已成功對 Document AI API 發出同步和非同步呼叫。在本實驗室中,您學到許多實用知識,包括啟用 Document AI API 並建立處理器;在 Vertex AI Workbench 執行個體安裝 Python 用戶端程式庫;使用 Python 剖析表單掃描檔中的資料,以便發出同步 API 呼叫;使用 Python 剖析表單掃描檔中的資料,以便發出非同步 API 呼叫。
完成任務
這個自學實驗室屬於「Detect Manufacturing Defects using Visual Inspection AI」技能徽章任務的一部分。「任務」是指一系列相關的實驗室課程,這些課程構成完整的學習路徑。完成這項任務後即可獲得徽章,表彰您的成就。您可以在履歷表和社群平台張貼徽章,並加上 #GoogleCloudBadge 公開這項成就。徽章可公開展示,也能連結至您的線上履歷或社群媒體帳戶。如已參加過這個實驗室,歡迎報名任務並立即取得完成學分,或查看其他可開始進行的任務。
後續步驟/瞭解詳情
- 如要進一步瞭解如何使用 Document AI API,請參閱這份指南。
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 10 月 8 日
實驗室上次測試日期:2024 年 10 月 8 日
Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。