訓練與評估

Document AI 可讓您使用自己的訓練資料訓練新的處理器版本,並根據自己的測試資料評估處理器版本的品質。

如果您想使用自訂處理器,這項功能就非常實用。Document AI 針對您的文件類型提供處理器,但您可以進階訓練自訂版本,以滿足需求。

訓練和評估通常會同步進行,以便反覆運算,最終產生高品質且實用的處理器版本。

Document AI

Document AI 可讓您建構自己的自訂擷取器,從特定類型的文件中擷取實體,例如菜單中的項目,或是履歷表中的姓名和聯絡資訊。

與其他處理器不同,自訂處理器不會隨附任何預先訓練的處理器版本,因此必須從頭訓練版本,才能處理文件。

如要開始使用 Document AI,請參閱「建立自訂處理器」。

進階訓練處理器

您可以進階訓練新的處理器版本,提高資料準確率、從文件中擷取其他自訂欄位,以及新增語言支援。

升級訓練會對 Google 預先訓練的處理器版本套用遷移學習,通常需要的資料量少於從頭開始訓練。

如要開始使用,請參閱「對預先訓練的處理器展開進階訓練」。

支援的處理器

並非所有專用處理器都支援升級訓練。這些處理器支援訓練。

資料注意事項和建議

資料的品質和數量會決定訓練、再訓練和評估的品質。

取得一組具代表性的實際文件,並提供足夠的高品質標籤,通常是這個程序中最耗時且耗費資源的部分。

文件數量

如果所有文件格式類似 (例如變異程度極低的固定表單),則只需較少文件即可達到準確度。變異程度越高,所需文件就越多。

下圖提供粗略估計,說明自訂文件擷取工具達到特定品質分數所需的檔案數量。

變化較小 變化較大
processor-training-and-evaluation-overview-1 processor-training-and-evaluation-overview-2

資料標籤

請考慮標記文件的選項,並確保有足夠的資源可為資料集中的文件加上註解。

訓練模型

自訂擷取器處理器可根據特定用途和可用的訓練資料,使用不同模型類型。

  • 自訂模型:使用加上標籤的訓練資料的模型。
    • 以範本為基礎:版面配置固定的文件。
    • 以模型為基礎:版面配置變化量適中的文件。
  • 生成式 AI 模型:以預先訓練的基礎模型為基礎,只需少量額外訓練。

下表說明各模型類型對應的使用案例。

自訂模型 生成式 AI
以範本為準 以模型為基礎
版面配置變化版本 低至中
任意形式文字的數量 (例如合約中的段落)
所需訓練資料量
訓練資料有限時的準確度 較高 較低 較高

瞭解如何使用屬性說明微調處理器

使用其他處理器的時機

以下列舉幾個情況,您可能需要考慮 Document AI Document AI Workbench 以外的選項,或是調整工作流程。

  • Document AI Workbench 不支援特定文字格式的輸入內容 (.txt、.html、.docx、.md 等)。考慮使用 Google Cloud中的其他預先建構或自訂語言處理服務,例如 Cloud Natural Language API
  • 自訂文件擷取器結構定義最多支援 150 個實體標籤。如果您的商業邏輯需要在結構定義中納入超過 150 個實體,建議訓練多個處理器,每個處理器都以實體子集為目標。

如何訓練處理器

假設您已建立支援訓練或進階訓練的處理器,並為資料集加上標籤,即可從頭開始訓練新的處理器版本。您也可以根據現有版本對新的處理器版本進行進階訓練。

訓練處理器版本

網路使用者介面

  1. 前往 Google Cloud 控制台的處理器「Train」(訓練) 分頁。

    前往「處理器庫」

  2. 按一下「編輯結構定義」,開啟「管理標籤」頁面。驗證處理器的標籤。

    訓練時啟用的標籤會決定新版處理器擷取的實體。如果結構定義中的標籤處於非使用中狀態,即使文件已加上標籤,處理器版本也不會擷取該標籤。

  3. 在「Train」(訓練) 分頁中,按一下「View Label Stats」(查看標籤統計資料),然後驗證測試和訓練集。自動加上標籤未加上標籤未指派的文件不會用於訓練和評估。

  4. 按一下「訓練新版本」

    「版本名稱」會定義 processorVersionname 欄位。

    processor-training-and-evaluation-overview-3

  5. 按一下「開始訓練」,等待系統訓練及評估新的處理器版本。

    您可以在「管理版本」分頁中監控訓練進度:

    processor-training-and-evaluation-overview-4

  6. 按一下「評估與測試」分頁標籤,即可查看新版處理器在測試集中的成效。詳情請參閱「評估處理器版本」。

Python

詳情請參閱 Document AI Python API 參考文件

如要向 Document AI 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。


from typing import Optional

from google.api_core.client_options import ClientOptions
from google.cloud import documentai  # type: ignore

# TODO(developer): Uncomment these variables before running the sample.
# project_id = 'YOUR_PROJECT_ID'
# location = 'YOUR_PROCESSOR_LOCATION' # Format is 'us' or 'eu'
# processor_id = 'YOUR_PROCESSOR_ID'
# processor_version_display_name = 'new-processor-version'
# train_data_uri = 'gs://bucket/directory/' # (Optional)
# test_data_uri = 'gs://bucket/directory/' # (Optional)


def train_processor_version_sample(
    project_id: str,
    location: str,
    processor_id: str,
    processor_version_display_name: str,
    train_data_uri: Optional[str] = None,
    test_data_uri: Optional[str] = None,
) -> None:
    # You must set the api_endpoint if you use a location other than 'us', e.g.:
    opts = ClientOptions(api_endpoint=f"{location}-documentai.googleapis.com")

    client = documentai.DocumentProcessorServiceClient(client_options=opts)

    # The full resource name of the processor
    # e.g. `projects/{project_id}/locations/{location}/processors/{processor_id}
    parent = client.processor_path(project_id, location, processor_id)

    processor_version = documentai.ProcessorVersion(
        display_name=processor_version_display_name
    )

    # If train/test data is not supplied, the default sets in the Cloud Console will be used
    input_data = documentai.TrainProcessorVersionRequest.InputData(
        training_documents=documentai.BatchDocumentsInputConfig(
            gcs_prefix=documentai.GcsPrefix(gcs_uri_prefix=train_data_uri)
        ),
        test_documents=documentai.BatchDocumentsInputConfig(
            gcs_prefix=documentai.GcsPrefix(gcs_uri_prefix=test_data_uri)
        ),
    )

    request = documentai.TrainProcessorVersionRequest(
        parent=parent, processor_version=processor_version, input_data=input_data
    )

    operation = client.train_processor_version(request=request)
    # Print operation details
    print(operation.operation.name)
    # Wait for operation to complete
    response = documentai.TrainProcessorVersionResponse(operation.result())

    metadata = documentai.TrainProcessorVersionMetadata(operation.metadata)

    print(f"New Processor Version:{response.processor_version}")
    print(f"Training Set Validation: {metadata.training_dataset_validation}")
    print(f"Test Set Validation: {metadata.test_dataset_validation}")

部署及使用處理器版本

您可以部署及管理處理器版本,就像其他處理器版本一樣。詳情請參閱「管理處理器版本」。

部署完成後,您可以傳送處理要求至自訂處理器。

停用或刪除處理器

如果不想再使用處理器,可以停用或刪除。如果停用處理器,可以重新啟用。處理器一經刪除即無法復原。

  1. 在左側的「Document AI」面板中,按一下「My processors」(我的處理器)

  2. 按一下處理器名稱右側的垂直三點圖示,按一下「停用處理器」或「刪除處理器」

詳情請參閱「管理處理器版本」。

升級微調的處理器版本

您可以將微調的自訂擷取器處理器版本升級至較新的基礎版本。這會根據舊版建立新版處理器,並使用處理器原始版本中的訓練資料。

  1. 在 Google Google Cloud 控制台中,前往處理器的「Deploy & use」(部署及使用) 分頁,然後選取要升級的支援處理器版本核取方塊。新處理器版本的設定將以這個版本為準。

    processor-training-and-evaluation-overview-5

  2. 選取已啟用的「升級」。輸入新處理器版本的名稱和基礎版本。

    processor-training-and-evaluation-overview-6

  3. 按一下「升級」,然後等待系統訓練新的處理器版本。

訓練資料加密

Document AI 訓練資料會儲存在 Cloud Storage 中,且視需要可使用客戶管理的加密金鑰加密。

刪除訓練資料

Document AI 訓練工作完成後,儲存在 Cloud Storage 中的所有訓練資料會在兩天的保留期限過後失效。後續的資料刪除活動會遵循「資料刪除 Google Cloud」一節所述程序。

定價

訓練或進修訓練都不會產生費用。您需要支付主機和預測費用。 詳情請參閱「Document AI 定價」。