Example #1
0
        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);
        }
Example #2
0
        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;
        }
Example #3
0
 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();
         }
     }
 }