你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

FormTrainingClient 类

  • java.lang.Object
    • com.azure.ai.formrecognizer.training.FormTrainingClient

public final class FormTrainingClient

此类提供一个同步客户端,用于连接到 Azure 认知服务表单识别器。

此客户端提供同步方法用于:

  1. 训练自定义模型:训练自定义模型,以使用 beginTraining(String trainingFilesUrl, boolean useTrainingLabels) 方法从特定于业务的表单和文档中分析和提取数据。
  2. 复制自定义模型:使用 beginCopyModel 方法将自定义表单识别器模型复制到目标表单识别器资源。
  3. 列出自定义模型:分别使用 getCustomModel(String modelId)listCustomModels() 方法获取有关所有自定义模型的信息。
  4. 轮询和回调:它包括轮询服务以检查分析操作的状态或注册回调以在分析完成时接收通知的机制。

注意: 此客户端仅支持 V2_1 和 更低版本。 建议使用较新的服务版本 DocumentModelAdministrationAsyncClientDocumentModelAdministrationClient

若要使用 API 版本 2022-08-31 及更新,请参阅 迁移指南

服务客户端是开发人员使用 Azure 表单识别器的交互点。 FormTrainingClient 是同步服务客户端, FormTrainingAsyncClient 是异步服务客户端。 本文档中显示的示例使用名为 DefaultAzureCredential 的凭据对象进行身份验证,该对象适用于大多数方案,包括本地开发和生产环境。 此外,建议在生产环境中使用 托管标识 进行身份验证。 可以在 Azure 标识文档中找到有关不同身份验证方式及其相应凭据类型的详细信息。

示例:使用 DefaultAzureCredential 构造 FormTrainingClient

下面的代码示例演示如何使用“DefaultAzureCredentialBuilder”创建 FormTrainingClient它来配置它。

FormTrainingClient client = new FormTrainingClientBuilder()
     .endpoint("{endpoint}")
     .credential(new DefaultAzureCredentialBuilder().build())
     .buildClient();

此外,请参阅下面的代码示例以用于 AzureKeyCredential 创建客户端。

FormTrainingClient formTrainingClient = new FormTrainingClientBuilder()
     .credential(new AzureKeyCredential("{key}"))
     .endpoint("{endpoint}")
     .buildClient();

方法摘要

修饰符和类型 方法和描述
SyncPoller<FormRecognizerOperationResult,CustomFormModelInfo> beginCopyModel(String modelId, CopyAuthorization target)

将源) (存储在此资源中的自定义模型复制到用户指定的目标表单识别器资源。

SyncPoller<FormRecognizerOperationResult,CustomFormModelInfo> beginCopyModel(String modelId, CopyAuthorization target, Duration pollInterval, Context context)

将源) (存储在此资源中的自定义模型复制到用户指定的目标表单识别器资源。

SyncPoller<FormRecognizerOperationResult,CustomFormModel> beginCreateComposedModel(List<String> modelIds)

从帐户中提供的现有模型列表创建组合模型。

SyncPoller<FormRecognizerOperationResult,CustomFormModel> beginCreateComposedModel(List<String> modelIds, CreateComposedModelOptions createComposedModelOptions, Context context)

从帐户中提供的现有模型列表创建组合模型。

SyncPoller<FormRecognizerOperationResult,CustomFormModel> beginTraining(String trainingFilesUrl, boolean useTrainingLabels)

创建和训练自定义模型。

SyncPoller<FormRecognizerOperationResult,CustomFormModel> beginTraining(String trainingFilesUrl, boolean useTrainingLabels, TrainingOptions trainingOptions, Context context)

创建和训练自定义模型。

void deleteModel(String modelId)

删除指定的自定义模型。

Response<Void> deleteModelWithResponse(String modelId, Context context)

删除指定的自定义模型。

AccountProperties getAccountProperties()

获取表单识别器帐户的帐户信息。

Response<AccountProperties> getAccountPropertiesWithResponse(Context context)

使用 Http 响应和指定的 Context获取表单识别器帐户的帐户信息。

CopyAuthorization getCopyAuthorization(String resourceId, String resourceRegion)

生成将自定义模型复制到目标表单识别器资源的授权。

Response<CopyAuthorization> getCopyAuthorizationWithResponse(String resourceId, String resourceRegion, Context context)

生成将自定义模型复制到目标表单识别器资源的授权。

CustomFormModel getCustomModel(String modelId)

获取指定自定义模型 ID 的详细信息。

Response<CustomFormModel> getCustomModelWithResponse(String modelId, Context context)

获取指定自定义模型 ID 的详细信息。

FormRecognizerClient getFormRecognizerClient()

创建一个新的 FormRecognizerClient 对象。

PagedIterable<CustomFormModelInfo> listCustomModels()

列出表单识别器帐户上每个模型的信息。

PagedIterable<CustomFormModelInfo> listCustomModels(Context context)

使用 Http 响应和指定的 Context列出表单识别器帐户上每个模型的信息。

方法继承自 java.lang.Object

方法详细信息

beginCopyModel

public SyncPoller beginCopyModel(String modelId, CopyAuthorization target)

将源) (存储在此资源中的自定义模型复制到用户指定的目标表单识别器资源。

应将源表单识别器资源 (调用,该模型旨在) 复制。 目标参数应从目标资源的输出方法 getCopyAuthorization(String resourceId, String resourceRegion) 中提供。

该服务不支持取消长时间运行的操作,并返回一条错误消息,指示没有取消支持。

代码示例

String resourceId = "target-resource-Id";
 String resourceRegion = "target-resource-region";
 String copyModelId = "copy-model-Id";
 formTrainingAsyncClient.getCopyAuthorization(resourceId, resourceRegion)
     .flatMapMany(copyAuthorization -> formTrainingAsyncClient.beginCopyModel(copyModelId, copyAuthorization))
     .flatMap(AsyncPollResponse::getFinalResult)
     .subscribe(customFormModelInfo ->
         System.out.printf("Copied model has model Id: %s, model status: %s, training started on: %s,"
             + " training completed on: %s.%n",
         customFormModelInfo.getModelId(),
         customFormModelInfo.getStatus(),
         customFormModelInfo.getTrainingStartedOn(),
         customFormModelInfo.getTrainingCompletedOn()));

Parameters:

modelId - 要复制到目标表单识别器资源的模型的模型标识符
target - 对目标表单识别器资源的复制授权。 复制授权可以从目标资源的调用生成 getCopyAuthorization(String resourceId, String resourceRegion)

Returns:

SyncPoller<T,U> 询复制模型操作,直到其完成、失败或已取消。

beginCopyModel

public SyncPoller beginCopyModel(String modelId, CopyAuthorization target, Duration pollInterval, Context context)

将源) (存储在此资源中的自定义模型复制到用户指定的目标表单识别器资源。

应将源表单识别器资源 (调用,该模型旨在) 复制。 目标参数应从目标资源的输出方法 getCopyAuthorization(String resourceId, String resourceRegion) 中提供。

该服务不支持取消长时间运行的操作,并返回一条错误消息,指示没有取消支持。

代码示例

// The resource to copy model to
 String resourceId = "target-resource-Id";
 String resourceRegion = "target-resource-region";
 // The Id of the model to be copied
 String copyModelId = "copy-model-Id";

 CopyAuthorization copyAuthorization = targetFormTrainingClient.getCopyAuthorization(resourceId,
     resourceRegion);
 formTrainingClient.beginCopyModel(copyModelId, copyAuthorization, Duration.ofSeconds(5), Context.NONE)
     .waitForCompletion();
 CustomFormModel modelCopy = targetFormTrainingClient.getCustomModel(copyAuthorization.getModelId());
 System.out.printf("Copied model has model Id: %s, model status: %s, was requested on: %s,"
         + " transfer completed on: %s.%n",
     modelCopy.getModelId(),
     modelCopy.getModelStatus(),
     modelCopy.getTrainingStartedOn(),
     modelCopy.getTrainingCompletedOn());

Parameters:

modelId - 要复制到目标表单识别器资源的模型的模型标识符
target - 对目标表单识别器资源的复制授权。 复制授权可以从目标资源的调用生成 getCopyAuthorization(String resourceId, String resourceRegion)
pollInterval - 每次轮询操作状态之间的持续时间。 如果未指定,则使用默认值 5 秒。
context - 在服务调用期间通过 HTTP 管道传递的其他上下文。

Returns:

SyncPoller<T,U> 询复制模型操作,直到其完成、失败或已取消。

beginCreateComposedModel

public SyncPoller beginCreateComposedModel(List modelIds)

从帐户中提供的现有模型列表创建组合模型。

如果列表包含无效的、不存在的模型 ID 或重复的 ID,则此操作将失败。 目前仅支持使用标签训练的自定义模型执行此操作。

该服务不支持取消长时间运行的操作,并返回一条错误消息,指示没有取消支持。

代码示例

String labeledModelId1 = "5f21ab8d-71a6-42d8-9856-ef5985c486a8";
 String labeledModelId2 = "d7b0904c-841f-46f9-a9f4-3f2273eef7c9";
 final CustomFormModel customFormModel
     = formTrainingClient.beginCreateComposedModel(Arrays.asList(labeledModelId1, labeledModelId2))
     .getFinalResult();
 System.out.printf("Model Id: %s%n", customFormModel.getModelId());
 System.out.printf("Model Status: %s%n", customFormModel.getModelStatus());
 System.out.printf("Is this a composed model: %s%n",
     customFormModel.getCustomModelProperties().isComposed());
 customFormModel.getSubmodels()
     .forEach(customFormSubmodel -> customFormSubmodel.getFields()
         .forEach((key, customFormModelField) ->
             System.out.printf("Form type: %s Field Text: %s Field Accuracy: %f%n",
                 key, customFormModelField.getName(), customFormModelField.getAccuracy())));

Parameters:

modelIds - 要构成组合模型的模型 ID 列表。

Returns:

一个 SyncPoller<T,U> ,它轮询创建组合模型操作,直到它完成、失败或已取消。 完成的操作返回 CustomFormModel

beginCreateComposedModel

public SyncPoller beginCreateComposedModel(List modelIds, CreateComposedModelOptions createComposedModelOptions, Context context)

从帐户中提供的现有模型列表创建组合模型。

如果列表包含无效的、不存在的模型 ID 或重复的 ID,则此操作将失败。 目前仅支持使用标签训练的自定义模型执行此操作。

该服务不支持取消长时间运行的操作,并返回一条错误消息,指示没有取消支持。

代码示例

String labeledModelId1 = "5f21ab8d-71a6-42d8-9856-ef5985c486a8";
 String labeledModelId2 = "d7b0904c-841f-46f9-a9f4-3f2273eef7c9";
 final CustomFormModel customFormModel =
     formTrainingClient.beginCreateComposedModel(Arrays.asList(labeledModelId1, labeledModelId2),
         new CreateComposedModelOptions()
             .setModelName("my composed model name"),
         Context.NONE)
         .setPollInterval(Duration.ofSeconds(5))
         .getFinalResult();
 System.out.printf("Model Id: %s%n", customFormModel.getModelId());
 System.out.printf("Model Status: %s%n", customFormModel.getModelStatus());
 System.out.printf("Model display name: %s%n", customFormModel.getModelName());
 System.out.printf("Is this a composed model: %s%n",
     customFormModel.getCustomModelProperties().isComposed());
 customFormModel.getSubmodels()
     .forEach(customFormSubmodel -> customFormSubmodel.getFields()
         .forEach((key, customFormModelField) ->
             System.out.printf("Form type: %s Field Text: %s Field Accuracy: %f%n",
                 key, customFormModelField.getName(), customFormModelField.getAccuracy())));

Parameters:

modelIds - 要构成组合模型的模型 ID 列表。
createComposedModelOptions - 创建组合模型时要传递的可配置 CreateComposedModelOptions 的 。
context - 在服务调用期间通过 HTTP 管道传递的其他上下文。

Returns:

一个 SyncPoller<T,U> ,它轮询创建组合模型操作,直到它完成、失败或已取消。 完成的操作返回 CustomFormModel

beginTraining

public SyncPoller beginTraining(String trainingFilesUrl, boolean useTrainingLabels)

创建和训练自定义模型。

使用以下内容类型的文档训练模型 -“application/pdf”、“image/jpeg”、“image/png”、“image/tiff”。 忽略其他类型的内容。

该服务不支持取消长时间运行的操作,并返回一条错误消息,指示缺少取消支持。

代码示例

String trainingFilesUrl = "{SAS-URL-of-your-container-in-blob-storage}";
 boolean useTrainingLabels = true;
 CustomFormModel customFormModel =
     formTrainingClient.beginTraining(trainingFilesUrl, useTrainingLabels).getFinalResult();
 System.out.printf("Model Id: %s%n", customFormModel.getModelId());
 System.out.printf("Model Status: %s%n", customFormModel.getModelStatus());
 customFormModel.getSubmodels()
     .forEach(customFormSubmodel -> customFormSubmodel.getFields()
         .forEach((key, customFormModelField) ->
             System.out.printf("Form Type: %s Field Text: %s Field Accuracy: %f%n",
                 key, customFormModelField.getName(), customFormModelField.getAccuracy())));

Parameters:

trainingFilesUrl - 外部可访问的 Azure 存储 Blob 容器 URI (最好是共享访问签名 URI) 。 有关在 Azure 存储 Blob 容器中设置用于训练的表单的说明,请参阅 此处
useTrainingLabels - 布尔值,用于指定使用带标签的文件来训练模型。

Returns:

一个 , SyncPoller<T,U> 它轮询训练模型操作,直到它已完成、失败或已取消。 完成的操作返回已训练的 CustomFormModel

beginTraining

public SyncPoller beginTraining(String trainingFilesUrl, boolean useTrainingLabels, TrainingOptions trainingOptions, Context context)

创建和训练自定义模型。 使用以下内容类型的文档训练模型 -“application/pdf”、“image/jpeg”、“image/png”、“image/tiff”。 忽略其他类型的内容。

该服务不支持取消长时间运行的操作,并返回一条错误消息,指示缺少取消支持。

代码示例

String trainingFilesUrl = "{SAS-URL-of-your-container-in-blob-storage}";
 TrainingFileFilter trainingFileFilter = new TrainingFileFilter().setSubfoldersIncluded(false).setPrefix("Invoice");
 boolean useTrainingLabels = true;

 CustomFormModel customFormModel = formTrainingClient.beginTraining(trainingFilesUrl, useTrainingLabels,
     new TrainingOptions()
         .setTrainingFileFilter(trainingFileFilter)
         .setPollInterval(Duration.ofSeconds(5)), Context.NONE)
     .getFinalResult();

 System.out.printf("Model Id: %s%n", customFormModel.getModelId());
 System.out.printf("Model Status: %s%n", customFormModel.getModelStatus());
 customFormModel.getSubmodels()
     .forEach(customFormSubmodel -> customFormSubmodel.getFields()
         .forEach((key, customFormModelField) ->
             System.out.printf("Form Type: %s Field Text: %s Field Accuracy: %f%n",
                 key, customFormModelField.getName(), customFormModelField.getAccuracy())));

Parameters:

trainingFilesUrl - 外部可访问的 Azure 存储 Blob 容器 URI (最好是共享访问签名 URI) 。 有关在 Azure 存储 Blob 容器中设置用于训练的表单的说明,请参阅 此处
useTrainingLabels - 布尔值,用于指定使用带标签的文件来训练模型。
trainingOptions - 训练模型时可能传递的附加可配置 TrainingOptions 值。
context - 在服务调用期间通过 HTTP 管道传递的其他上下文。

Returns:

一个 , SyncPoller<T,U> 它轮询训练模型操作,直到它已完成、失败或已取消。 完成的操作返回已训练的 CustomFormModel

deleteModel

public void deleteModel(String modelId)

删除指定的自定义模型。

代码示例

String modelId = "{model_id}";
 formTrainingClient.deleteModel(modelId);
 System.out.printf("Model Id: %s is deleted.%n", modelId);

Parameters:

modelId - UUID 字符串格式模型标识符。

deleteModelWithResponse

public Response deleteModelWithResponse(String modelId, Context context)

删除指定的自定义模型。

代码示例

String modelId = "{model_id}";
 Response<Void> response = formTrainingClient.deleteModelWithResponse(modelId, Context.NONE);
 System.out.printf("Response Status Code: %d.", response.getStatusCode());
 System.out.printf("Model Id: %s is deleted.%n", modelId);

Parameters:

modelId - UUID 字符串格式模型标识符。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

Returns:

包含 Response<T> 状态代码和 HTTP 标头的 。

getAccountProperties

public AccountProperties getAccountProperties()

获取表单识别器帐户的帐户信息。

代码示例

AccountProperties accountProperties = formTrainingClient.getAccountProperties();
 System.out.printf("Max number of models that can be trained for this account: %d%n",
     accountProperties.getCustomModelLimit());
 System.out.printf("Current count of trained custom models: %d%n", accountProperties.getCustomModelCount());

Returns:

表单识别器帐户的请求帐户信息。

getAccountPropertiesWithResponse

public Response getAccountPropertiesWithResponse(Context context)

使用 Http 响应和指定的 Context获取表单识别器帐户的帐户信息。

代码示例

Response<AccountProperties> response = formTrainingClient.getAccountPropertiesWithResponse(Context.NONE);
 System.out.printf("Response Status Code: %d.", response.getStatusCode());
 AccountProperties accountProperties = response.getValue();
 System.out.printf("Max number of models that can be trained for this account: %s%n",
     accountProperties.getCustomModelLimit());
 System.out.printf("Current count of trained custom models: %d%n", accountProperties.getCustomModelCount());

Parameters:

context - 在服务调用期间通过 Http 管道传递的其他上下文。

Returns:

表单识别器帐户的请求帐户信息。

getCopyAuthorization

public CopyAuthorization getCopyAuthorization(String resourceId, String resourceRegion)

生成将自定义模型复制到目标表单识别器资源的授权。

Parameters:

resourceId - 目标表单识别器将模型复制到的资源的 Azure 资源 ID。 可以在 Azure 门户中表单识别器资源的“属性”部分找到此信息。
resourceRegion - 目标表单识别器资源的位置。 认知服务支持的有效 Azure 区域名称。 可以在 Azure 门户中表单识别器资源的“密钥和终结点”部分中找到此信息。 代码示例
 String resourceId = "target-resource-Id";
 String resourceRegion = "target-resource-region";
 CopyAuthorization copyAuthorization = formTrainingClient.getCopyAuthorization(resourceId, resourceRegion);
 System.out.printf("Copy Authorization for model id: %s, access token: %s, expiration time: %s, "
         + "target resource Id; %s, target resource region: %s%n",
     copyAuthorization.getModelId(),
     copyAuthorization.getAccessToken(),
     copyAuthorization.getExpiresOn(),
     copyAuthorization.getResourceId(),
     copyAuthorization.getResourceRegion()
 );
 

Returns:

getCopyAuthorizationWithResponse

public Response getCopyAuthorizationWithResponse(String resourceId, String resourceRegion, Context context)

生成将自定义模型复制到目标表单识别器资源的授权。 这应由目标资源 (调用,其中模型将复制到) ,输出可以作为目标参数 beginCopyModel(String modelId, CopyAuthorization target)传递到 。

Parameters:

resourceId - 目标表单识别器将模型复制到的资源的 Azure 资源 ID。 可以在 Azure 门户中表单识别器资源的“属性”部分找到此信息。
resourceRegion - 目标表单识别器资源的位置。 认知服务支持的有效 Azure 区域名称。此信息可在 Azure 门户中表单识别器资源的“密钥和终结点”部分中找到。
context - 在服务调用期间通过 Http 管道传递的其他上下文。 代码示例
 String resourceId = "target-resource-Id";
 String resourceRegion = "target-resource-region";
 Response<CopyAuthorization> copyAuthorizationResponse =
     formTrainingClient.getCopyAuthorizationWithResponse(resourceId, resourceRegion, Context.NONE);
 System.out.printf("Copy Authorization operation returned with status: %s",
     copyAuthorizationResponse.getStatusCode());
 CopyAuthorization copyAuthorization = copyAuthorizationResponse.getValue();
 System.out.printf("Copy model id: %s, access token: %s, expiration time: %s, "
         + "target resource Id; %s, target resource region: %s%n",
     copyAuthorization.getModelId(),
     copyAuthorization.getAccessToken(),
     copyAuthorization.getExpiresOn(),
     copyAuthorization.getResourceId(),
     copyAuthorization.getResourceRegion()
 );
 

Returns:

getCustomModel

public CustomFormModel getCustomModel(String modelId)

获取指定自定义模型 ID 的详细信息。

代码示例

String modelId = "{model_id}";
 CustomFormModel customFormModel = formTrainingClient.getCustomModel(modelId);
 System.out.printf("Model Id: %s%n", customFormModel.getModelId());
 System.out.printf("Model Status: %s%n", customFormModel.getModelStatus());
 customFormModel.getSubmodels()
     .forEach(customFormSubmodel -> customFormSubmodel.getFields()
         .forEach((key, customFormModelField) ->
             System.out.printf("Form Type: %s Field Text: %s Field Accuracy: %f%n",
                 key, customFormModelField.getName(), customFormModelField.getAccuracy())));

Parameters:

modelId - UUID 字符串格式模型标识符。

Returns:

指定模型的详细信息。

getCustomModelWithResponse

public Response getCustomModelWithResponse(String modelId, Context context)

获取指定自定义模型 ID 的详细信息。

代码示例

String modelId = "{model_id}";
 Response<CustomFormModel> response = formTrainingClient.getCustomModelWithResponse(modelId, Context.NONE);
 System.out.printf("Response Status Code: %d.", response.getStatusCode());
 CustomFormModel customFormModel = response.getValue();
 System.out.printf("Model Id: %s%n", customFormModel.getModelId());
 System.out.printf("Model Status: %s%n", customFormModel.getModelStatus());
 customFormModel.getSubmodels()
     .forEach(customFormSubmodel -> customFormSubmodel.getFields()
         .forEach((key, customFormModelField) ->
             System.out.printf("Field: %s Field Text: %s Field Accuracy: %f%n",
                 key, customFormModelField.getName(), customFormModelField.getAccuracy())));

Parameters:

modelId - UUID 字符串格式模型标识符。
context - 在服务调用期间通过 Http 管道传递的其他上下文。

Returns:

指定模型的详细信息。

getFormRecognizerClient

public FormRecognizerClient getFormRecognizerClient()

创建一个新的 FormRecognizerClient 对象。 新的 FormTrainingClient 使用与 相同的请求策略管道 FormTrainingClient

Returns:

一个新 FormRecognizerClient 对象。

listCustomModels

public PagedIterable listCustomModels()

列出表单识别器帐户上每个模型的信息。

代码示例

formTrainingClient.listCustomModels()
     .forEach(customModel ->
         System.out.printf("Model Id: %s, Model status: %s, Training started on: %s, Training completed on: %s.%n",
             customModel.getModelId(),
             customModel.getStatus(),
             customModel.getTrainingStartedOn(),
             customModel.getTrainingCompletedOn())
     );

Returns:

PagedIterable<T> 自定义 CustomFormModelInfo 表单模型信息的 。

listCustomModels

public PagedIterable listCustomModels(Context context)

使用 Http 响应和指定的 Context列出表单识别器帐户上每个模型的信息。

代码示例

formTrainingClient.listCustomModels(Context.NONE)
     .forEach(customModel ->
         System.out.printf("Model Id: %s, Model status: %s, Training started on: %s, Training completed on: %s.%n",
             customModel.getModelId(),
             customModel.getStatus(),
             customModel.getTrainingStartedOn(),
             customModel.getTrainingCompletedOn())
     );

Parameters:

context - 在服务调用期间通过 Http 管道传递的其他上下文。

Returns:

PagedIterable<T> 自定义 CustomFormModelInfo 表单模型信息的 。

适用于