欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#版Tesseract庫的使用技巧

 更新時間:2021年05月25日 08:24:26   作者:小y  
本文給大家分享C#版Tesseract庫的使用技巧,在這里大家需要注意一下tesseract的識別語言包要自己下載后包含到項目里面,并設置為始終復制,或者直接把這個文件包放到運行程序目錄(bin\debug)下的,具體實現(xiàn)代碼跟隨小編一起學習下吧

上一篇介紹了Tesseract庫的使用(OCR庫Tesseract初探),文末提到了Tesseract是用c/c++開發(fā)的,也有C#的開源版本,本篇介紹一下如何使用C#版的Tesseract。

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

其實在vs中可以直接用NuGet工具進行下載:

打開nuget,搜索tesseract,點安裝即可。

源碼是vs2015編譯的,需要安裝vs2015以上版本。

打開項目后如:

我們再添加一個winform項目,畫界面如:

實現(xiàn)點擊“選擇需要識別的圖片”,打開一張圖片,調用算法并顯示結果。比較簡單。源碼如下:

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實現(xiàn)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)
        {
            //從網(wǎng)上讀取一張圖片
            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);
            //閾值操作 閾值參數(shù)可以用一些可視化工具來調試得到
            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>
        /// 從網(wǎng)上讀取一張圖片
        /// </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庫的資料請關注腳本之家其它相關文章!

相關文章

  • C#打印日志的方法總結

    C#打印日志的方法總結

    在本篇文章里小編給大家整理了關于C#如何打印日志的技巧總結,需要的朋友們跟著學習下。
    2019-03-03
  • C# 實現(xiàn)特殊字符快速轉碼

    C# 實現(xiàn)特殊字符快速轉碼

    這篇文章主要介紹了C# 實現(xiàn)特殊字符快速轉碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#中API調用的多種方法

    C#中API調用的多種方法

    今天通過本文給大家分享C#中API調用的多種方法,通過API進行解析掃入的二維碼,實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2021-09-09
  • C#實現(xiàn)字符串轉換成字節(jié)數(shù)組的簡單實現(xiàn)方法

    C#實現(xiàn)字符串轉換成字節(jié)數(shù)組的簡單實現(xiàn)方法

    這篇文章主要介紹了C#實現(xiàn)字符串轉換成字節(jié)數(shù)組的簡單實現(xiàn)方法,僅一行代碼即可搞定,非常簡單實用,需要的朋友可以參考下
    2015-05-05
  • C#實現(xiàn)帶搜索功能的ComboBox

    C#實現(xiàn)帶搜索功能的ComboBox

    這篇文章主要為大家詳細介紹了C#如何實現(xiàn)帶搜索功能的ComboBox,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • c#語言使用Unity粒子系統(tǒng)制作手雷爆炸

    c#語言使用Unity粒子系統(tǒng)制作手雷爆炸

    這篇文章主要為大家介紹了Unity的粒子系統(tǒng)由粒子發(fā)射器、粒子動畫器、粒子渲染器組成,通過使用一或兩個紋理多次繪制,創(chuàng)造一個混沌的效果,通過復習粒子系統(tǒng)做一個手雷和實彈投擲現(xiàn)場
    2022-04-04
  • C#調用第三方工具完成FTP操作

    C#調用第三方工具完成FTP操作

    這篇文章介紹了C#調用第三方工具完成FTP操作的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#表達式樹Expression動態(tài)創(chuàng)建表達式

    C#表達式樹Expression動態(tài)創(chuàng)建表達式

    這篇文章介紹了C#表達式樹Expression動態(tài)創(chuàng)建表達式的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • C#中泛型舉例List<T>與DataTable相互轉換

    C#中泛型舉例List<T>與DataTable相互轉換

    這篇文章介紹了C#中泛型舉例List<T>與DataTable相互轉換的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#9.0 新特性簡介

    C#9.0 新特性簡介

    這篇文章主要介紹了C#9.0 新特性簡介,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10

最新評論