原标题:LEADTOOLS OCR文字识别教程:处理识别结果

根据下面的步骤来创建和运行一个程序用来展示如何使用OCR识别一个图片然后得到识别结果。

1. 打开Visual Studio

2. 在菜单中选择 文件-> 新建-> 项目

3. 在新建项目对话框中,模板选择" Visual C#",然后选择 Windows窗体应用程序。

4. 在名称栏输入这个项目的名称:" OcrTutorial3",然后选择确定,当然如果需要的话可以重新指定一个目录来存放这个项目。

5. 在“ 解决方案资源管理器”窗口,右键点击“引用”,然后在弹出菜单中选择“添加引用”。在弹出的引用管理器对话框中,选择“框架”然后选择“浏览(B)”按钮,定位到LEADTOOLS安装目录:

" \Bin\DotNet4\Win32" 然后选择如下几个DLL:

Leadtools.dll

Leadtools.Drawing.dll

Leadtools.Codecs.dll

Leadtools.Controls.WinForms.dll

Leadtools.Forms.dll

Leadtools.Forms.DocumentWriters.dll

Leadtools.Forms.Ocr.dll

Leadtools.Forms.Ocr.Advantage.dll

Leadtools.Codecs.Bmp.dll

Leadtools.Codecs.Cmp.dll

Leadtools.Codecs.Tif.dll

Leadtools.Codecs.Fax.dll

注意: Leadtools.Codecs.*.dll这种引用是根据支持的图像格式命名的,例如BMP、TIF、FAX、JPG等,请根据您的需要添加不同的格式支持。

6. 切换到Form1的代码视图,然后添加如下代码到文件的最前面,如果已经有了using代码的话请添加到已有代码后:

using Leadtools; using Leadtools.Codecs; using Leadtools.Drawing; using Leadtools.Controls; using Leadtools.Forms; using Leadtools.Forms.Ocr; using Leadtools.Forms.DocumentWriters;

7. 在Form1的构造函数中添加如下代码:

// 请将这两个字段替换为你得到的License文件路径和Developer Key string licenseFilePath = @"你的License文件路径"; string developerKey = "你的DeveloperKey"; RasterSupport.SetLicense(licenseFilePath, developerKey);

8. 在Form1类中添加如下的私有变量:

// Image viewer private ImageViewer _imageViewer; // OCR 引擎private IOcrEngine _ocrEngine; // OCR 页面private IOcrPage _ocrPage; // 识别结果 (带有字符位置信息) private IOcrZoneCharacters _zoneCharacters;

9. 重写Form1的 事件,然后添加如下代码:

protected override void (EventArgs e) { // 将Image Viewer添加到Form1中_imageViewer = newImageViewer(); _imageViewer.Dock = DockStyle.Fill; Controls.Add(_imageViewer); _imageViewer.BringToFront(); // 显示图片原始大小_imageViewer.UseDpi = true; // 添加鼠标左键拖动图片ImageViewerPanZoomInteractiveMode panZoomMode = newImageViewerPanZoomInteractiveMode(); panZoomMode.MouseButtons = MouseButtons.Left; _imageViewer.InteractiveModes.Add(panZoomMode); // 为右键添加括选功能ImageViewerRubberBandInteractiveMode rubbBandMode = newImageViewerRubberBandInteractiveMode(); rubbBandMode.MouseButtons = MouseButtons.Right; // 追加一个事件到括选结束,这样能够在结束时识别括选内容rubbBandMode.RubberBandCompleted += rubbBandMode_RubberBandCompleted; _imageViewer.InteractiveModes.Add(rubbBandMode); // 初始化OCR引擎_ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false); // 启动引擎_ocrEngine.Startup(null, null, null, @"D:\Program Files\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime"); // 启用中文、英文识别_ocrEngine.LanguageManager.EnableLanguages(new string[] { "zh-Hans", "en" }); // 使用示例图片创建一个页面string fileName = @"..\..\ocr1.jpg"; RasterImage rasterImage = _ocrEngine.RasterCodecsInstance.Load(fileName, 1); _ocrPage = _ocrEngine.CreatePage(rasterImage, OcrImageSharingMode.AutoDispose); // 在Viewer中显示这个图片_imageViewer.Image = _ocrPage.GetRasterImage(); Text = "鼠标左键拖拽图片, CTRL+左键可以缩放, 右键选择识别区域"; // 添加PostRender事件,用来绘制识别括选区域_imageViewer.PostRender += _imageViewer_PostRender; base.(e); }

10. 重写Form1的OnFormClosed方法,然后添加如下代码:

protected override void OnFormClosed(FormClosedEventArgs e) { // 销毁页面_ocrPage.Dispose(); // 释放引擎_ocrEngine.Dispose(); base.OnFormClosed(e); }

11. 添加如下代码实现括选区域识别功能:

private void rubbBandMode_RubberBandCompleted(object sender, ImageViewerRubberBandEventArgs e) { // 使用已经绘制好的区域// 先移除所有识别区域_ocrPage.Zones.Clear(); // 添加一个新的区域,绘制的矩形区域是控件的坐标,我们需要将这个坐标转换为图片坐标LeadRect bounds = LeadRect.FromLTRB(e.Points[0].X, e.Points[0].Y, e.Points[1].X, e.Points[1].Y); bounds = _imageViewer.ConvertRect(null, ImageViewerCoordinateType.Control, ImageViewerCoordinateType.Image, bounds); // 使用这个坐标来创建一个识别区域OcrZone ocrZone = new OcrZone(); ocrZone.ZoneType = OcrZoneType.Text; ocrZone.Bounds = new LogicalRectangle(bounds); _ocrPage.Zones.Add(ocrZone); // 进行识别,获取文字_ocrPage.Recognize(null); // 取得识别结果IOcrPageCharacters pageCharacters = _ocrPage.GetRecognizedCharacters(); _zoneCharacters = pageCharacters[0]; // 刷新Viewer来绘制识别字符_imageViewer.Refresh(); // 使用Messagebox来显示识别结果string text = _ocrPage.GetText(0); if (string.IsNullOrEmpty(text)) text = "[无文字]"; MessageBox.Show(this, text); }

12. 最后,添加如下代码,将识别的文字绘制在图片上:

private void _imageViewer_PostRender(object sender, ImageViewerRenderEventArgs e) { // 绘制识别结果,如果有的话if (_zoneCharacters == null) return; Graphics graphics = e.PaintEventArgs.Graphics; using (Brush characterBrush = new SolidBrush(Color.FromArgb(128, Color.Black))) { foreach (OcrCharacter character in _zoneCharacters) { // 取得字符位置LogicalRectangle characterBounds = character.Bounds; // 字符位置是一个逻辑区域, 有可能在单位像素外,将它转换为像素LeadRect bounds = characterBounds.ToRectangle(_ocrPage.DpiX, _ocrPage.DpiY); // 转换这个位置到Viewer上// 注意,这个Demo并没有旋转图片所以你需要使用四个点来定位bounds = _imageViewer.ConvertRect(null, ImageViewerCoordinateType.Image, ImageViewerCoordinateType.Control, bounds); // 高亮字符区域graphics.FillRectangle(characterBrush, bounds.X, bounds.Y, bounds.Width, bounds.Height); graphics.DrawRectangle(Pens.Black, bounds.X, bounds.Y, bounds.Width - 1, bounds.Height - 1); // 最后绘制字符graphics.DrawString(new string(new char[] { character.Code }), this.Font, Brushes.White, bounds.X, bounds.Y); } } }

13. 保存然后编译执行。

责任编辑:

leadtools ocr java_LEADTOOLS OCR文字识别教程:处理识别结果相关推荐

  1. leadtools ocr java_LEADTOOLS OCR文字识别教程:开始文字识别

    在前面的教程中,我们教会大家如何追加页面和在页面上追加删除区域,这一次我们正式开始文字识别. 1. 打开Visual Studio,然后打开上一讲中我们创建的项目OCRTurorial2. 2. 从工 ...

  2. 完全离线的OCR图片转文字识别工具Umi-OCR

    OCR图片转文字识别软件,完全离线.截屏/批量导入图片,支持多国语言.合并段落.竖排文字.可排除水印区域,提取干净的文本.基于 PaddleOCR . 免费:本项目所有代码开源,完全免费. 方便:解压 ...

  3. 易语言大漠插件模块制作设置字库及Ocr识别字符串游戏识别文字

    识字找字是大漠插件最核心的东西,通过识别游戏画面中的文字返回坐标完成鼠标点击等动作,识字必须先制作字库,设置字库,本课演示了如何设置字库,如何调用字库,封装的大漠命令有:SetDict.UseDict ...

  4. python调用百度接口实现ocr识别_Python调用百度OCR实现图片文字识别的示例代码

    百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...

  5. python 百度ocr安装_Python调用百度OCR实现图片文字识别的示例代码

    百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法: 首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下: 创建后会获得如下信息: APP_ID = '* ...

  6. python图片转文字easyocr_Easy Screen OCR for Mac(文字识别转换工具)

    原标题:Easy Screen OCR for Mac(文字识别转换工具) Easy Screen OCR for Mac(文字识别转换工具)带给大家!Easy Screen OCR文字识别转换工具可 ...

  7. 基于OCR识别引擎的识别表格文字并将结果以Excel电子表格的形式原样导出的Android客户端代码

    基于OCR识别引擎的识别表格文字并将结果以Excel电子表格的形式原样导出的Android客户端代码 界面截图 实现思路 对表格图片进行灰度化和二值化处理 对图像进行倾斜矫正 进行表格线提取 进行表格 ...

  8. OCR手写文字怎么识别

    在日常生活工作里面,有的时候发现自己幸苦写完的资料文件,经过打印后源文件不知不觉丢了,还有的快递公司每天花费时间录入运单,效率简直低的可怕,那怎么去解决这一问题呢,今天小编就来教大家一招. 第一步:打 ...

  9. 基于 ocr 的屏幕文字识别 开源

    基于 ocr 的屏幕文字识别.运行时截屏区域,进行文字识别. 下图为运行截图,识别网页内文字并输出到软件edit控件 源码下载 点击打开链接 或git https://github.com/34471 ...

最新文章

  1. 学习LINUX的几点注意事项
  2. Windows多线程编程总结
  3. (三)SSO之CAS框架单点退出,退出到CAS登录界面
  4. 用pkg给手机装linux,pkg-config的使用方法
  5. c rsa java私钥_RSA,JAVA私钥加密,C#公钥解密
  6. Python编程系列教程第13讲——隐藏数据和封装
  7. 钉钉日志范文100篇_钉钉的日志模板怎么修改 钉钉日志模板修改教程
  8. javascript 动态创建表格:新增、删除行和单元格
  9. Rabbitmq消息过期时间设置
  10. 最佳牛围栏题解 二分答案
  11. 重置电脑的网络配置 -- 解决防火墙问题导致的应用启动失败
  12. selenium模拟登陆LinkedIn
  13. Java从服务器下载文件到本地
  14. VCC,GND,VSS,VDD的理解
  15. janusgraph 引入 java,从头开始学JanusGraph 0.4
  16. USB计算机连接只能充电,手机连接不上电脑只显示充电怎么办
  17. 《高性能MySQL》读书笔记(1~6章)
  18. gimp 抠图_GIMP 的基本操作
  19. 网站监控程序uptime-kuma,宝塔面板搭建 ,TCP/HTTP监控
  20. websocket连接不上

热门文章

  1. mysql的查询每个月的1号_MySql查询当年1-12月数据
  2. 《Adobe After Effects CS4经典教程》——1.3 创建合成图像和组织图层
  3. 你的孩子长啥样,用 BabyGAN 预测试试
  4. pc手机html5,HTML5 手机与PC的浏览器
  5. 余额宝转出到银行卡要手续费吗「解答」
  6. PLSQL 连接远程数据库,ORA-12638: 身份证明检索失败的解决方法
  7. cctv视频不能看了
  8. 【饭谈】公司里偷偷学习专业技术,到底是否合理?
  9. 笔记本电脑排名前十 电脑排行榜笔记本前十名2023
  10. 许庆祥:神秘的“台湾股神”总有满手好牌