Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于Tesseract组件的OCR识别

基于Tesseract组件的OCR识别

作者头像
w4ngzhen
发布于 2023-10-18 10:40:58
发布于 2023-10-18 10:40:58
91700
代码可运行
举报
文章被收录于专栏:编译思想编译思想
运行总次数:0
代码可运行

背景以及介绍

欲研究C#端如何进行图像的基本OCR识别,找到一款开源的OCR识别组件。该组件当前已经已经升级到了4.0版本。和传统的版本(3.x)比,4.0时代最突出的变化就是基于LSTM神经网络。Tesseract本身是由C++进行编写,但为了同时适配不同的语言进行调用,开放调用API并产生了诸如Java、C#、Python等主流语言在内的封装版本。本次主要研究C#封装版。

项目结构

Tesseract本身由C++编写并开源在Github,在3.X版本中,Tesseract的识别模式为字符识别,该种识别方式识别能力较低,所以在后来的4.X版本中,引入了LSTM(Long short-term memory,长短期记忆神经网络),极大的提升了识别率。为了让不同的语言均能够使用Tesseract进行OCR识别,Tesseract也是开放了API并产生了诸如Java、C#、Python等主流语言在内的封装版本。而本次C#端的封装版也开源在了Github,目前已知的C#封装版已发布在nuget上,封装了对应Tesseract的版本为3.05.02。所以目前的项目结构如下:

Demo实验

环境准备

文本识别数据包准备

因为图像识别本身需要文本识别数据进行匹配,所以我们需要下载对应Tesseract官方的文本数据包: https://tesseract-ocr.github.io/tessdoc/Data-Files 注意,针对不同版本的Tesseract-OCR(3.X和4.X底层的实现方式不同,所以文本识别数据包是不同的),我们需要找到对应的不同的文本训练数据包,官网为了更好的兼容性,4.X版本的文本数据包是兼容了3.X版本的。

the third set in tessdata is the only one that supports the legacy recognizer. The 4.00 files from November 2016 have both legacy and older LSTM models. The current set of files in tessdata have the legacy models and newer LSTM models (integer versions of 4.00.00 alpha models in tessdata_best).

为了Demo,我下载了中文简体和英文的数据包作为实验对象

开发环境准备

为了实验并对比上面两个封装版本的识别效果,这里在同一解决方案中创建了两个项目:

BaseNewBeta使用的是封装了4.1版本Tesseract的C#封装版Tesseract.4.1.0-beta1,因为该版本还还没有上传只Nuget,所以只能从github上下载,放到本地,然后把对应的C++的底层库(leptonica-1.78.0.dll,tesseract41.dll)放置到了x86和x64文件夹下面且需要输出。

BaseNuget是已经上传至Nuget的封装了底层库3.05.20版本的C#封装版3.3.0.0,因为使用nuget进行组件安装,所以x64和x86的Tesseract组件会在编译输出时候自动输出到对应的生成目录。

核心代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    //PictureBox控件显示图片
    pictureBox1.Load(openFileDialog1.FileName);
    //获取用户选择文件的后缀名 
    string extension = Path.GetExtension(openFileDialog1.FileName);
    //声明允许的后缀名 
    string[] str = new string[] { ".jpg", ".png" };
    if (!str.Contains(extension))
    {
        MessageBox.Show("仅能上传jpg,png格式的图片!");
    }
    else
    {
        //识别图片文字
        Bitmap img = new Bitmap(openFileDialog1.FileName);
        // 构建识别引擎
        TesseractEngine orcEngine = new TesseractEngine("./tessdata", "eng");
        // 识别并获取文本数据
        Page page = orcEngine.Process(img);
        richTextBox1.Text = page.GetText();
    }
}
最终效果
英文识别效果

先是3.X版本识别:

可以看到文本中还有很多识别的错误的,特别是把英文字符C识别为了括号(。 而封装了新版本的识别结果比起之前更好:

中文识别效果

先是3.X版本识别:

然后是封装的版本:

看的出来,官方的数据包对于中文的识别还是有很大问题的,不过庆幸的是,4.X版本的后的Tesseract支持我们使用的自己的数据进行识别训练。这样一来,虽然该组件还比不上市面上大多数的商业OCR识别,但是我们可以使用训练数据,来训练适用于我们特定业务的文字识别(比如XX码的提取之类)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-042,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Tesseract OCR初探
Refer from http://hellosure.github.io/ocr/2014/10/11/tesseract-ocr/
全栈程序员站长
2022/07/25
7.6K0
Tesseract OCR初探
OpenCV Python + Tesseract-OCR轻松实现中文识别
下载Tesseract-OCR 5.0.0-alpha.20201127安装包并安装!然后在环境变量中添加
小白学视觉
2021/01/06
10.6K0
OpenCV Python + Tesseract-OCR轻松实现中文识别
javaCV文字识别篇汇总:Tesseract介绍,Java如何使用Tesseract识别字符,如何使用Tesseract训练中文数据模型,Tesseract支持哪些格式标注数据
Tesseract 是一个开源的 OCR(光学字符识别)引擎,最初由惠普实验室开发,后来由 Google 接管并开源。OCR 是一种将图像中的文本转换为可编辑文本的技术,它可以自动识别图像或扫描文档中的文字,并将其转换为数字形式。
csdn博主eguid_1
2024/05/26
1.7K0
tesseract-ocr 实现图片识别功能
http://blog.sina.com.cn/s/blog_56d988430102w37c.html
bear_fish
2018/09/19
6.1K0
tesseract-ocr 实现图片识别功能
【.NET】使用OpenCV和tesseract-ocr引擎实现识别图片文字内容
https://tesseract-ocr.github.io/tessdoc/Installation.html
Wesky
2024/08/13
5680
【.NET】使用OpenCV和tesseract-ocr引擎实现识别图片文字内容
Java使用Tesseract-OCR实战
tesseract-ocr-w64-setup-v5.3.0.20221214.exe 选择安装目录,下一步,下一步默认安装
九转成圣
2024/04/10
6210
[AI测试]python文字图像识别tesseract
github官网:https://github.com/tesseract-ocr/tesseract
梦无矶小仔
2023/09/08
1.7K0
[AI测试]python文字图像识别tesseract
C#使用Tesseract C++ API过程记录
Tesseract 是一个开源的光学字符识别(OCR)引擎,最初由 Hewlett-Packard(惠普)实验室开发,后来由 Google 收购并继续维护和开源贡献。Tesseract 可以识别多种语言的文字,广泛应用于将图片或扫描文档中的文本内容转换成可编辑的文本格式。随着深度学习技术的发展,Tesseract 也整合了基于深度神经网络的 OCR 模型,提升其识别准确率,特别是对于复杂排版和手写体的识别效果有所改善。
郑子铭
2025/02/19
2010
C#使用Tesseract C++ API过程记录
使用Tesseract-OCR训练文字识别记录
部分图片可能由于背景颜色关系,导致此张图片无法识别,可跳过继续下一张识别。
bear_fish
2018/09/19
3.1K0
使用Tesseract-OCR训练文字识别记录
R+OCR︱借助tesseract包实现图片文本提取功能
参数: image 图片文件路径,支持png、tiff、jpeg等格式 engine tesseract引擎,通过函数tesseract()来创建 language 训练数据的语言字符简写,默认为英语(eng) datapath 训练数据的路径,模型为系统库 options tesseract引擎的相关参数,默认为NULL,可查看文档 cache 可以使用训练数据的缓存版本,默认为TRUE
悟乙己
2019/05/26
2.6K0
tesseract-ocr识别英文和中文图片文字以及扫描图片实例讲解
本文参考http://blog.sina.com.cn/s/blog_4aa166780101cji7.html实现,在这里感谢该文章的作者。 OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程。 Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布。当前版本为3.02 项目下载地址为:http://jaist.dl.
朱晓霞
2018/04/18
8.7K1
tesseract-ocr识别英文和中文图片文字以及扫描图片实例讲解
tesseract-ocr验证码识别
下载安装tesseract-ocr-setup-3.02.02 训练工具jTessBoxEditor-2.3.0 下载地址
丁D
2022/08/12
1.6K0
tesseract-ocr验证码识别
开源免费图片文字识别 OCR 工具 tesseract v4.1.0 的 Docker 镜像制作与使用
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
耕耘实录
2019/09/18
5.1K0
爬取微信公众号所有历史文章 - (03) python结合tesseract-ocr做图文识别
前面我们讲到了adb的封装,里面具体讲到到了在一副图片中寻找目标的坐标并点击。这篇文章我们讲讲对一副图片的特定区域做截取,并利用开源库做图纹识别。
efonfighting
2019/08/02
1.5K0
爬取微信公众号所有历史文章 - (03) python结合tesseract-ocr做图文识别
教程 | Adrian小哥教程:如何使用Tesseract和OpenCV执行OCR和文本识别
本教程将介绍如何使用 OpenCV OCR。我们将使用 OpenCV、Python 和 Tesseract 执行文本检测和文本识别。
机器之心
2018/10/22
4.1K0
教程 | Adrian小哥教程:如何使用Tesseract和OpenCV执行OCR和文本识别
Tesseract-OCR 4.1.0 安装和使用— windows及CentOS
 OCR(Optical character recognition) —— 光学文字识别,是图像处理的一个重要分支,中文的识别具有一定挑战性,特别是手写体和草书的识别,是重要和热门的科学研究方向
NaughtyCat
2020/10/09
3.9K1
Tesseract-OCR 4.1.0 安装和使用— windows及CentOS
Python 实现识别弱图片验证码
目前,很多网站为了防止爬虫肆意模拟浏览器登录,采用增加验证码的方式来拦截爬虫。验证码的形式有多种,最常见的就是图片验证码。其他验证码的形式有音频验证码,滑动验证码等。图片验证码越来越高级,识别难度也大幅提高,就算人为输入也经常会输错。本文主要讲解识别弱图片验证码。
猴哥yuri
2018/08/16
4.2K0
开源OCR引擎Tesseract
知名的开源OCR引擎Tesseract 3.0版本日前发布,可以在项目网站下载:http://code.google.com/p/tesseract-ocr, 新版本支持中文,中文语言包定义http:
张善友
2018/01/30
8.4K0
tesseract-ocr的使用
——显示出tesseract的版本号则表示安装,及环境变量配置成功。否则根据提示检查安装失败原因
搁浅同学
2022/07/21
1.3K0
利用tess-two和cv4j实现简单的ocr功能、
Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供命令行工具。 现阶段的Tesseract由Google负责维护,是最好的开源OCR Engine之一,并且支持中文。
fengzhizi715
2018/08/24
1.5K0
利用tess-two和cv4j实现简单的ocr功能、
推荐阅读
相关推荐
Tesseract OCR初探
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验