【c#】Tesseract-ocr 3.0.2 版本使用实例
简介
光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。OCR技术非常专业,一般多是印刷、打印行业的从业人员使用,可以快速的将纸质资料转换为电子资料。关于中文OCR,目前国内水平较高的有清华文通、汉王、尚书,其产品各有千秋,价格不菲。国外OCR发展较早,像一些大公司,如IBM、微软、HP等,即使没有推出单独的OCR产品,但是他们的研发团队早已掌握核心技术,将OCR功能植入了自身的软件系统。对于我们程序员来说,一般用不到那么高级的,主要在开发中能够集成基本的OCR功能就可以了。
Tesseract概述
Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对Tesseract进行改进、消除Bug、优化工作。Tesseract目前已作为开源项目发布在Google Project(现已托管 github),其项目主页在这里查看,3.0版本已经支持中文OCR,并提供了一个命令行工具。主库地址。
1、引用Tesseract
1.1、创建空的项目解决方案
创建成功后分别创建两个空的项目解决方案文件夹 WinformDemo 跟 TesseractWeb
1.2、winform配置跟源码
创建window窗体应用程序,使用 Nuget 添加 Tesseract ,搜索 tesseract-ocr ,现在最新版本是 3.2.0-alpha4,这里演示使用的是 3.0.2 稳定版 。如下图所示,选择所需要的版本安装即可。
安装完成后再项目中会添加如下两个文件夹
图片上传参考:http://www.cnblogs.com/miskis/p/7607024.html
语言文件下载地址:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files#data-files-for-version-302
我使用的是英语语言包
下载后解压文件找到 tessdata 把它拷贝到你的项目中
后台代码:
private void button1_Click(object sender, EventArgs e) { if (openFileDialog.ShowDialog() == DialogResult.OK) { //PictureBox控件显示图片 Image.Load(openFileDialog.FileName); //获取用户选择文件的后缀名 string extension = Path.GetExtension(openFileDialog.FileName); //声明允许的后缀名 string[] str = new string[] { ".jpg", ".png" }; if (!str.Contains(extension)) { MessageBox.Show("仅能上传jpg,png格式的图片!"); } else { //识别图片文字 var img = new Bitmap(openFileDialog.FileName); var ocr = new TesseractEngine("./tessdata", "eng", EngineMode.TesseractAndCube); var page = ocr.Process(img); label1.Text = page.GetText(); } } }
效果如下:
可以看出没有干扰线的识别还是很准确。