【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();
                }
            }
        }

效果如下:

可以看出没有干扰线的识别还是很准确。

原文地址:https://www.cnblogs.com/miskis/p/7606014.html