public static async Task VisionAnalyticsAsync(TraceWriter log, string fileURLWithSAS, ImageBatchResult imageBatchResult) { ComputerVisionClient computerVision = new ComputerVisionClient(new ApiKeyServiceClientCredentials(VisionSubscriptionKey), new DelegatingHandler[] { }); computerVision.Endpoint = ComputerVisionEndpoint; string imageURLwithoutSAS = fileURLWithSAS.Substring(0, fileURLWithSAS.IndexOf('?')); CognitiveImageAnalysis cogniiveImageAnalysis = new CognitiveImageAnalysis { imageURL = imageURLwithoutSAS }; CognitiveImageTextAnalysis cognitiveImageTextAnalysis = new CognitiveImageTextAnalysis { imageURL = imageURLwithoutSAS }; var t1 = AnalyzeRemoteAsync(computerVision, fileURLWithSAS, cogniiveImageAnalysis); var t2 = ExtractRemoteTextAsync(computerVision, fileURLWithSAS, log, cognitiveImageTextAnalysis); await Task.WhenAll(t1, t2); imageBatchResult.imageAnalyses.Add(cogniiveImageAnalysis); imageBatchResult.imageTextAnalyses.Add(cognitiveImageTextAnalysis); }
private static async Task GetTextAsync(ComputerVisionClient computerVision, string operationLocation, TraceWriter log, CognitiveImageTextAnalysis cognitiveImageTextAnalysis) { string operationId = operationLocation.Substring(operationLocation.Length - numberOfCharsInOperationId); log.Info("\nCalling GetHandwritingRecognitionOperationResultAsync()"); TextOperationResult result = await computerVision.GetTextOperationResultAsync(operationId); // Wait for the operation to complete int i = 0; int maxRetries = 10; while ((result.Status == TextOperationStatusCodes.Running || result.Status == TextOperationStatusCodes.NotStarted) && i++ < maxRetries) { log.Info("Server status: " + result.Status + ", waiting " + i + " seconds..."); await Task.Delay(1000); result = await computerVision.GetTextOperationResultAsync(operationId); } cognitiveImageTextAnalysis.textOperationResult = result; }
private static async Task ExtractRemoteTextAsync(ComputerVisionClient computerVision, string fileURLWithSAS, TraceWriter log, CognitiveImageTextAnalysis cognitiveImageTextAnalysis) { try { if (ValidateImage(2, fileURLWithSAS)) { RecognizeTextHeaders textHeaders = await computerVision.RecognizeTextAsync(fileURLWithSAS, textRecognitionMode); await GetTextAsync(computerVision, textHeaders.OperationLocation, log, cognitiveImageTextAnalysis); } else { cognitiveImageTextAnalysis.error = "Image Validation Failed for ImageTextAnalytics API "; } } catch (Exception e) { if (e is ComputerVisionErrorException) { ComputerVisionErrorException ex = (ComputerVisionErrorException)e; cognitiveImageTextAnalysis.error = ex.Message.ToString() + " due to " + ex.Response.Content; } else { cognitiveImageTextAnalysis.error = e.Message.ToString(); } } }