【.NET】使用OpenCV和tesseract-ocr引擎实现识别图片文字内容

前言:没啥写的,直接看下文:

Tesseract OCR引擎下载

各个系统环境版本下载地址:

https://tesseract-ocr.github.io/tessdoc/Installation.html

Windows系统下载地址:

https://github.com/UB-Mannheim/tesseract/wiki

如果感兴趣看内部实现源码,可以参考Tesseract OCR引擎开源源码:

https://github.com/tesseract-ocr/tesseract

安装引擎,我用的Windows64位版本,安装期间,需要根据需要识别的内容,选择需要的语言包。默认只有英文。例如我选择简体中文。

570859f96ebc4e3a65cf4e839b01b47c.png

安装完成,在安装路径下,可以看到traineddata,这个是训练数据集,前面代码语言类型,代码里面需要根据语言类型来指定需要识别的语言。

0a8b3c0ed683faafe8e0fe01a703a706.png

创建控制台程序,引用OpenCV的两个包:

Emgu.CV 和 Emgu.CV.runtime.windows

cdb1a42245419916edcd2bdf0490fa62.png

初始化OCR引擎,参数是训练数据集绝对路径,以及使用的训练数据语言,根据文件前缀,得知简体中文是chi_sim

Tesseract ocr = new Tesseract(@"D:\Program Files\Tesseract-OCR\tessdata", "chi_sim", OcrEngineMode.Default);

截图了个图片拿来测试。测试图片:

176eb7dbc1fc9c2c3753bcaa2d96f047.png

获取本地图片进行识别:

// 读取图像文件
            using (Mat image = CvInvoke.Imread(@"D:\test.png", ImreadModes.Color))
            {
                if (image != null)
                {
                    // 设置要识别的图像
                    ocr.SetImage(image);


                    // 执行OCR识别
                    var res = ocr.Recognize();
                    if(res == 0)
                    {
                        Tesseract.Character[] characters = ocr.GetCharacters();


                        // 输出识别结果
                        foreach (var character in characters)
                        {
                            Console.Write($"{character.Text}");
                        }
                    }
                    
                }
            }

运行程序,查看效果:

4044d3bd64026afd25a4f37783f741f2.png

基本上都识别出来了,但是可能有小个别不是很准确,但是影响不大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值