C#版Tesseract库的使用技巧

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

C#版本源码下载地址:https://github.com/charlesw/tesseract

其实在vs中可以直接用NuGet工具进行下载:

打开nuget,搜索tesseract,点安装即可。

源码是vs2015编译的,需要安装vs2015以上版本。

打开项目后如:

我们再添加一个winform项目,画界面如:

实现点击“选择需要识别的图片”,打开一张图片,调用算法并显示结果。比较简单。源码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Tesseract;

namespace TesseractDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //选图片并调用ocr识别方法
        private void btnRec_Click(object sender, EventArgs e)
        {
            //openFileDialog1.Filter = "";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                var imgPath = openFileDialog1.FileName;
                pictureBox1.Image=Image.FromFile(imgPath);
                string strResult = ImageToText(imgPath);
                if (string.IsNullOrEmpty(strResult))
                {
                    txtResult.Text = "无法识别";
                }
                else
                {
                    txtResult.Text = strResult;
                }
            }
        }
        //调用tesseract实现OCR识别
        public string ImageToText(string imgPath)
        {
            using (var engine = new TesseractEngine("tessdata", "eng", EngineMode.Default))
            {
                using (var img = Pix.LoadFromFile(imgPath))
                {
                    using (var page = engine.Process(img))
                    {
                        return page.GetText();
                    }
                }
            }
        }
    }
}

有一点要注意的是,tesseract的识别语言包要自己下载后包含到项目里面,并设置为始终复制,或者直接把这个文件包放到运行程序目录(bin\debug)下:

eng是英文字符的意思,要识别其他语言字符,需要自己下载:

Tesseract hasunicode (UTF-8) support, and canrecognize more than 100 languages"out of the box".

这个库支持100种语言的识别

字库下载地址为:https://github.com/tesseract-ocr/tessdata

用OpencvSharp先降噪再调OCR识别:

//用opencv进行降噪处理再ocr识别
        private void button3_Click(object sender, EventArgs e)
        {
            //从网上读取一张图片
            string imgUrl = "https://service.cheshi.com/user/validate/validatev3.php";
            MemoryStream ms = ReadImgFromWeb(imgUrl);
            Image img = Image.FromStream(ms);
            pictureBox1.Image = img;

            //降噪
            Mat simg = Mat.FromStream(ms, ImreadModes.Grayscale);
            Cv2.ImShow("Input Image", simg);
            //阈值操作 阈值参数可以用一些可视化工具来调试得到
            Mat ThresholdImg = simg.Threshold(29, 255, ThresholdTypes.Binary);
            Cv2.ImShow("Threshold", ThresholdImg);
            Cv2.ImWrite("d:\\img.png", ThresholdImg);

            textBox1.Text= ImageToText("d:\\img.png");
        }

        /// <summary>
        /// 从网上读取一张图片
        /// </summary>
        /// <param name="Url"></param>
        public MemoryStream ReadImgFromWeb(string Url)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
            request.Credentials = CredentialCache.DefaultCredentials; // 添加授权证书
            request.UserAgent = "Microsoft Internet Explorer";
            WebResponse response = request.GetResponse();
            Stream s = response.GetResponseStream();
            byte[] data = new byte[1024];
            int length = 0;
            MemoryStream ms = new MemoryStream();
            while ((length = s.Read(data, 0, data.Length)) > 0)
            {
                ms.Write(data, 0, length);
            }
            ms.Seek(0, SeekOrigin.Begin);
            //pictureBox1.Image = Image.FromStream(ms);
            return ms;
        }

请自行用NuGet程序下载opencvsharp3.0库,参考https://www.cnblogs.com/tuyile006/p/10819570.html

另外专门有篇文章介绍中文识别:Tesseract-OCR识别中文与训练字库实例

以上就是C#版Tesseract库的使用技巧的详细内容,更多关于C# Tesseract库的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#如何读取Txt大数据并更新到数据库详解

    环境 Sqlserver 2016 .net 4.5.2 目前测试数据1300万 大约3-4分钟.(限制一次读取条数 和 线程数是 要节省服务器资源,如果调太大服务器其它应用可能就跑不了了), SqlServerDBHelper为数据库帮助类.没有什么特别的处理. 配置连接串时记录把连接池开起来 另外.以下代码中每次写都创建了连接 .之前试过一个连接反复用. 130次大约有20多次 数据库会出问题.并且需要的时间是7-8分钟 左右. 配置文件: xxx.json [ { /*连接字符串 */ "

  • C# 操作 access 数据库的实例代码

    随笔: (1)   命名空间    using System.Data.OleDb; (2)   连接字符串 private staticstring connStr = @"Provider= Microsoft.Ace.OLEDB.12.0;Data Source = d:\login.accdb"; 注意: a.DataSource = 数据库存放的路径(这里数据库放到了D盘目录下)              b. 2003版本的Access数据库链接字符串: privatest

  • C#连接Oracle数据库字符串(引入DLL)的方式

    需求: 从一台Oracle数据库获取数据,本以为是很简单的事情,直接将原来的SqlClient换成OracleClient调用,结果远没自己想的简单.要么安装Oracle客户端,要么安装PLSQL.网上这方面搜索后,太多的文章,还要不停的去测试.最后找个引入外部类库的方式.这个DLL其实是Oracle为C#专门提供的,在它的官方也可以下载到(不过找起来很麻烦). 这里我就把这个方案和dll分享给大家. 点击这里下载 DEMO示例 using Oracle.ManagedDataAccess.Cl

  • 详解Python 调用C# dll库最简方法

    1.为什么要跨平台编程?双平台编程或多平台编程,只是为提供更好开发更兼容的解决方案的一种手段,编程时服务于产品和客户的,也是因地制宜. 先安装python所需的库clr ,我这里已经安装了,可以去对应的根目录下查看有没有pythonnet这个文件夹. 2.首先要特别注意,你安装使用的Python的版本是对应x64还是x32的,python只能调用对应64位或32位的dll,可以右击启动项目的属性,修改并重新生成. 特别注意:启动项目和你的目标库不一样,前者输出类型是windows应用或是控制台,

  • C#连接到sql server2008数据库的实例代码

    废话不多说了,直接给大家贴代码了,具体代码如下所示: namespace MyFirstApp { class Program { static void Main(string[] args) { SqlConnection conn = null; SqlCommand comm = null; SqlDataReader sdreader = null; try { string ConStr = "server=192.168.1.110;uid=sa;pwd=woaifr0828;da

  • C# WPF使用AForge类库操作USB摄像头拍照并保存

    项目中用到 USB 摄像头,需要根据情况进行图像抓拍,查了半天资料,比较多的是使用 WPFMediaKit 和 AForge . 但是由于项目要求不显示 USB 摄像头拍摄的画面,最终确定使用 AForge 解决. 下面用一个测试程序记录一下. 一.无预览拍照 首先建立一个 WPF 项目,我的就叫 AForgeTest,你们随意就好: 然后在 NuGet 包管理器中安装 AForge 库: 我只安装了图中打勾的几个库,这个根据自己项目需要安装就好. 不过用 USB 摄像头拍照必须安装: AFor

  • C#版Tesseract库的使用技巧

    上一篇介绍了Tesseract库的使用(OCR库Tesseract初探),文末提到了Tesseract是用c/c++开发的,也有C#的开源版本,本篇介绍一下如何使用C#版的Tesseract. C#版本源码下载地址:https://github.com/charlesw/tesseract 其实在vs中可以直接用NuGet工具进行下载: 打开nuget,搜索tesseract,点安装即可. 源码是vs2015编译的,需要安装vs2015以上版本. 打开项目后如: 我们再添加一个winform项目

  • Python通过Tesseract库实现文字识别

    机器视觉 从Google的无人驾驶汽车到可以识别假钞的自动售卖机,机器视觉一直都是一个应用广泛且具有深远的影响和雄伟的愿景的领域. 这里我们将重点介绍机器视觉的一个分支:文字识别.介绍如何用一些Python库来识别和使用在线图片中的文字. 我们可以很轻松的阅读图片里的文字,但是机器阅读这些图片就会非常困难,利用这种人类用户可以正常读取但是大多数存贮器没法读取的图片,这时验证码(CAPTCHA)就出现了.验证码读取的难易程序也大不相同. 将图像翻译成文字一般被称为光学文字识别(Optical Ch

  • python Selenium 库的使用技巧

    Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera等.这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上.测试系统功能--创建回归测试检验软件功能和用户需求.支持自动录制动作和自动生成 .Net.Java.Perl等不同语言的测试脚本. -- 百度百科 首先下载驱

  • Python自动安装第三方库的小技巧(pip使用详解)

    大家好,我是才哥. 最近周末也加班了,害- 有刚接触python的粉丝同学在运行此前<>的完整代码遇到以下问题,然后- 好吧,今天我们就专门介绍一下Python安装第三方库的一些小技巧,其中还包含自动安装的方法哈. 1. pip在线安装 在cmd命令行模式下,通过pip install 第三方库名称的形式,直接进行第三方库的安装. 我们以安装plotly为例,安装表现如下: pip install plotly 如果需要安装的第三方库已经存在,我们执行安装命令的时候会提示其存在且展示库安装的位

  • 关于windos10环境下编译python3版pjsua库的问题

    环境: windows10_x64 python3.9_x64 pjsua-2.10 vs2015 pjsua编译参考这里: https://www.jb51.net/article/225189.htm pjsua默认绑定的python版本是python 2.4,使用起来有诸多限制,希望可以使用python3调用pjsua的库实现软电话的基础功能. 编译python_pjsua 1.替换代码 官方给的代码不支持python3,需要使用第三方代码: https://github.com/mgwi

  • python使用Tesseract库识别验证

    一.Tesseract简介 Tesseract是一个OCR库(OCR是英文Optical Character Recognition的缩写),它用来对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程,Tesseract是目前公认最优秀,识别相对精准的OCR库. 二.Tesseract的使用 1.下载并安装Tesseract:点击下载 2.在Windows系统下设置环境变量: #根据下载安装文件的路径配置环境变量 set TESSDATA_PREFIX F:\Tesserac

  • go语言中的Carbon库时间处理技巧

    go语言之Carbon库 carbon是一个时间扩展库,它提供了易于使用接口. 简单示例: package main import ( "fmt" "github.com/uniplaces/carbon" "time" ) func main() { // 打印当前时间 now :=carbon.Now().DateTimeString() fmt.Println("本地时间:", now) Japantoday, _ :=

  • Mysql 建库建表技巧分享

    一.两表之间若有关联,你是否还在用主键进行关联? 比如现在有2张表,一张新闻栏目表,一张新闻表,现在两张表需要进行关联,我想大多数人的做法肯定是在新闻表里建一个新闻栏目id,然后把新闻栏目表里的主键ID(自增)写到这个字段里,通过这样进行两表关联. 如果你是这样做的,赶紧改掉这个习惯吧.也许你会问为什么,栏目id是主键啊,又是自增的,为什么这样操作不行?原因其实很简单,栏目我们会增加,也会删除,删除就会造成主键id之间会有断号的情况,由于主键设置为自增,也就是说你之前删掉的栏目,再进行添加,id

  • DVBBS7.1 SQL版 跨库漏洞

    漏洞测试环境:DVBBS7.1 SQL 受影响文件 admin/admin.asp ..... 漏洞利用 (select @@version)>0 获得Windows的版本号 and user_name()='dbo' 判断当前系统的连接用户是不是sa (select user_name())>0 爆当前系统的连接用户 (select db_name())>0 得到当前连接的数据库 (select IS_MEMBER('db_owner')) --查询数据库当前用户权限 (select 

  • intel原装主版没有驱动的查找技巧

    http://www.intel.com/ 官方 然后--进入Support & Downloads 左边有选择语言-下拉-选择 简体中文 然后进入后,http://downloadfinder.intel.com/scripts-df-external/Support_Intel.aspx?iid=CNhome+hdr_nav2_download&lang=zho 可以看左边的菜单,选择你的主板型号就可以了

随机推荐