C#使用Tesseract

C#使用Tesseract

前言

上篇文章讲述了 Tesseract-orc的安装和使用,这片文章讲一讲在net平台上面如何使用 Tesseract-orc 没有那么复杂的安装教程。

我在使用的时间还是基于Framework ,在网上下载了好多dll文件,浪费我的cdsn积分,最后还是没有成功,最终自己摸索到方法了。
在这里插入图片描述

什么是tesseract?

Tesseract 最初由惠普实验室支持,用于电子版文字识别,1996年被移植到Windows上,1998年进行了C++化,在2005年Tesseract由惠普公司宣布开源。 2006年到现在,由Google公司维护开发。

Net5中的使用

在’Netget’包中直接引用Tesseract,就会生成leptonica-1.80.0.dll'tesseract41.dll

一般项目适合orc一起使用的

在这里插入图片描述
问题:

解决办法
安装运行时Emgu.CV.runtime.windows

han
主要依靠 直接返回文字。

 //调用tesseract实现OCR识别
        public static string ImageToText(string imgPath)
        {
            using (var engine = new TesseractEngine("tessdata", "chi_sim", EngineMode.Default))
            {
                using (var img = Pix.LoadFromFile(imgPath))
                {
                    using (var page = engine.Process(img))
                    {
                        return page.GetText();
                    }
                }
            }
        }

完整代码:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog of = new OpenFileDialog();
            of.Title = "请选择图片";
            if (of.ShowDialog() == DialogResult.OK)
            {
                string file = of.FileName;
                Image img = Image.FromFile(file);
                pictureBox1.Image = img;
            }
            Bitmap bitmap = (Bitmap)this.pictureBox1.Image;
            var path = $"{ DateTime.Now.ToString("yyyyMM")}.jpg";
            bitmap.Save(path, System.Drawing.Imaging.ImageFormat.Bmp);
           
            Image<Bgr, Byte> imageSource = new Image<Bgr, byte>(path);
            Image<Gray, Byte> imageGrayscale = imageSource.Convert<Gray, Byte>();
            imageGrayscale = randon(imageGrayscale);
            imageThreshold = imageGrayscale.ThresholdBinary(new Gray(100), new Gray(255));
            this.pictureBox2.Image = imageThreshold.ToBitmap();
            this.pictureBox2.Image.Save(path);
            //识别照片
            this.label1.Text = ImageToText(path);

        }
        Image<Gray, Byte> imageThreshold;


        //调用tesseract实现OCR识别
        public static string ImageToText(string imgPath)
        {
            using (var engine = new TesseractEngine("tessdata", "chi_sim", EngineMode.Default))
            {
                using (var img = Pix.LoadFromFile(imgPath))
                {
                    using (var page = engine.Process(img))
                    {
                        return page.GetText();
                    }
                }
            }
        }


        /// <summary>
        /// 旋转校正
        /// </summary>
        /// <param name="imageInput"></param>
        /// <returns></returns>
        private Image<Gray, Byte> randon(Image<Gray, Byte> imageInput)//图像投影旋转法倾斜校正子函数定义
        {
            int nwidth = imageInput.Width;
            int nheight = imageInput.Height;
            int sum;
            int SumOfCha;
            int SumOfChatemp = 0;
            int[] sumhang = new int[nheight];
            Image<Gray, Byte> resultImage = imageInput;
            Image<Gray, Byte> ImrotaImage;
            //20度范围内的调整
            for (int ang = -20; ang < 20; ang = ang + 1)
            {
                ImrotaImage = imageInput.Rotate(ang, new Gray(1));
                for (int i = 0; i < nheight; i++)
                {
                    sum = 0;
                    for (int j = 0; j < nwidth; j++)
                    {
                        sum += ImrotaImage.Data[i, j, 0];
                    }
                    sumhang[i] = sum;
                }
                SumOfCha = 0;
                for (int k = 0; k < nheight - 1; k++)
                {
                    SumOfCha = SumOfCha + (Math.Abs(sumhang[k] - sumhang[k + 1]));
                }
                if (SumOfCha > SumOfChatemp)
                {
                    resultImage = ImrotaImage;
                    SumOfChatemp = SumOfCha;
                }
            }
            return resultImage;
        }




    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值