找回密码
 立即注册

QQ登录

只需一步,快速开始

13573156105

注册会员

6

主题

20

帖子

190

积分

注册会员

积分
190

[已处理] OCR识别问题

13573156105
注册会员   /  发表于:2019-5-5 17:13  /   查看:3903  /  回复:3
            try
            {
                // 初始化OCR引擎
                _ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Professional, false);
                // 启动OCR引擎
                _ocrEngine.Startup(null, null, null, @"D:\LEADTOOLS 19\Bin\Common\OcrProfessionalRuntime");
                // 创建文档
                _ocrDocument = _ocrEngine.DocumentManager.CreateDocument();
                //将语言设置为中文简体,中文繁体为"zh-Hant"
                _ocrEngine.LanguageManager.EnableLanguages(new string[] { "zh-Hans" });//zh-Hans   en


                MessageBox.Show("OCR引擎成功启动");
                string fileName = Path.Combine(Application.StartupPath, @"D:\01.jpg");


                //将包含中文字符的文件添加至OCR文档
                IOcrPage page = _ocrDocument.Pages.AddPage(fileName, null);
                int pageCount = _ocrDocument.Pages.Count;
                // // 显示此页面的相关信息   
                string message = string.Format(
                   "共{0}页\n最后添加的页面大小 = {1} * {2}\n分辨率 = {3} * {4}\n每个像素的位数 = {5}\n",
                   pageCount,
                   page.Width, page.Height,
                   page.DpiX, page.DpiY,
                   page.BitsPerPixel);
                MessageBox.Show(message);
                // 识别所有页面
                // 注意,我们不需要调用AutoZone,引擎会检查页面是否被分区,若无,则会自动分区
                _ocrDocument.Pages.Recognize(null);
                // 将结果保存为Word文件
                string wordFileName = Path.Combine(Application.StartupPath, @"D:\Result.docx");
                _ocrDocument.Save(wordFileName, DocumentFormat.Docx, null);
                // 显示我们刚刚保存的word文件
                System.Diagnostics.Process.Start(wordFileName);


                // 释放此文档
                _ocrDocument.Dispose();
                // 关闭OCR引擎
                _ocrEngine.Shutdown();
                MessageBox.Show("OCR引擎关闭");


            }
            catch (Exception ex)//如果出现错误则执行错误处理语句
            {
                MessageBox.Show(ex.ToString(), "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }


问题1:    我编译程序后,怎么在不安装LEADTOOLS 19的情况下使用OCR识别,这个路径要求必须安装LEADTOOLS 19
                _ocrEngine.Startup(null, null, null, @"D:\LEADTOOLS 19\Bin\Common\OcrProfessionalRuntime");

问题2:图片识别内容,如何保存为字符串,现在是把识别结果放在DOC文件中,我不想每次把识别结果放在DOC文件中。

谢谢版主指教!!


3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-5-6 09:09:55
沙发
1. 如你的代码中写的
  1. ocrEngine.Startup(null, null, null, @"D:\LEADTOOLS 19\Bin\Common\OcrProfessionalRuntime");
复制代码

所以实际上只要OcrProfessionalRuntime这个文件夹中的内容复制到编译路径下面即可,当然参数中的路径也需要用相对路径转换为绝对路径。

2. 这个实际上提供了多种方式
    1. 获取原始数据
https://www.leadtools.com/help/l ... izedcharacters.html
    2.保存为XML
https://www.leadtools.com/help/l ... cument-savexml.html
    3.直接获取文本
https://www.leadtools.com/help/l ... crpage-gettext.html
回复 使用道具 举报
13573156105
注册会员   /  发表于:2019-5-6 16:08:42
板凳
Richard.Ma 发表于 2019-5-6 09:09
1. 如你的代码中写的

所以实际上只要OcrProfessionalRuntime这个文件夹中的内容复制到编译路径下面即可 ...


非常感谢版主指教,现在碰到一个新问题,就是在图片上拉框识别的时候,如果图片非常狭小,低于一个汉字的宽度,会报错,请问这个宽度和高度的限制是多少?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-5-6 18:31:29
地板
只看错误截图没法确认问题,建议你把你的代码项目打包放上来,还有你说的图片,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部