【示例教程】如何用leadtools创建一个OCR驱动的计算器

日常工作和业务中会有一些图片中的计算公式等需要计算,这个代码片断显示了LEADTOOLS OCR可以用来检测、识别和执行简单的数学命题,如“2 + 2”。

Leadtools 19总套包下载>>>

日常工作和业务中会有一些图片中的计算公式等需要计算,这个代码片断显示了LEADTOOLS OCR可以用来检测、识别和执行简单的数学命题,如“2 + 2”。

static void SimpleOCRCalculator(string filePath)      {         RasterCodecs codecs = new RasterCodecs();         RasterImage image = codecs.Load(filePath);         string[] calculations;         using (IOcrEngine engine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false))         {            engine.Startup(null, null, null, null);            IOcrPage page = engine.CreatePage(image, OcrImageSharingMode.None);            page.AutoZone(null);            page.Recognize(null);            calculations = new string[page.Zones.Count];            for (int i = 0; i < page.Zones.Count; i++)            {               calculations[i] = page.GetText(i);            }            engine.Shutdown();         }         Dictionary<string, Action<double, double>> operands = new Dictionary<string, Action<double, double>>();         operands.Add("+", new Action<double, double>(delegate(double a, double b) { double ans = a + b; Console.WriteLine("{0} + {1} = {2}", a, b, ans); }));         operands.Add("-", new Action<double, double>(delegate(double a, double b) { double ans = a - b; Console.WriteLine("{0} - {1} = {2}", a, b, ans); }));         operands.Add("x", new Action<double, double>(delegate(double a, double b) { double ans = a * b; Console.WriteLine("{0} * {1} = {2}", a, b, ans); }));         operands.Add("/", new Action<double, double>(delegate(double a, double b) { double ans = a / b; Console.WriteLine("{0} / {1} = {2}", a, b, ans); }));         for (int i = 0; i < calculations.Length; i++)         {            string equation = Regex.Replace(calculations[i], @"n|r| ", "");            string[] ops = new string[] { "+", "-", "x", "/" };            for (int j = 0; j < ops.Length; j++)            {               int index = equation.IndexOf(ops[j]);               if (index > 0 && index < equation.Length)               {                  string op1 = equation.Substring(0, index);                  string op2 = equation.Substring(index + 1);                  double arg1 = double.Parse(op1);                  double arg2 = double.Parse(op2);                  operands[ops[j]](arg1, arg2);                  break;               }            }         }         codecs.Dispose();         image.Dispose();      }

 

用于测试的图像如下。

resource

试用、下载、了解更多产品信息请点击“咨询在线客服”     


 

标签:扫描识别字符识别OCR

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年1月25日
下一篇 2018年1月25日

相关推荐

发表回复

登录后才能评论