public override async Task <PerformOcrStringResponse> PerformOcr(CognitiveServicesRequest request) { var cognitiveServicesRestHttpClient = new CognitiveServicesRestHttpClient(); var restHttpResponse = await cognitiveServicesRestHttpClient.GetRestHttpStringResponse(request); var performOcrResponse = new PerformOcrStringResponse { Success = restHttpResponse.Success, ImplementedInModule = restHttpResponse.ImplementedInModule, FailureInformation = restHttpResponse.FailureInformation, // LinesFound = new List<string>(), // WordsFound = new List<PerformOcrWordInstance>(), }; performOcrResponse.LinesFound.Add(CommonFramework.Library.Helpers.JsonHelpers.JsonPrettyPrint(restHttpResponse.RestResponse)); return(performOcrResponse); }
public override async Task <PerformOcrStringResponse> PerformOcr(CognitiveServicesRequest request) { var response = new PerformOcrStringResponse(); try { var apiKeyServiceClientCredentials = new ApiKeyServiceClientCredentials(request.EndPointKey1); var delegatingHandlers = new System.Net.Http.DelegatingHandler[] { }; IComputerVisionClient computerVision = new ComputerVisionClient( credentials: apiKeyServiceClientCredentials, handlers: delegatingHandlers) { Endpoint = request.EndPoint }; var contentString = await computerVision.RecognizePrintedTextInStreamAsync( image : request.ImageStream, detectOrientation : false, language : OcrLanguages.En, cancellationToken : CancellationToken.None); var resultsLinesFound = new List <string>(); var resultsWordsFound = new List <string>(); foreach (OcrRegion region in contentString.Regions) { foreach (OcrLine line in region.Lines) { var words = line.Words.Select(word => word.Text).ToList(); resultsWordsFound.AddRange(words); if (words.Count > 0) { resultsLinesFound.Add(string.Join <string>(" ", words)); } } } var wordGrouping = from word in resultsWordsFound group word by word into g select new { InstanceFound = g.Key, Word = g }; var groupedWordsFound = wordGrouping .Select(item => new PerformOcrWordInstance { Word = item.Word.Key, Instances = item.Word.Count() }); response.LinesFound = resultsLinesFound; response.WordsFound = groupedWordsFound.ToList(); response.Success = true; } catch (Exception e) { response.FailureInformation = e.Message; } return(response); }