最近实验课要做一个图片文字识别,需求是Winform中有一个图片,进行框选后,识别框选中的内容,老师提示说去找OCR的开源库,所以我就找到了IronOCR

IronOCR:The C# OCR Library : Iron OCR

IronOcr makes it easy to read text from images in your .net apps & websites.

1.Read text and barcodes from scanned images & PDFs

2.Supports multiple international languages

3.Output as plain text or structured data

框选

进行识别前,必须框选出识别区域,所以就要先去实现框选,思路就是通过MouseUpMouseMoveMouseDown三个事件去绘制一个矩形,类似于拖选

    private bool _mouseIsDown = false;private Rectangle _selectArea = Rectangle.Empty;private void pictureBox_MouseUp(object sender, MouseEventArgs e){// 修正Width和Height可能为负数的问题if (_selectArea.Width < 0){_selectArea.Width = -_selectArea.Width;_selectArea.X -= _selectArea.Width;}if (_selectArea.Height < 0){_selectArea.Height = -_selectArea.Height;_selectArea.Y -= _selectArea.Height;}Cursor.Clip = Rectangle.Empty;_mouseIsDown = false;DrawRectangle();_selectArea = Rectangle.Empty;}private void pictureBox_MouseMove(object sender, MouseEventArgs e){if (_mouseIsDown)ResizeToRectangle(e.Location);}/// <summary>  /// 初始化选择框  /// </summary>  /// <param name="startPoint"></param>  private void DrawStart(Point startPoint){//指定工作区为整个控件  Cursor.Clip = RectangleToScreen(new Rectangle(pictureBox.Location.X, pictureBox.Location.Y,pictureBox.Width, pictureBox.Height));_selectArea = new Rectangle(startPoint.X + pictureBox.Location.X,startPoint.Y + pictureBox.Location.Y,1,1);}/// <summary>  /// 在鼠标移动的时改变选择框的大小  /// </summary>  /// <param name="p">鼠标的位置</param>  private void ResizeToRectangle(Point p){_selectArea.Width = p.X + pictureBox.Location.X - _selectArea.Left;_selectArea.Height = p.Y + pictureBox.Location.Y - _selectArea.Top;DrawRectangle();}/// <summary>  /// 绘制选择框  /// </summary>  private void DrawRectangle(){pictureBox.Refresh();var rect = RectangleToScreen(_selectArea);ControlPaint.DrawReversibleFrame(rect, Color.White, FrameStyle.Thick);}

图片文字识别

IronOCR的使用很简单,官网给出的教程:

    using IronOcr;//..var Ocr = new AutoOcr();var Result = Ocr.Read(@"C:\path\to\image.png");Console.WriteLine(Result.Text);

所以接下来只需要将框选区域进行截图,然后交给OCR识别即可

    private readonly AutoOcr _ocr;public MainForm(){InitializeComponent();_ocr = new AutoOcr();// 强制初始化OCRvar img = new Bitmap(1,1);_ocr.Read(img);}// 框选的代码......./// <summary>/// 识别框选的单词/句子/// </summary>/// <returns>识别的结果</returns>private string SelectText(){var rect = RectangleToScreen(_selectArea);var img = new Bitmap(rect.Width, rect.Height);var graphics = Graphics.FromImage(img);graphics.CompositingQuality = CompositingQuality.HighQuality;graphics.CopyFromScreen(rect.Left, rect.Top, 0, 0,new Size(rect.Width, rect.Height));var result = _ocr.Read(img);Debug.WriteLine(result.Text);return result.Text;}

最后在MouseUp事件的时候调用SelectText即可,然后拿着识别出来的文字去干啥都行

项目源码:OCRDemo

使用IronOCR识别图片文字相关推荐

  1. python 图片识别_python识别图片文字

    滑稽研究所 python识别图片文字 哈喽,大家好呀,我是滑稽君.大家在写论文时可能经常碰到无法复制文字的文章.明明找到了需要的内容却无法直接复制使用,这让我们十分苦恼.那么本期滑稽君就告诉大家如何使 ...

  2. 这两款好用的识别图片文字的软件app值得你们收藏

    日常生活中,大家都会保留很多照片.比如老师上课的PPT.上班办公的文档.随手截取的网页图片等等.这些有时候是因为我们来不及记录,而拍照作备用的,后期还需要我们去手写抄录.其实这效率未免太慢了,如果可以 ...

  3. python学习使用easyocr识别图片文字

      测试了C#中调用PaddleOCRSharp和PaddleSharp进行图片文字识别,由于正在学习python,也就同时学习使用python进行图片文字识别的方法.   百度关键词"py ...

  4. C#测试调用PaddleSharp模块识别图片文字

      PaddleSharp是PaddleInference C API的C#封装版本,支持在 Windows(x64).NVIDIA GPU和Linux(Ubuntu-20.04 x64)中使用.Pa ...

  5. 在线识别图片文字,分享识别技巧

    在这个信息科技发展的时代,必须要有过硬的知识才能跟的上时代的步伐.就像是同一个职位,我们必须要有自己独特的工作技巧或者是技能,才能更好的胜任.像是办公室文员,每天要接触的是很多文件,还有将文件转换成文 ...

  6. 批量识别图片文字并存为Excel,几行Python轻松实现!

    今天给大家分享批量识别图片的方法. 一.背景 也许你还记得,前不久复旦大学一博士生写了130行Python代码,批量识别核酸截图内容的故事.当时还被人民日报公众号报道出来,夸赞用所学贡献青春力量! 其 ...

  7. 微信怎么识别图片文字

    微信怎么识别图片文字?微信拍照就能识别图片上的文字,抛弃那些APP解放手机的好方法你知道吗?相信很多人还不知道,那小编今天就将方法分享给大家吧. 迅捷文字识别属性:微信小程序 优点:相机模式:对着文字 ...

  8. 如何免费识别图片文字?这几个软件彻底解放你的双手

    有朋友在寻找可以识别图片中文字的软件吗?日常生活中我们常有将图片中的文字提取出来的需要,如果一个个手打会十分浪费时间,还很容易出错,效率很低,远没有靠软件实现来得方便和高效.那么,可以识别图片文字的软 ...

  9. C#-调用OCR组件识别图片文字

    C#调用OCR组件识别图片文字 图片识别的技术到几天已经很成熟了,只是相关的资料很少,为了方便在此汇总一下(C#实现),方便需要的朋友查阅,也给自己做个记号. 图片识别的用途:很多人用它去破解网站的验 ...

最新文章

  1. java web的ssh框架_JavaWeb_(SSH论坛)_二、框架整合
  2. Android仿QQ侧滑菜单
  3. 请解释和、|和||的区别?
  4. PCL:全程详解 VS2010+PCL配置
  5. 【渝粤题库】陕西师范大学200851 微机实用技术
  6. C# 8.0 的新特性概览和讲解
  7. 触发器使用教程和命名规范
  8. React vs Angular,哪种学习成本更低?
  9. RHEL 6.3的yum不小心被删除了。如何恢复?
  10. Beetlsql自学笔记
  11. 2019重庆大学计算机学院研究生,【计算机】计算机学院举行2019级研究生年级大会...
  12. 通过wireshark抓包对nmap一些原理分析
  13. 使用单线程还是多线程的问题
  14. 输入n个整数,输出其中的最大值
  15. 金融业预警| 黑客如何大摇大摆把钱从银行划出去?
  16. 华为自带邮箱下载_华为用户进来看!微信气泡主题的设置方法,仅华为用户拥有!...
  17. 一日一技python安装_一日一技:快速实现Python 命令行参数
  18. ​ios11自带邮件添加新的邮箱账号
  19. MySQL GIS功能介绍
  20. XSS学习笔记(未完)

热门文章

  1. Untitled Diagram绘画E-R图
  2. 搭建自己的ebook网站
  3. @Target注解详解
  4. canvas制作时钟
  5. WPF 控件专题 Lable 控件详解
  6. 基于用户投票的排名算法
  7. TypeScript 基础学习之泛型和 extends 关键字
  8. 在暗影精灵游戏本上安装 Centos7
  9. js 访问剪贴板粘贴
  10. java实现英尺转换为米