Пример #1
0
        public string[] GetOCR(string jsonStrokes, string url, string key, string language)
        {
            var configuration = new ConfigurationBuilder().AddJsonFile("config.json").Build();

            if (configuration != null)
            {
                string endpoint        = configuration["endpoint"];
                string subscriptionKey = key; //configuration["key"];

                string lang = language;       //configuration["language"];
                jsonStrokes = jsonStrokes.Replace("\"language\": \"en-US\"", "\"language\": \"" + lang + "\"");

                string requestData = jsonStrokes;
                string apiAddress  = url;

                using (HttpClient client = new HttpClient {
                    BaseAddress = new Uri(apiAddress)
                })
                {
                    System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);

                    var content = new StringContent(requestData, Encoding.UTF8, "application/json");
                    var res     = client.PutAsync(endpoint, content).Result;
                    if (res.IsSuccessStatusCode)
                    {
                        string result = res.Content.ReadAsStringAsync().Result;

                        InkRecognitionRoot root = JSONProcessor.ParseInkRecognizerResponse(result);

                        if (root != null)
                        {
                            List <InkLine> lstLines = root.GetLines().ToList();
                            string         tekst    = string.Empty;
                            foreach (InkLine line in lstLines)
                            {
                                tekst += tekst + line.RecognizedText;
                            }
                            string[] words = lstLines.Select(q => q.RecognizedText).ToArray();
                            return(words);
                        }
                        else
                        {
                            throw new Exception("Can't parse response");
                        }
                    }
                    else
                    {
                        throw new Exception($"ErrorCode: {res.StatusCode}");
                    }
                }
            }
            else
            {
                throw new Exception("Can't parse config file");
            }
        }
        public async Task <HttpStatusCode> RecognizeAsync()
        {
            try
            {
                var requestJson = JSONProcessor.CreateInkRecognitionRequest(strokes.AsReadOnly());
                var response    = await httpManager.PutAsync(requestJson);

                var statusCode = response.StatusCode;
                if (statusCode == HttpStatusCode.OK)
                {
                    var responseJson = await response.Content.ReadAsStringAsync();

                    root = JSONProcessor.ParseInkRecognizerResponse(responseJson);
                }
                return(statusCode);
            }
            catch (Exception e)
            {
                throw;
            }
        }