public async Task ManageCustomModelsAsync() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; string trainingFileUrl = TestEnvironment.BlobContainerSasUrl; FormTrainingClient client = new FormTrainingClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); // Check number of models in the FormRecognizer account, and the maximum number of models that can be stored. AccountProperties accountProperties = await client.GetAccountPropertiesAsync(); Console.WriteLine($"Account has {accountProperties.CustomModelCount} models."); Console.WriteLine($"It can have at most {accountProperties.CustomModelLimit} models."); // List the models currently stored in the account. AsyncPageable <CustomFormModelInfo> models = client.GetCustomModelsAsync(); await foreach (CustomFormModelInfo modelInfo in models) { Console.WriteLine($"Custom Model Info:"); Console.WriteLine($" Model Id: {modelInfo.ModelId}"); Console.WriteLine($" Model Status: {modelInfo.Status}"); Console.WriteLine($" Requested on: {modelInfo.RequestedOn}"); Console.WriteLine($" Completed on: : {modelInfo.CompletedOn}"); } // Create a new model to store in the account CustomFormModel model = await client.StartTrainingAsync(new Uri(trainingFileUrl)).WaitForCompletionAsync(); // Get the model that was just created CustomFormModel modelCopy = await client.GetCustomModelAsync(model.ModelId); Console.WriteLine($"Custom Model {modelCopy.ModelId} recognizes the following form types:"); foreach (CustomFormSubmodel submodel in modelCopy.Submodels) { Console.WriteLine($"Submodel Form Type: {submodel.FormType}"); foreach (CustomFormModelField field in submodel.Fields.Values) { Console.Write($" FieldName: {field.Name}"); if (field.Label != null) { Console.Write($", FieldLabel: {field.Label}"); } Console.WriteLine(""); } } // Delete the model from the account. await client.DeleteModelAsync(model.ModelId); }
public async Task GetCustomModelsAsync() { var fakeReadyModelId = Guid.NewGuid().ToString(); var fakeInvalidModelId = Guid.NewGuid().ToString(); var mockClient = new Mock <FormTrainingClient>(); var page = Page <CustomFormModelInfo> .FromValues(new[] { FormRecognizerModelFactory.CustomFormModelInfo(fakeReadyModelId, DateTimeOffset.Parse("2020-01-01T00:00:00Z"), DateTimeOffset.Parse("2020-01-01T00:00:30Z"), CustomFormModelStatus.Ready), FormRecognizerModelFactory.CustomFormModelInfo(fakeInvalidModelId, DateTimeOffset.Parse("2020-03-15T00:00:00Z"), DateTimeOffset.Parse("2020-03-15T00:00:10Z"), CustomFormModelStatus.Invalid) }, null, Mock.Of <Response>()); mockClient.Setup(c => c.GetCustomModelsAsync(It.IsAny <CancellationToken>())) .Returns(AsyncPageable <CustomFormModelInfo> .FromPages(new[] { page })); FormTrainingClient client = mockClient.Object; // Get the IDs of all invalid models. var invalidModelIds = new List <string>(); await foreach (CustomFormModelInfo modelInfo in client.GetCustomModelsAsync()) { if (modelInfo.Status == CustomFormModelStatus.Invalid) { invalidModelIds.Add(modelInfo.ModelId); } } Assert.AreEqual(1, invalidModelIds.Count); Assert.AreEqual(fakeInvalidModelId, invalidModelIds[0]); }
public async Task ManageCustomModelsAsync() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; #region Snippet:FormRecognizerSampleManageCustomModelsAsync FormTrainingClient client = new FormTrainingClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); // Check number of models in the FormRecognizer account, and the maximum number of models that can be stored. AccountProperties accountProperties = await client.GetAccountPropertiesAsync(); Console.WriteLine($"Account has {accountProperties.CustomModelCount} models."); Console.WriteLine($"It can have at most {accountProperties.CustomModelLimit} models."); // List the models currently stored in the account. AsyncPageable <CustomFormModelInfo> models = client.GetCustomModelsAsync(); await foreach (CustomFormModelInfo modelInfo in models) { Console.WriteLine($"Custom Model Info:"); Console.WriteLine($" Model Id: {modelInfo.ModelId}"); Console.WriteLine($" Model name: {modelInfo.ModelName}"); Console.WriteLine($" Is composed model: {modelInfo.Properties.IsComposedModel}"); Console.WriteLine($" Model Status: {modelInfo.Status}"); Console.WriteLine($" Training model started on: {modelInfo.TrainingStartedOn}"); Console.WriteLine($" Training model completed on: : {modelInfo.TrainingCompletedOn}"); } // Create a new model to store in the account #if SNIPPET Uri trainingFileUri = < trainingFileUri >; #else Uri trainingFileUri = new Uri(TestEnvironment.BlobContainerSasUrlV2); #endif TrainingOperation operation = await client.StartTrainingAsync(trainingFileUri, useTrainingLabels : false, "My new model"); Response <CustomFormModel> operationResponse = await operation.WaitForCompletionAsync(); CustomFormModel model = operationResponse.Value; // Get the model that was just created CustomFormModel modelCopy = await client.GetCustomModelAsync(model.ModelId); Console.WriteLine($"Custom Model with Id {modelCopy.ModelId} and name {modelCopy.ModelName} recognizes the following form types:"); foreach (CustomFormSubmodel submodel in modelCopy.Submodels) { Console.WriteLine($"Submodel Form Type: {submodel.FormType}"); foreach (CustomFormModelField field in submodel.Fields.Values) { Console.Write($" FieldName: {field.Name}"); if (field.Label != null) { Console.Write($", FieldLabel: {field.Label}"); } Console.WriteLine(""); } } // Delete the model from the account. await client.DeleteModelAsync(model.ModelId); #endregion }