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