使用 ML.PROCESS_DOCUMENT 函式處理文件
本文說明如何搭配遠端模型使用 ML.PROCESS_DOCUMENT
函式,從物件資料表中的文件中擷取實用的洞察資料。
支援的地點
您必須在 US
或 EU
多區域中建立用於此程序的遠端模型。您必須在與遠端模型相同的區域中執行 ML.PROCESS_DOCUMENT
函式。
所需權限
如要建立 Document AI 處理器,您必須具備下列角色:
roles/documentai.editor
如要建立連結,您必須具備下列角色的成員資格:
roles/bigquery.connectionAdmin
如要使用 BigQuery ML 建立模型,您必須具備下列權限:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
如要執行推論,您需要具備下列權限:
- 物件資料表上的
bigquery.tables.getData
- 模型的
bigquery.models.getData
bigquery.jobs.create
- 物件資料表上的
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Document AI APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection API, and Document AI APIs.
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中,按一下專案名稱。
依序點選
「View actions」(查看動作) >「Create dataset」(建立資料集)。在「Create dataset」頁面上執行下列操作:
在「Dataset ID」(資料集 ID) 部分,輸入資料集名稱。
在「位置類型」中,選取資料集的位置。
點選「建立資料集」。
前往「BigQuery」頁面
在「Explorer」窗格中,按一下
「新增資料」:「Add data」對話方塊隨即開啟。
在「Filter By」窗格中的「Data Source Type」部分,選取「Business Applications」。
或者,您也可以在「Search for data sources」欄位中輸入
Vertex AI
。在「精選資料來源」部分,按一下「Vertex AI」。
按一下「Vertex AI 模型:BigQuery 聯盟」解決方案資訊卡。
在「連線類型」清單中,選取「Vertex AI 遠端模型、遠端函式和 BigLake (Cloud 資源)」。
在「連線 ID」欄位中,輸入連線的名稱。
點選「建立連線」。
按一下「前往連線」。
在「連線資訊」窗格中,複製服務帳戶 ID,以便在後續步驟中使用。
在指令列環境中建立連線:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
--project_id
參數會覆寫預設專案。更改下列內容:
REGION
:您的連線區域PROJECT_ID
:您的 Google Cloud 專案 IDCONNECTION_ID
:連線 ID
建立連線資源時,BigQuery 會建立專屬的系統服務帳戶,並將該帳戶與連線建立關聯。
疑難排解:如果您收到下列連線錯誤,請更新 Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
擷取並複製服務帳戶 ID,以便在後續步驟中使用:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
輸出結果會與下列內容相似:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
- 啟動 Cloud Shell。
-
設定要套用 Terraform 設定的預設 Google Cloud 專案。
您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。
-
在 Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含
.tf
副檔名,例如main.tf
。在本教學課程中,檔案稱為main.tf
。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。
將範例程式碼複製到新建立的
main.tf
中。您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。
- 查看並修改要套用至環境的範例參數。
- 儲存變更。
-
初始化 Terraform。這項操作只需對每個目錄執行一次。
terraform init
如要使用最新版的 Google 供應器,您可以選擇加入
-upgrade
選項:terraform init -upgrade
-
檢查設定,確認 Terraform 要建立或更新的資源符合您的預期:
terraform plan
視需要修正設定。
-
執行下列指令,並在提示中輸入
yes
,即可套用 Terraform 設定:terraform apply
等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。
- 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。
前往「IAM & Admin」(IAM 與管理) 頁面。
按一下
「授予存取權」。系統會開啟「Add principals」對話方塊。
在「新增主體」欄位,輸入先前複製的服務帳戶 ID。
在「請選擇角色」欄位中,依序選取「Document AI」和「Document AI Viewer」。
按一下 [Add another role] (新增其他角色)。
在「Select a role」(請選擇角色) 欄位中,依序選取「Cloud Storage」和「Storage Object Viewer」(Storage 物件檢視者)。
按一下 [儲存]。
PROJECT_NUMBER
:專案編號。MEMBER
:先前複製的服務帳戶 ID。PROJECT_ID
:您的專案 ID。DATASET_ID
:包含模型的資料集 ID。MODEL_NAME
:模型名稱。REGION
:連線使用的區域。CONNECTION_ID
:連線 ID,例如myconnection
。在 Google Cloud 控制台查看連線詳細資料時,連線 ID 是「連線 ID」中顯示的完整連線 ID 最後一節的值,例如
projects/myproject/locations/connection_location/connections/myconnection
。PROCESSOR_ID
:文件處理器 ID。如要找出這個值,請查看處理器詳細資料,然後查看「基本資訊」部分中的「ID」列。PROJECT_ID
:您的專案 ID。DATASET_ID
:包含模型的資料集 ID。MODEL_NAME
:模型名稱。OBJECT_TABLE_NAME
:物件表格名稱,其中包含要處理的文件 URI。PROCESS_OPTIONS
:指定文件處理方式的 JSON 設定。例如,您可以使用這個屬性為版面配置剖析器指定文件分割作業PROJECT_ID
:您的專案 ID。DATASET_ID
:包含模型的資料集 ID。MODEL_NAME
:模型名稱。OBJECT_TABLE_NAME
:物件表格名稱,其中包含要處理的文件 URI。FILTERS
:用於篩選要處理的物件資料表資料欄文件的條件。NUM_DOCUMENTS
:您要處理的文件數量上限。PROCESS_OPTIONS
:定義設定的 JSON 設定,例如版面配置剖析器的區塊設定- 如要瞭解 BigQuery ML 中的模型推論,請參閱「模型推論總覽」。
- 如要瞭解每個模型類型支援的 SQL 陳述式和函式,請參閱「每個模型的端對端使用者歷程」。
建立處理器
在 Document AI 中建立處理器,以便處理文件。處理器必須是支援的類型。
建立資料集
您必須在相同的區域中建立資料集、連線和文件處理工具。
建立 BigQuery 資料集來容納資源:
控制台
bq
建立連線
如果您已設定具備適當權限的預設連線,可以略過這個步驟。
為遠端模型建立Cloud 資源連線,並取得連線的服務帳戶。請在與您在上一個步驟中建立的資料集相同的位置建立連線。
選取下列選項之一:
主控台
bq
Terraform
使用 google_bigquery_connection
資源。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
以下範例會在 US
地區中建立名為 my_cloud_resource_connection
的 Cloud 資源連線:
如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。
準備 Cloud Shell
準備目錄
每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。
套用變更
將存取權授予服務帳戶
選取下列選項之一:
主控台
gcloud
使用 gcloud projects add-iam-policy-binding
指令:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/documentai.viewer' --condition=None gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/storage.objectViewer' --condition=None
請依指示取代下列項目:
如未授予權限,就會發生 Permission denied
錯誤。
建立模型
建立遠端模型,其中包含 CLOUD_AI_DOCUMENT_V1
的 REMOTE_SERVICE_TYPE
:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( REMOTE_SERVICE_TYPE = 'CLOUD_AI_DOCUMENT_V1', DOCUMENT_PROCESSOR = 'PROCESSOR_ID' );
請依指示取代下列項目:
如要查看模型輸出欄,請在建立模型後,按一下查詢結果中的「Go to model」。輸出欄會顯示在「結構定義」分頁的「標籤」部分。
建立物件資料表
在 Cloud Storage 的文件組合上建立物件資料表。物件表中的文件必須屬於支援的類型。
處理文件
使用 ML.PROCESS_DOCUMENT
處理所有文件:
SELECT * FROM ML.PROCESS_DOCUMENT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, TABLE `PROJECT_ID.DATASET_ID.OBJECT_TABLE_NAME` [, PROCESS_OPTIONS => ( JSON 'PROCESS_OPTIONS')] );
請依指示取代下列項目:
或者,您也可以使用 ML.PROCESS_DOCUMENT
處理部分文件:
SELECT * FROM ML.PROCESS_DOCUMENT( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, (SELECT * FROM `PROJECT_ID.DATASET_ID.OBJECT_TABLE_NAME` WHERE FILTERS LIMIT NUM_DOCUMENTS ) [, PROCESS_OPTIONS => ( JSON 'PROCESS_OPTIONS')] );
請依指示取代下列項目:
範例
範例 1
以下範例使用費用剖析器處理 documents
資料表所代表的文件:
SELECT * FROM ML.PROCESS_DOCUMENT( MODEL `myproject.mydataset.expense_parser`, TABLE `myproject.mydataset.documents` );
這項查詢會傳回已剖析的支出報表,包括貨幣、總金額、收據日期和支出報表上的明細項目。ml_process_document_result
欄包含費用剖析器的原始輸出內容,而 ml_process_document_status
欄則包含文件處理作業傳回的任何錯誤。
示例 2
以下範例說明如何篩選物件表格,選擇要處理的文件,然後將結果寫入新表格:
CREATE TABLE `myproject.mydataset.expense_details` AS SELECT uri, content_type, receipt_date, purchase_time, total_amount, currency FROM ML.PROCESS_DOCUMENT( MODEL `myproject.mydataset.expense_parser`, (SELECT * FROM `myproject.mydataset.expense_reports` WHERE uri LIKE '%restaurant%'));