static async Task <OcrTxt> ocrFromBMP(SoftwareBitmap bmp, OcrEngine engine) { var ret = new OcrTxt(); var result = await engine.RecognizeAsync(bmp); var list = new List <textLine>(); foreach (var tmp in result.Lines) { foreach (var word in tmp.Words) { bool flag = false; for (var i = 0; i < list.Count; i++) { var t = list[i]; var y1 = Math.Abs(t.Rect.Y - word.BoundingRect.Y); if (word.BoundingRect.Height - y1 > ((double)word.BoundingRect.Height) * 0.5) { var width = word.BoundingRect.Width / word.Text.Length; var x1 = (t.Rect.X + t.Rect.Width) - (word.BoundingRect.X - width); if (x1 >= 0 && x1 < width) { t.Text += word.Text; t.Rect = word.BoundingRect; list[i] = t; flag = true; } } } if (!flag) { textLine t; t.Text = word.Text; t.Rect = word.BoundingRect; list.Add(t); } } } foreach (var tmp in list) { ret.Custom += tmp.Text + "\n"; } foreach (var tmp in result.Lines) { foreach (var word in tmp.Words) { ret.Original += word.Text; } ret.Original += "\n"; } return(ret); }
static List <ISBN> findISBN(OcrTxt str) { var ret = new List <ISBN>(); var r = findISBN(str.Original); if (r.Count > 0) { ret.AddRange(r); } r = findISBN(str.Custom); if (r.Count > 0) { ret.AddRange(r); } return(ret); }