Example #1
0
        private void LoadFromJsonRegion(JArray regions, OcrResult result)
        {
            var regionId = 1;

            foreach (var jRegion in regions)
            {
                var region = new OcrRegion()
                {
                    Id       = regionId,
                    Code     = OcrLoaderHelper.GetRegionCode(regionId),
                    Location = ParseBox(jRegion, result),
                    Words    = result.Words
                };
                var lineId = 1;
                foreach (var jLine in jRegion["lines"])
                {
                    var wordId = 1;
                    foreach (var jWord in jLine["words"])
                    {
                        var word = ParseWord(jWord, result);
                        result.Words.Add(word);
                        wordId++;
                    }
                    lineId++;
                }
                result.Regions.Add(region);
                regionId++;
            }
        }
        public OcrResult DoParse(string jsonResult, ImageInfo info)
        {
            var words  = new List <OcrWord>();
            var json   = JObject.Parse(jsonResult);
            var lang   = default(string);
            var result = new OcrResult()
            {
                Info = info, TextAngle = 0
            };
            var mainRegion = new OcrRegion()
            {
                Id    = 1,
                Code  = OcrLoaderHelper.GetRegionCode(1),
                Words = words
            };
            var annotations = json["responses"].Value <JArray>()[0]["textAnnotations"].Value <JArray>();
            var wordId      = 1;

            foreach (var ann in annotations)
            {
                if (string.IsNullOrWhiteSpace(lang))
                {
                    lang = ann["locale"].Value <string>();
                }
                if (wordId != 1)
                {
                    var word = new OcrWord()
                    {
                        Id       = wordId,
                        Location = GetLocation(ann, info),
                        Text     = ann["description"].Value <string>()
                    };
                    words.Add(word);
                }
                wordId++;
            }
            mainRegion.Location        = new OcrLocation();
            mainRegion.Location.X      = mainRegion.Words.Min(i => i.Location.X);
            mainRegion.Location.Width  = mainRegion.Words.Max(i => i.Location.XBound) - mainRegion.Location.X;
            mainRegion.Location.Y      = mainRegion.Words.Min(i => i.Location.Y);
            mainRegion.Location.Height = mainRegion.Words.Max(i => i.Location.YBound) - mainRegion.Location.Y;
            result.Regions.Add(mainRegion);
            result.Words = words;
            return(result);
        }