测试C#图像文本识别模块Tesseract的基本用法
微信公众号“dotNET跨平台”的文章《c#实现图片文体提取》(参考文献3)介绍了C#图像文本识别模块Tesseract,后者是tesseract-ocr(参考文献2) 的C#封装版本,目前版本为5.2,关于Tesseract的详细介绍请见参考文献1和5,本文主要测试Tesseract模块的基本用法。
之前测试过IronOCR和PaddleSharp,本文复用IronOCR的测试代码,在NuGet包管理器中安装Tesseract包,如下图所示:

主要调用TesseractEngine类加载语言包、设置识别语言等,其构造函数原型如下所示。其中输入参数中的datapath指定语言包路径,安装NuGet包时不会安装语言包,需要单独下载,可以在参考文献2或者Tesseract官网中下载,language参数指定识别语言,语言名称对应语言包中文件名的开头部分(如chi_sim.traineddata对应的简体中文语言为chi_sim,eng.traineddata对应的英文为eng),engineMode参数对应的是识别引擎类型,其可选值如下所示。
public TesseractEngine(string datapath, string language, EngineMode engineMode)public enum EngineMode
{//// 摘要:// Only the legacy tesseract OCR engine is used.TesseractOnly,//// 摘要:// Only the new LSTM-based OCR engine is used.LstmOnly,//// 摘要:// Both the legacy and new LSTM based OCR engine is used.TesseractAndLstm,//// 摘要:// The default OCR engine is used (currently LSTM-ased OCR engine).Default
}
调用TesseractEngine类中的Process函数识别图片内容,其函数原型如下,第一个参数指定待识别的图片(Pix类为Tesseract模块自带类,可以调用Pix.LoadFromFile函数生成实例对象),第二个参数为图片处理方式,取值见下面代码所示。Process函数返回Page类实例对象,从中可以获取识别结果。
public Page Process(Pix image, PageSegMode? pageSegMode = null)public enum PageSegMode
{//// 摘要:// Orientation and script detection (OSD) only.OsdOnly,//// 摘要:// Automatic page sementation with orientantion and script detection (OSD).AutoOsd,//// 摘要:// Automatic page segmentation, but no OSD, or OCR.AutoOnly,//// 摘要:// Fully automatic page segmentation, but no OSD.Auto,//// 摘要:// Assume a single column of text of variable sizes.SingleColumn,//// 摘要:// Assume a single uniform block of vertically aligned text.SingleBlockVertText,//// 摘要:// Assume a single uniform block of text.SingleBlock,//// 摘要:// Treat the image as a single text line.SingleLine,//// 摘要:// Treat the image as a single word.SingleWord,//// 摘要:// Treat the image as a single word in a circle.CircleWord,//// 摘要:// Treat the image as a single character.SingleChar,SparseText,//// 摘要:// Sparse text with orientation and script detection.SparseTextOsd,//// 摘要:// Treat the image as a single text line, bypassing hacks that are specific to Tesseract.RawLine,//// 摘要:// Number of enum entries.Count
}
Page类中通过调用GetText函数获取图片中所有识别出的汇总的文本,其还支持如下函数获取文本内容或文本区域信息,后续会继续学习其用法。

采用Tesseract模块的基本用法得到的图片文字识别效果如下所示。大部分可以识别出来,但是识别带车牌的图片不管是Tesseract,还是之前的IronOCR和PaddleSharp,效果都比较差,不清楚是设置的问题,还是语言包用得不对。


参考文献
[1]https://github.com/charlesw/tesseract/
[2]https://github.com/tesseract-ocr/tesseract/tree/main/src
[3]https://www.sohu.com/a/722507167_121124363
[4]https://github.com/tesseract-ocr/tessdata/
[5]https://zhuanlan.zhihu.com/p/578700314
相关文章:
测试C#图像文本识别模块Tesseract的基本用法
微信公众号“dotNET跨平台”的文章《c#实现图片文体提取》(参考文献3)介绍了C#图像文本识别模块Tesseract,后者是tesseract-ocr(参考文献2) 的C#封装版本,目前版本为5.2,关于Tesseract的详细介绍…...
计组+系统02:30min导图复习 存储系统
🐳前言 考研笔记整理,纯复习向,思维导图基本就是全部内容了,不会涉及较深的知识点~~🥝🥝 第1版:查资料、画思维导图~🧩🧩 编辑: 梅头脑🌸 参考…...
2023华为杯数学建模D题-域碳排放量以及经济、人口、能源消费量的现状分析(如何建立指标和指标体系1,碳排放影响因素详细建模过程)
可能建立的指标如下: 经济指标: 地区生产总值(GDP)人均GDP;第一产业(农林部门)产值;第二产业(能源供应和工业部门)产值;第三产业(建筑和交通部门…...
Excel·VBA分列、字符串拆分
看到一篇博客《VBA,用VBA进行分列(拆分列)的2种方法》,使用VBA对字符串进行拆分 目录 Excel分列功能将字符串拆分为二维数组,Split函数举例 将字符串拆分为一维数组,正则表达式举例 Excel分列功能 Sub 测…...
机器学习算法基础--层次聚类法
文章目录 1.层次聚类法原理简介2.层次聚类法基础算法演示2.1.Single-linkage的计算方法演示2.2.Complete-linkage的计算方法演示2.3.Group-average的计算方法演示 3.层次聚类法拓展算法介绍3.1.质心法原理介绍3.2.基于中点的质心法3.3.Ward方法 4.层次聚类法应用实战4.1.层次聚…...
linux系统中wifi移植方法
第一:移植wifi现象 在linux系统的RK3399中空板上,确认rk3399中控板linux系统已经可以正常运行。本操作是在rk3399中控板上的WIFI模块,linux内核加载wifi驱动后,再配置上正确的wifi密码,就可以实现rk3399中控板通过wifi…...
Machine Learning(study notes)
There is no studying without going crazy Studying alwats drives us crazy 文章目录 DefineMachine LearningSupervised Learning(监督学习)Regression problemClassidication Unspervised LearningClustering StudyModel representation(…...
centos7通过docker搭建nginx+php环境
以下环境都是基于centos7.9完成。 1.安装docker yum install docker-ce 说明:这一步,由于centos软件仓库没有收纳docker,需要自己去官网爬文档安装。 安装完成之后,就是启动docker服务以及添加到开机启动。 systemctl enable do…...
Node.js 学习笔记
小插件Template String Converter 当输入${}时,自动为其加上 反引号 一、node入门 node.js是什么 node的作用 开发服务器应用 开发工具类应用 开发桌面端应用 1.命令行工具 命令的结构 常用命令 切换到D盘——D: 查看D盘目录——dir 切换工作目录——c…...
RabbitMQ之发布确认高级
RabbitMQ之发布确认高级 一、发布确认 SpringBoot 版本1.1 确认机制方案1.2 代码架构图1.3 配置文件1.4 添加配置类1.5 消息生产者1.6 回调接口1.7 消息消费者1.8 结果分析 二、回退消息2.1 Mandatory 参数2.2 消息生产者代码2.3 回调接口2.4 结果分析 三、备份交换机3.1 代码架…...
lv5 嵌入式开发-10 信号机制(下)
目录 1 信号集、信号的阻塞 2 信号集操作函数 2.1 自定义信号集 2.2 清空信号集 2.3 全部置1 2.4 将一个信号添加到集合中 2.5 将一个信号从集合中移除 2.6 判断一个信号是否在集合中 2.7 设定对信号集内的信号的处理方式(阻塞或不阻塞) 2.8 使进程挂起(…...
【postgresql】 ERROR: multiple assignments to same column “XXX“
Cause: org.postgresql.util.PSQLException: ERROR: multiple assignments to same column "XXX"; bad SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: multiple assignments to same column "XXX"; 原因:or…...
一文读懂Llama 2(从原理到实战)
简介 Llama 2,是Meta AI正式发布的最新一代开源大模型。 Llama 2训练所用的token翻了一倍至2万亿,同时对于使用大模型最重要的上下文长度限制,Llama 2也翻了一倍。Llama 2包含了70亿、130亿和700亿参数的模型。Meta宣布将与微软Azure进行合…...
完整指南:如何使用 Node.js 复制文件
文件拷贝指的是将一个文件的数据复制到另一个文件中,使目标文件与源文件内容一致。Node.js 提供了文件系统模块 fs,通过该模块可以访问文件系统,实现文件操作,包括拷贝文件。 Node.js 中文件拷贝方法 在 Node.js 中,有…...
ElementUI - 主页面--动态树右侧内容管理
一.左侧动态树 1.定义组件 ①样式&数据处理 <template><el-menu class"el-menu-vertical-demo" background-color"#334157"text-color"#fff" active-text-color"#ffd04b" :collapse"collapsed" router :def…...
全国排名前三的直播公司无锋科技入驻天府蜂巢成都直播产业基地
最近,全国排名前三的直播公司——无锋科技,正式宣布入驻位于成都的天府蜂巢直播产业基地,这一消息引起了业内人士的高度关注。成都直播产业基地一直是中国直播产业的重要地标之一,其强大的技术和资源优势为众多直播公司提供了广阔…...
机器人中的数值优化|【五】BFGS算法非凸/非光滑处理
机器人中的数值优化|【五】BFGS算法的非凸/非光滑处理 往期内容回顾 机器人中的数值优化|【一】数值优化基础 机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例 机器人中的数值优化|【三】无约束优化࿰…...
ESP32S3的MPU-6050组件移植教程
前言 (1)实习公司要搞ESP32BOX的驱动移植,所有资料自己找还是比较折磨人的现在我分享几个官方的组件移植资料: <1>Find the most exciting ESP-IDF components(ESP32的官方组件都可以在里面查,按照他…...
excel筛选后求和
需要对excel先筛选,后对“完成数量”进行求和。初始表格如下: 一、选中表内任意单元格,按ctrlshiftL,开启筛选 二、根据“部门”筛选,比如选择“一班” 筛选完毕后,选中上图单元格,然后按alt后&…...
pyspark 检测任务输出目录是否空,避免读取报错
前言 在跑调度任务时候,有时候子任务需要依赖前置任务的输出,但类似读取 Parquet 或者 Orc 文件时,如果不判断目录是否为空,在输出为空时会报错,所以需要 check 一下,此外Hadoop通常在写入数据时会在目录中…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
快速排序算法改进:随机快排-荷兰国旗划分详解
随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...
