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

FormTrainingAsyncClient 类

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

public final class FormTrainingAsyncClient

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

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

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

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

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

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

示例:使用 DefaultAzureCredential 构造 FormTrainingAsyncClient

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

FormTrainingAsyncClient client = new FormTrainingClientBuilder()
     .endpoint("{endpoint}")
     .credential(new DefaultAzureCredentialBuilder().build())
     .buildAsyncClient();

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

FormTrainingAsyncClient formTrainingAsyncClient = new FormTrainingClientBuilder()
     .credential(new AzureKeyCredential("{key}"))
     .endpoint("{endpoint}")
     .buildAsyncClient();

方法摘要

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

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

PollerFlux<FormRecognizerOperationResult,CustomFormModelInfo> beginCopyModel(String modelId, CopyAuthorization target, Duration pollInterval)

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

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

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

PollerFlux<FormRecognizerOperationResult,CustomFormModel> beginCreateComposedModel(List<String> modelIds, CreateComposedModelOptions createComposedModelOptions)

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

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

创建和训练自定义模型。

PollerFlux<FormRecognizerOperationResult,CustomFormModel> beginTraining(String trainingFilesUrl, boolean useTrainingLabels, TrainingOptions trainingOptions)

创建和训练自定义模型。

Mono<Void> deleteModel(String modelId)

删除指定的自定义模型。

Mono<Response<Void>> deleteModelWithResponse(String modelId)

删除指定的自定义模型。

Mono<AccountProperties> getAccountProperties()

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

Mono<Response<AccountProperties>> getAccountPropertiesWithResponse()

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

Mono<CopyAuthorization> getCopyAuthorization(String resourceId, String resourceRegion)

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

Mono<Response<CopyAuthorization>> getCopyAuthorizationWithResponse(String resourceId, String resourceRegion)

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

Mono<CustomFormModel> getCustomModel(String modelId)

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

Mono<Response<CustomFormModel>> getCustomModelWithResponse(String modelId)

使用 Http 响应获取指定自定义模型 ID 的详细信息。

FormRecognizerAsyncClient getFormRecognizerAsyncClient()

创建一个新的 FormRecognizerAsyncClient 对象。

PagedFlux<CustomFormModelInfo> listCustomModels()

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

方法继承自 java.lang.Object

方法详细信息

beginCopyModel

public PollerFlux 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:

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

beginCopyModel

public PollerFlux beginCopyModel(String modelId, CopyAuthorization target, Duration pollInterval)

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

应将源表单识别器资源 (调用,该模型旨在) 复制。 目标参数应从目标资源的输出方法 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,
         Duration.ofSeconds(5)))
     .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)
pollInterval - 每次轮询操作状态之间的持续时间。 如果未指定,则使用默认值 5 秒。

Returns:

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

beginCreateComposedModel

public PollerFlux beginCreateComposedModel(List modelIds)

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

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

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

代码示例

String labeledModelId1 = "5f21ab8d-71a6-42d8-9856-ef5985c486a8";
 String labeledModelId2 = "d7b0904c-841f-46f9-a9f4-3f2273eef7c9";
 formTrainingAsyncClient.beginCreateComposedModel(Arrays.asList(labeledModelId1, labeledModelId2))
     // if training polling operation completed, retrieve the final result.
     .flatMap(AsyncPollResponse::getFinalResult)
     .subscribe(customFormModel -> {
         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:

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

beginCreateComposedModel

public PollerFlux beginCreateComposedModel(List modelIds, CreateComposedModelOptions createComposedModelOptions)

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

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

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

代码示例

String labeledModelId1 = "5f21ab8d-71a6-42d8-9856-ef5985c486a8";
 String labeledModelId2 = "d7b0904c-841f-46f9-a9f4-3f2273eef7c9";
 formTrainingAsyncClient.beginCreateComposedModel(Arrays.asList(labeledModelId1, labeledModelId2),
     new CreateComposedModelOptions()
         .setModelName("my composed model name"))
     .setPollInterval(Duration.ofSeconds(5))
     // if training polling operation completed, retrieve the final result.
     .flatMap(AsyncPollResponse::getFinalResult)
     .subscribe(customFormModel -> {
         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 的 。

Returns:

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

beginTraining

public PollerFlux 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;
 formTrainingAsyncClient.beginTraining(trainingFilesUrl, useTrainingLabels)
     // if training polling operation completed, retrieve the final result.
     .flatMap(AsyncPollResponse::getFinalResult)
     .subscribe(customFormModel -> {
         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 - 源 URL 参数,它是可从外部访问的 Azure 存储 Blob 容器 Uri (最好是共享访问签名 URI) 。
useTrainingLabels - 布尔值,用于指定使用带标签的文件来训练模型。

Returns:

PollerFlux<T,U> 询训练模型操作,直到其完成、失败或已取消。 完成的操作返回经过训练的 CustomFormModel

beginTraining

public PollerFlux beginTraining(String trainingFilesUrl, boolean useTrainingLabels, TrainingOptions trainingOptions)

创建和训练自定义模型。

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

有关构建自己的训练数据集的信息,请参阅 此处

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

代码示例

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

 formTrainingAsyncClient.beginTraining(trainingFilesUrl, true,
     new TrainingOptions()
         .setTrainingFileFilter(trainingFileFilter)
         .setPollInterval(Duration.ofSeconds(5)))
     // if training polling operation completed, retrieve the final result.
     .flatMap(AsyncPollResponse::getFinalResult)
     .subscribe(customFormModel -> {
         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) 。
useTrainingLabels - 布尔值,用于指定使用带标签的文件来训练模型。
trainingOptions - 训练模型时可能传递的附加可配置值 TrainingOptions

Returns:

PollerFlux<T,U> 询训练模型操作,直到其完成、失败或已取消。 完成的操作返回经过训练的 CustomFormModel

deleteModel

public Mono deleteModel(String modelId)

删除指定的自定义模型。

代码示例

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

Parameters:

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

Returns:

空的 Mono。

deleteModelWithResponse

public Mono> deleteModelWithResponse(String modelId)

删除指定的自定义模型。

代码示例

String modelId = "{model_id}";
 formTrainingAsyncClient.deleteModelWithResponse(modelId)
     .subscribe(response -> {
         System.out.printf("Response Status Code: %d.", response.getStatusCode());
         System.out.printf("Model Id: %s is deleted.%n", modelId);
     });

Parameters:

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

Returns:

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

getAccountProperties

public Mono getAccountProperties()

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

代码示例

formTrainingAsyncClient.getAccountProperties()
     .subscribe(accountProperties -> {
         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 Mono> getAccountPropertiesWithResponse()

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

代码示例

formTrainingAsyncClient.getAccountPropertiesWithResponse()
     .subscribe(response -> {
         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: %d%n",
             accountProperties.getCustomModelLimit());
         System.out.printf("Current count of trained custom models: %d%n",
             accountProperties.getCustomModelCount());
     });

Returns:

包含 Response<T> 请求的帐户信息详细信息的 。

getCopyAuthorization

public Mono getCopyAuthorization(String resourceId, String resourceRegion)

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

Parameters:

resourceId - 目标表单识别器将模型复制到的资源的 Azure 资源 ID。
resourceRegion - 目标表单识别器资源的位置。 认知服务支持的有效 Azure 区域名称。 代码示例
 String resourceId = "target-resource-Id";
 String resourceRegion = "target-resource-region";
 formTrainingAsyncClient.getCopyAuthorization(resourceId, resourceRegion)
     .subscribe(copyAuthorization ->
         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:

CopyAuthorization可用于授权在资源之间复制模型的 。

getCopyAuthorizationWithResponse

public Mono> getCopyAuthorizationWithResponse(String resourceId, String resourceRegion)

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

Parameters:

resourceId - 目标表单识别器将模型复制到的资源的 Azure 资源 ID。
resourceRegion - 目标表单识别器资源的位置。 认知服务支持的有效 Azure 区域名称。 代码示例
 String resourceId = "target-resource-Id";
 String resourceRegion = "target-resource-region";
 formTrainingAsyncClient.getCopyAuthorizationWithResponse(resourceId, resourceRegion)
     .subscribe(copyAuthorization ->
         System.out.printf("Copy Authorization response status: %s, for model id: %s, access token: %s, "
                 + "expiration time: %s, target resource Id; %s, target resource region: %s%n",
         copyAuthorization.getStatusCode(),
         copyAuthorization.getValue().getModelId(),
         copyAuthorization.getValue().getAccessToken(),
         copyAuthorization.getValue().getExpiresOn(),
         copyAuthorization.getValue().getResourceId(),
         copyAuthorization.getValue().getResourceRegion()
     ));
 

Returns:

包含Response<T>CopyAuthorization可用于授权在资源之间复制模型的 。

getCustomModel

public Mono getCustomModel(String modelId)

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

代码示例

String modelId = "{model_id}";
 formTrainingAsyncClient.getCustomModel(modelId).subscribe(customFormModel -> {
     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 Mono> getCustomModelWithResponse(String modelId)

使用 Http 响应获取指定自定义模型 ID 的详细信息。

代码示例

String modelId = "{model_id}";
 formTrainingAsyncClient.getCustomModelWithResponse(modelId).subscribe(response -> {
     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("Form Type: %s Field Text: %s Field Accuracy: %f%n",
                     key, customFormModelField.getName(), customFormModelField.getAccuracy())));
 });

Parameters:

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

Returns:

包含 Response<T> 请求的 CustomFormModel

getFormRecognizerAsyncClient

public FormRecognizerAsyncClient getFormRecognizerAsyncClient()

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

Returns:

一个新 FormRecognizerAsyncClient 对象。

listCustomModels

public PagedFlux listCustomModels()

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

代码示例

formTrainingAsyncClient.listCustomModels()
     .subscribe(customModel ->
         System.out.printf("Model Id: %s, Model status: %s, Created on: %s, Last updated on: %s.%n",
             customModel.getModelId(),
             customModel.getStatus(),
             customModel.getTrainingStartedOn(),
             customModel.getTrainingCompletedOn()));

Returns:

适用于