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); }
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)); }
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); }
// 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); }
// 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)); }