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

    效果如下:

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

  • 相关阅读:
    Struts2拦截器
    Struts2执行过程
    struts.xml属性extends的执行顺序和剖析源码
    Struts2请求流程图
    8.29 脏检查笔记
    transactionManager 以及datasource type解析
    Mybatis
    Interceptor
    ongl(示例3-6 多值类型的数据处理)
    ongl(原始类型和包装类型)
  • 原文地址:https://www.cnblogs.com/miskis/p/7606014.html
Copyright © 2020-2023  润新知