Beispiel #1
0
        public void RecognizeTextTest()
        {
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                HttpMockServer.Initialize(this.GetType().FullName, "RecognizeTextTest");

                string imageUrl = GetTestImageUrl("signage.jpg");

                using (IComputerVisionClient client = GetComputerVisionClient(HttpMockServer.CreateInstance()))
                {
                    RecognizeTextHeaders headers = client.RecognizeTextAsync(imageUrl, TextRecognitionMode.Printed).Result;

                    Assert.NotNull(headers.OperationLocation);

                    TextRecognitionResult recognitionResult = GetRecognitionResultWithPolling(client, headers.OperationLocation);

                    Assert.NotNull(recognitionResult);

                    Assert.Equal(
                        new string[] { "520", "WEST", "Seattle" },
                        recognitionResult.Lines.Select(line => line.Text));
                    Assert.Equal(
                        new string[] { "520", "WEST", "Seattle" },
                        recognitionResult.Lines.SelectMany(line => line.Words).Select(word => word.Text));
                    Assert.Equal(3, recognitionResult.Lines.Count);
                }
            }
        }
        // Recognize text from a remote image
        private async Task <TextOperationResult> ExtractRemoteTextAsync(ComputerVisionClient computerVision, string imageUrl)
        {
            if (!Uri.IsWellFormedUriString(imageUrl, UriKind.Absolute))
            {
                Debug.WriteLine("\nInvalid remoteImageUrl:\n{0} \n", imageUrl);
                return(null);
            }

            // Start the async process to recognize the text
            RecognizeTextHeaders textHeaders = await computerVision.RecognizeTextAsync(imageUrl, textRecognitionMode);

            // Retrieve the URI where the recognized text will be
            // stored from the Operation-Location header
            string operationId = textHeaders.OperationLocation.Substring(textHeaders.OperationLocation.Length - numberOfCharsInOperationId);

            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)
            {
                Debug.WriteLine("Server status: {0}, waiting {1} seconds...", result.Status, i);
                await Task.Delay(1000);

                result = await computerVision.GetTextOperationResultAsync(operationId);
            }

            // Return the results
            return(result);
        }
Beispiel #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();
         }
     }
 }
        public async Task <IHttpActionResult> Post()
        {
            //HttpRequestMessage request = this.Request;

            ComputerVisionClient computerVision = new ComputerVisionClient(
                new ApiKeyServiceClientCredentials(subscriptionKey),
                new System.Net.Http.DelegatingHandler[] { });

            // Specify the Azure region
            computerVision.Endpoint = "https://eastus2.api.cognitive.microsoft.com";

            RecognizeTextHeaders analysis = null;

            //using (Stream imageStream = await request.Content.ReadAsStreamAsync())
            //{
            //    analysis = await computerVision.RecognizeTextInStreamAsync(imageStream, TextRecognitionMode.Printed);
            //}

            analysis = await computerVision.RecognizeTextAsync("https://amazonasatual.com.br/wp-content/uploads/2018/08/CNH-falsa-Manaus.jpeg", TextRecognitionMode.Printed);

            string operation = analysis.OperationLocation.Split('/').GetValue(analysis.OperationLocation.Split('/').Length - 1).ToString();

            Thread.Sleep(5000);

            TextOperationResult result = await computerVision.GetTextOperationResultAsync(operation);

            Cadastro cadastro = new Cadastro();

            cadastro.Nome = result.RecognitionResult.Lines[5].Text;
            cadastro.RG   = result.RecognitionResult.Lines[7].Text;
            cadastro.CPF  = result.RecognitionResult.Lines[11].Text;

            {
                DateTime resultado;

                if (DateTime.TryParse(result.RecognitionResult.Lines[12].Text, out resultado))
                {
                    cadastro.DtNascimento = resultado;
                }
            }

            cadastro.NomeMae = result.RecognitionResult.Lines[19].Text;

            {
                DateTime resultado;

                if (DateTime.TryParse(result.RecognitionResult.Lines[29].Text, out resultado))
                {
                    cadastro.Validade = resultado;
                }
            }

            return(Ok(cadastro));
        }
Beispiel #5
0
        private static async Task ExtractRemoteHandTextAsync(ComputerVisionClient computerVision, string imageUrl)
        {
            if (!Uri.IsWellFormedUriString(imageUrl, UriKind.Absolute))
            {
                Console.WriteLine("\nInvalid image:\n{0} \n", imageUrl);
                return;
            }
            RecognizeTextHeaders textHeaders = await computerVision.RecognizeTextAsync(imageUrl, TextRecognitionMode.Handwritten);

            await GetTextAsync(computerVision, textHeaders.OperationLocation);
        }
Beispiel #6
0
        // Read text from a remote image
        private static async Task RecognizeTextFromUrlAsync(ComputerVisionClient computerVision, string imageUrl, int numberOfCharsInOperationId, TextRecognitionMode textRecognitionMode)
        {
            if (!Uri.IsWellFormedUriString(imageUrl, UriKind.Absolute))
            {
                Console.WriteLine("\nInvalid remote image url:\n{0} \n", imageUrl);
                return;
            }

            // Start the async process to read the text
            RecognizeTextHeaders textHeaders = await computerVision.RecognizeTextAsync(imageUrl, textRecognitionMode);

            await GetTextAsync(computerVision, textHeaders.OperationLocation, numberOfCharsInOperationId);
        }
Beispiel #7
0
        // Recognize text from a remote image
        private static async Task ExtractRemoteTextAsync(
            ComputerVisionClient computerVision, string imageUrl)
        {
            if (!Uri.IsWellFormedUriString(imageUrl, UriKind.Absolute))
            {
                Console.WriteLine(
                    "\nInvalid remoteImageUrl:\n{0} \n", imageUrl);
                return;
            }

            // Start the async process to recognize the text
            RecognizeTextHeaders textHeaders =
                await computerVision.RecognizeTextAsync(
                    imageUrl, textRecognitionMode);

            await GetTextAsync(computerVision, textHeaders.OperationLocation);
        }
        public static async Task <TextOperationResult> RecognizeTextAsync(string imageUrl, TextRecognitionMode textRecognitionMode, bool detectOrientation = true)
        {
            RecognizeTextHeaders textHeaders = await client.RecognizeTextAsync(imageUrl, textRecognitionMode);

            return(await GetTextRecognitionResultAsync(client, textHeaders.OperationLocation));
        }