介绍

Tesseract是一个基于Apache2.0协议开源的跨平台ocr引擎,支持多种语言的识别,在Windows和Linux上都有良好的支持.

创建工程

创建一个C#的控制台工程

添加System.Drawing引用

因为在操作过程中我们会需要读取图片,所以这里需要这个



nuget里添加Tesseract引用



准备资源

这里共4个文件,2个目录

首先下载这个eng.traineddata

度盘下载 密码: 5xfs

在工程目录里,建立一个tessdata文件夹(切记:文件夹一定要叫这名字!)放进去,文件属性设置"如果较新则复制"



另外建立个images,放以下3张测试图片(你可以直接在这右键下载):

1.png

2.png

3.png

如果你在VS里看不到这3张图,那么你可能需要把它们添加到项目里:



记得把3张图片设为"如果较新则复制"

编辑代码

using引用:

using System;
using System.Drawing;
using Tesseract;

Main:

static void Main(string[] args)
{
var tess = new TesseractEngine($"{AppDomain.CurrentDomain.BaseDirectory}/", "eng", EngineMode.Default);//构建对象并加载训练好的数据
Console.WriteLine($"Tesseract版本:{tess.Version}");
tess.DefaultPageSegMode = PageSegMode.SingleLine;//设为单行识别
{//图片1
var page = tess.Process((Bitmap)Image.FromFile("images/1.png"));//处理图片
Console.WriteLine($"识别到的内容:{page.GetText()}");//输出识别内容
page.Dispose();
}
{//图片2
var page = tess.Process((Bitmap)Image.FromFile("images/2.png"));//处理图片
Console.WriteLine($"识别到的内容:{page.GetText()}");//输出识别内容
page.Dispose();
}
{//图片3
var page = tess.Process((Bitmap)Image.FromFile("images/3.png"));//处理图片
Console.WriteLine($"识别到的内容:{page.GetText()}");//输出识别内容
page.Dispose();
}
tess.Dispose();
Console.ReadKey(true);
}

运行试试

结束

可以看到大部分字符都是能够识别的,不过有个别数字识别错误了,我们需要训练自己的数据来提高正确率.

关于如何训练,可参考我的另一篇文章:

https://www.cnblogs.com/DragonStart/p/9418053.html

另外我把文中的例子发布到了gitee,可以从这里获取到整个工程:

https://gitee.com/o70078/tesseract_sample.git

C# 调用Tesseract实现OCR的更多相关文章

  1. python下以api形式调用tesseract识别图片验证码

    一.背景 之前在博文中介绍在python中如何调用tesseract ocr引擎,当时主要介绍了shell模式,shell模式需要安装tesseract程序,并且效率相对略低. 今天介绍api形式的调 ...

  2. [转]Tesseract-OCR (Tesseract的OCR引擎最先由HP实验室于1985年开始研发)

    光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印行 ...

  3. 解决ecplise+phthon2.7中使用pytesser和tesseract进行ocr,出现报错的问题

    网上很多使用ecplise+phthon2.7中使用pytesser或者tesseract进行OCR网站验证码的案例,但配置起来实在让人崩溃. 通用步骤:1.下载了pytesser_v0.0.1: 2 ...

  4. 基于Tesseract的OCR识别小程序

    一.背景 先说下开发背景,今年有次搬家找房子(2020了应该叫去年了),发现每天都要对着各种租房广告打很多电话.(当然网上也找了实地也找),每次基本都是对着墙面看电话号码然后拨打,次数一多就感觉非常麻 ...

  5. 使用Python基于OpenCV和Tesseract的OCR

    OCR OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形 ...

  6. 使用C#版Tesseract库

    上一篇介绍了Tesseract库的使用(OCR库Tesseract初探),文末提到了Tesseract是用c/c++开发的,也有C#的开源版本,本篇介绍一下如何使用C#版的Tesseract. C#版 ...

  7. Tesseract Ocr引擎

    Tesseract Ocr引擎 1.Tesseract介绍 tesseract 是一个google支持的开源ocr项目,其项目地址:https://github.com/tesseract-ocr/t ...

  8. 开源图片文字识别引擎——Tesseract OCR

    Tessseract为一款开源.免费的OCR引擎,能够支持中文十分难得.虽然其识别效果不是很理想,但是对于要求不高的中小型项目来说,已经足够用了. 文字识别可应用于许多领域,如阅读.翻译.文献资料的检 ...

  9. Python下Tesseract Ocr引擎及安装介绍

    1.Tesseract介绍 tesseract 是一个google支持的开源ocr项目,其项目地址:https://github.com/tesseract-ocr/tesseract,目前最新的源码 ...

随机推荐

  1. zabbix3.4.7页面中文乱码

    无须重启任何服务,刷新页面即可.

  2. coursera-斯坦福-机器学习-吴恩达-笔记week1

    1 Introduction 1.1 概念:一个程序被认为能从经验E中学习,解决任务 T,达到性能度量值P,当且仅当, 有了经验E后,经过P评判, 程序在处理 T 时的性能有所提升. 1.2 机器学习 ...

  3. Oracle获取当前年、月、日的方法

    Oracle获取当前年.月.日的方法 Oracle 获取当前年.月.日 1.//oracle中extract()函数从oracle 9i中引入,用于从一个date或者interval类型中截取到特定的 ...

  4. [BZOJ1406]密码箱

    Problem 给你1个数n,求出0 ≤ x < n,并且x ^ 2 % n = 1 Solution x ^ 2 - 1 = kn,(x - 1) * (x + 1) = kn 所以枚举n的约 ...

  5. powerdesigner(数据设计工具)

    https://jingyan.baidu.com/album/4f7d57120468c91a2019279f.html?picindex=1  (摘抄 原网地址)

  6. 使用GraphHttpClient调用Microsoft Graph接口 - POST

    博客地址:http://blog.csdn.net/FoxDave 本篇接上一讲,我们继续看如何通过GraphHttpClient创建一个Office 365的组,需要使用POST请求. 为结果添加按 ...

  7. 51单片机小项目电路TwoLed电路图

    1.复位电路没有开关,不可控 在电容旁边并联一个开关和10k的电阻支路 2.晶振电路引用的外部晶振, 理论上XTAL2悬空,XTAL1接外部震荡信号 //ProjeceName:TwoLed //wr ...

  8. CSS 实现单、多行文本溢出显示省略号(…)

    如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览. 实现方法: overflow: hidden; te ...

  9. django之model多表操作

    一对多表之间的查询: class userInfo(models.Model): name = models.CharField(max_length=50) password = models.Ch ...

  10. Power BI Desktop 新年快乐!

    新年快乐 2018年是Power BI 多产的一年!更新发布的功能就超过150多个,真是相当的强大! 为了庆祝这一成功的一年,Power BI官方团队制作了一个有趣的视频,展示他们对2018年最喜欢的 ...