C# 调用Tesseract实现OCR
介绍
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的更多相关文章
- python下以api形式调用tesseract识别图片验证码
一.背景 之前在博文中介绍在python中如何调用tesseract ocr引擎,当时主要介绍了shell模式,shell模式需要安装tesseract程序,并且效率相对略低. 今天介绍api形式的调 ...
- [转]Tesseract-OCR (Tesseract的OCR引擎最先由HP实验室于1985年开始研发)
光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印行 ...
- 解决ecplise+phthon2.7中使用pytesser和tesseract进行ocr,出现报错的问题
网上很多使用ecplise+phthon2.7中使用pytesser或者tesseract进行OCR网站验证码的案例,但配置起来实在让人崩溃. 通用步骤:1.下载了pytesser_v0.0.1: 2 ...
- 基于Tesseract的OCR识别小程序
一.背景 先说下开发背景,今年有次搬家找房子(2020了应该叫去年了),发现每天都要对着各种租房广告打很多电话.(当然网上也找了实地也找),每次基本都是对着墙面看电话号码然后拨打,次数一多就感觉非常麻 ...
- 使用Python基于OpenCV和Tesseract的OCR
OCR OCR(Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形 ...
- 使用C#版Tesseract库
上一篇介绍了Tesseract库的使用(OCR库Tesseract初探),文末提到了Tesseract是用c/c++开发的,也有C#的开源版本,本篇介绍一下如何使用C#版的Tesseract. C#版 ...
- Tesseract Ocr引擎
Tesseract Ocr引擎 1.Tesseract介绍 tesseract 是一个google支持的开源ocr项目,其项目地址:https://github.com/tesseract-ocr/t ...
- 开源图片文字识别引擎——Tesseract OCR
Tessseract为一款开源.免费的OCR引擎,能够支持中文十分难得.虽然其识别效果不是很理想,但是对于要求不高的中小型项目来说,已经足够用了. 文字识别可应用于许多领域,如阅读.翻译.文献资料的检 ...
- Python下Tesseract Ocr引擎及安装介绍
1.Tesseract介绍 tesseract 是一个google支持的开源ocr项目,其项目地址:https://github.com/tesseract-ocr/tesseract,目前最新的源码 ...
随机推荐
- ES6--闭包数组i的值与var的作用域理解
var a = [];for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 10 变 ...
- ajax 请求问题
1.ajax 请求锁定页面加载 function agree(id,index){ var yj=$("#taskTableId tr[data-index='"+index+&q ...
- go web framework gin group api 设计
假如让你来设计group api, 你该怎么设计呢? group api 和普通api的区别在于前缀不同,如果group api的版本为v1.0 那么相对应的url为/v1.0/xxx, 如果是普通a ...
- 基于Verilog的串口发送程序
一.模块框图及基本思路 tx_bps_module:波特率时钟产生模块 tx_control_module:串口发送的核心控制模块 tx_module:前两个模块的组合 control_module: ...
- python day21 ——面向对像-反射 getattr,内置方法
一.反射:用字符串数据类型的变量名来访问这个变量的值 上代码^_^ # class Student: # ROLE = 'STUDENT' # @classmethod # def check_cou ...
- 判断手机是安卓还是ios
let ORZ = function() { if(!(this instanceof ORZ)) { return new ORZ; }}ORZ.prototype = { // 判断用户手机是An ...
- SpringBoot的学习【2.分析HelloWorld的依赖】
1.分析引入的父类项目 引入的父类如下. 点击进去发现又引入了一个父类 点击进去发现是spring的版本控制和相应的依赖. so~这就是springboot的终极大包.想用springboot开发的时 ...
- JAVA基础部分复习(七、JAVA枚举类型使用)
/** * java中的枚举 * 枚举(enum),是指一个经过排序的.被打包成一个单一实体的项列表.一个枚举的实例可以使用枚举项列表中任意单一项的值. * 枚举在各个语言当中都有着广泛的应用,通常用 ...
- POJ 1284:Primitive Roots(素数原根的个数)
Primitive Roots Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5709 Accepted: 3261 Descr ...
- Centos6.8 编译安装Apache2.4
cetos6.8源码安装apache2.4.29 apache官网:http://httpd.apache.org 具体安装步骤: 1 配置安装apache的基础环境2 下载想要安装的版本源码包3 解 ...