示例#1
0
        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);
        }
示例#2
0
        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);
        }