Tesseract 4.0训练字库并且识别训练后的图片
各个工具下载链接在文章底部!
重要!!自己先创建一个空文件夹(名字随意),用来保存训练后的模型 ,还需要在里面创建一个 名称为tessdata 的文件夹 ,必须叫这个名
可以先使用下载后的进行测试训练(只需要把java文件里面的文件路径更换为你自己下载包的存储路径),图片必须使用下载包里面的图片,因为是训练的是下载包里面的图片\color{#2111f1}可以先使用下载后的进行测试训练(只需要把java文件里面的文件路径更换为你自己下载包的存储路径),图片必须使用下载包里面的图片,因为是训练的是下载包里面的图片可以先使用下载后的进行测试训练(只需要把java文件里面的文件路径更换为你自己下载包的存储路径),图片必须使用下载包里面的图片,因为是训练的是下载包里面的图片
1、运行tesseract−ocr−w64−setup−v4.0.0.20181030.exe文件,安装完之后,配置系统环境变量(最基本就不叙述了)\color{#21a2f1}1、 运行tesseract-ocr-w64-setup-v4.0.0.20181030.exe 文件,安装完之后,配置系统环境变量(最基本就不叙述了)1、运行tesseract−ocr−w64−setup−v4.0.0.20181030.exe文件,安装完之后,配置系统环境变量(最基本就不叙述了)
D:\Program Files (x86)\Tesseract-OCR 只是我配置的路径,就是安装的根路径
在后面用来生成.box文件
2、使用jTessBoxEditor生成训练样本的的合并tif图片(图片是已经准备好的,亦可以自己准备)\color{#21a2f1}2、使用jTessBoxEditor生成训练样本的的合并tif图片 (图片是已经准备好的,亦可以自己准备)2、使用jTessBoxEditor生成训练样本的的合并tif图片(图片是已经准备好的,亦可以自己准备)
-
打开jTessBoxEditor,选择Tools->Merge TIFF,进入训练样本所在文件夹,选中要参与训练的样本图片:
-
点击 “打开” 后弹出保存对话框,选择保存在当前路径下,文件命名为 “zwp.test.exp0.tif” ,格式只有一种 “TIFF” 可选。
-
注意:tif文面命名格式[lang].[fontname].exp[num].tif
lang是语言,fontname是字体,num为自定义数字。
比如我们要训练自定义字库 zwp,字体名test,那么我们把图片文件命名为 zwp.test.exp0.tif
3、使用tesseract生成.box文件\color{#21a2f1}3、使用tesseract生成.box文件3、使用tesseract生成.box文件
在上一步骤生成的“zwp.test.exp0.tif”文件所在目录下打开命令行程序,执行下面命令,执行完之后会生成zwp.test.exp0.box文件。
执行如下命令 tesseract zwp.test.exp0.tif zwp.test.exp0 batch.nochop makebox
4、使用jTessBoxEditor矫正.box文件的错误\color{#21a2f1}4、使用jTessBoxEditor矫正.box文件的错误4、使用jTessBoxEditor矫正.box文件的错误
.box文件记录了每个字符在图片上的位置和识别出的内容,因为识别出的内容和位置有可能把两个字合到一起或者把一个字拆分了,所以训练前需要使用jTessBoxEditor调整字符的位置和内容。
使用步骤:
打开jTessBoxEditor点击Box Editor ->Open,打开步骤2中生成的“zwp.test.exp0.tif”,会自动关联到“zwp.test.exp0.box”文件,这两文件要求在同一目录下。调整完点击“save”保存修改。
5、生成fontproperties文件:\color{#21a2f1}5、生成font_properties文件:5、生成fontproperties文件:
-
执行如下命令: echo test 0 0 0 0 0 >font_properties
-
也可以手工新建一个名为font_properties的文本文件,输入内容 “test 0 0 0 0 0” 表示字体test的粗体、倾斜等共计5个属性。这里的“test”必须与“zwp.test.exp0.box”中的“test”名称一致。
6、使用tesseract生成.tr训练文件\color{#21a2f1}6、使用tesseract生成.tr训练文件6、使用tesseract生成.tr训练文件
执行下面命令,执行完之后,会在当前目录生成zwp.test.exp0.tr文件。
执行如下命令 tesseract zwp.test.exp0.tif zwp.test.exp0 nobatch box.train
7、生成字符集文件\color{#21a2f1}7、生成字符集文件7、生成字符集文件
执行下面命令:执行完之后会在当前目录生成一个名为“unicharset”的文件。
执行命令 unicharset_extractor zwp.test.exp0.box
8、生成shape文件\color{#21a2f1}8、生成shape文件8、生成shape文件
执行下面命令,执行完之后,会生成 shapetable 和 zwp.unicharset 两个文件。
执行命令 shapeclustering -F font_properties -U unicharset -O zwp.unicharset zwp.test.exp0.tr
9、生成聚字符特征文件\color{#21a2f1}9、生成聚字符特征文件9、生成聚字符特征文件
执行下面命令,会生成 inttemp、pffmtable、shapetable和zwp.unicharset四个文件。
执行命令 mftraining -F font_properties -U unicharset -O zwp.unicharset zwp.test.exp0.tr
10、生成字符正常化特征文件\color{#21a2f1}10、生成字符正常化特征文件10、生成字符正常化特征文件
执行下面命令,会生成 normproto 文件。
执行命令: cntraining zwp.test.exp0.tr
11、文件重命名\color{#21a2f1}11、文件重命名11、文件重命名
重新命名inttemp、pffmtable、shapetable和normproto这四个文件的名字为[lang].xxx。
这里修改为zwp.inttemp、zwp.pffmtable、zwp.shapetable和zwp.normproto
依次执行下面命令rename normproto zwp.normprotorename inttemp zwp.inttemprename pffmtable zwp.pffmtablerename shapetable zwp.shapetable
11、合并训练文件\color{#21a2f1}11、合并训练文件11、合并训练文件
执行下面命令,会生成zwp.traineddata文件。
执行命令 combine_tessdata zwp.
将生成的“zwp.traineddata”语言包文件复制到 新建文件夹 目录下的tessdata文件夹中,就可以使用训练生成的语言包进行图像文字识别了。
12、代码测试\color{#21a2f1}12、代码测试12、代码测试
- 在pom中引入依赖
<!-- pom tess4j相关依赖 --><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>3.4.0</version><exclusions><exclusion><groupId>com.sun.jna</groupId><artifactId>jna</artifactId></exclusion></exclusions></dependency>
- 代码
public class Main {public static void main(String[] args) {System.out.println("Hello world!");//你的图片 1.png 为我自定义图片名字 其实使用的就是 上面的测试图片File imageFile = new File("D:\\OCR\\1.png");//你训练库的路径tessdataITesseract instance = new Tesseract();// 模型文件夹必须叫做 tessdatainstance.setDatapath("D:\\OCR\\Test2\\tessdata");
// zwp 是刚刚训练过的 包instance.setLanguage("zwp");
// chi_sim 是自带的中文包
// instance.setLanguage("chi_sim");String result = null;try {result = instance.doOCR(imageFile);} catch (TesseractException e) {throw new RuntimeException(e);}System.out.println(result);}
}
如果网络不行可以下载源码文件进行操作
demo源码
用于配置环境变量,生成.box文件
tesseract-ocr官网
用于调整图片上文字的内容和位置
jTessBoxEditor工具官网
用于设置语言包 (instance.setLanguage)
其他语言包地址
相关文章:
Tesseract 4.0训练字库并且识别训练后的图片
各个工具下载链接在文章底部! 重要!!自己先创建一个空文件夹(名字随意),用来保存训练后的模型 ,还需要在里面创建一个 名称为tessdata 的文件夹 ,必须叫这个名 可以先使用下载后的进行测试训练(只需要把ja…...

ChatGPT热潮背后,金融行业大模型应用路在何方?——金融行业大模型应用探索
ChatGPT近两个月以来不断引爆热点,对人工智能应用发展的热潮前所未有地高涨,ChatGPT所代表的大模型在语义理解、多轮交互、内容生成中所展现的突出能力令人惊喜。而人工智能技术在金融行业的落地应用仍然面临挑战,虽然已经让大量宝贵的人力从…...
【怎么预防sql注入,以及还有预防其他的什么网络攻击】
SQL注入是一种常见的Web攻击,通过在Web应用程序中注入恶意SQL语句来获取或修改数据库中的数据。为了防止SQL注入,开发者可以采取以下措施: 1、使用参数化查询(Prepared Statement)或存储过程(Stored Proce…...
2023年全国最新机动车签字授权人精选真题及答案4
百分百题库提供机动车签字授权人考试试题、机动车签字授权人考试预测题、机动车签字授权人考试真题、机动车签字授权人证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 11.使用转化炉原理测量氮氧化物的排气分析仪进行排气污…...

【Java】用记事本实现“HelloWorld”输出
【在进行以下操作前需要下载好JDK并配置好对应的环境变量】 一、在任意文件夹中创建一个新的文本文档文件并写入以下代码 public class Hello{public static void main (String[] args){System.out.print("Hello,World!");} } 二、修改文件名称及文件类型为 Hello.j…...

我希望早点知道的关于成长的建议
人上了年纪,往往在诸如更加闭塞,更加固执这些缺点之外,再多出来一个缺点:那就是动不动就爱给别人建议。我当然也未能免俗。有时候会听到同样悲观且固执的过来人告诉我,这些建议说了和没说效果都一样,人们在…...
【哈希表】使用方法总结
1. uthash简介开源的第三方头文件,这只是一个头文件:uthash.h。uthash还包括三个额外的头文件,主要提供链表,动态数组和字符串。utlist.h为C结构提供了链接列表宏。utarray.h使用宏实现动态数组。utstring.h实现基本的动态字符串。…...

【笑小枫-面试篇】Java基础面试题整理,努力做全网最全
写在前面 或许你只是想白嫖内容,或许你也会忽略这段文字,但我还是想弱弱的说 题目整理耗费了大量精力,希望可以给博主点赞收藏,谢谢大家啦 我呢,笑小枫,一个努力的普通人,也希望可以花1秒钟记住…...

亚马逊短期疲软,但长期前景乐观
来源:猛兽财经 作者:猛兽财经 由于投资者对亚马逊(AMZN)前景的担忧,导致该公司的股价在过去一年中下跌了39%。然而猛兽财经认为亚马逊近期面临的不利因素只是暂时的,该公司还是有充分的条件可以在医疗保健和物流领域获得重大增长机…...

webgis高德地图
webgis高德地图 首先准备工作,注册一个高德地图账号,然后在创建一个新应用生一个key跟appId 高德开放平台 接着创建一个html页面 高德配置手册 <style>* {margin: 0;padding: 0;}#...

django项目实战十(django+bootstrap实现增删改查)进阶数据统计
目录 一、echarts 1、下载 2、配置 二、实现统计分析页面--架构和柱图 1、url 2、chart.py 3、chart_list.html 4、修改url 5、新增chart_bar方法 6、修改chart_list.html 四、饼图 1、url 2、视图chart.py新增 3、修改chart_list.html 五、折线图 1、url 2、char…...

【布隆过滤器(Bloom Filter)基本概念与原理、Bloom Filter优点与缺点、以及应用场景】
布隆过滤器(Bloom Filter)基本概念与原理、Bloom Filter优点与缺点、以及应用场景 Bloom Filter 基本概念 布隆过滤器是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在…...
unity的Rendertexture上面显示粒子特效最便捷的解决方案
一、为什么不显示 1.为什么粒子特效也不显示? 不显示是正常的,因为当前为背景的点设置为A为0时已经被剔除,当前位置粒子特效的颜色也会被剔除。 因为clip发生在融合blend之前,blend发生在所有颜色输出之后的帧缓存。 2.为什么NGUI的Unlit/Premultiplied Colored的shade…...
Docker 查询、停止、删除和重启容器
docker 列出所有容器IDdocker ps -aq[rootlocalhost conf]# docker ps -aq f81aa5f48427 06a66409d7ce 1c3d38b948ba 62233dfad35b 4b0032878886 0f6f368c4c1d 7d98a59a8012 1906ba6bfbe1 [rootlocalhost conf]#docker 查看所有运行容器docker ps -a[rootlocalhost conf]# dock…...
面试历程(3)
1、HashMap为什么要使用红黑树,不能使用平衡二叉树(AVL树) 二叉查找树具有的特性: 左子树上所有结点的值均小于或等于它的根结点的值。右子树上所有结点的值均大于或等于它的根结点的值。左、右子树也分别为二叉排序树。AVL树是严格平衡二叉树(左右两个子树的高度差的绝对…...

【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(二)
storybook回顾继续说说用法配置文件介绍回顾 上篇博客地址: https://blog.csdn.net/tuzi007a/article/details/129192502说了部分用法。 继续说说用法 配置文件介绍 开发环境的配置都在.storybook目录中,里面包含了2个文件 main.js preview.js先看m…...

(免费分享)基于ssm的BBS社区论坛系统带论文
项目描述前台部分:1.用户注册登录模块用户登录后,可以进行发帖回帖功能,在线签到功能,完善个人信息,添加好友,收藏贴子,评论帖子,点赞功能,记录功能(比如记录今天发生的事情)等等…2.排行榜模块1.帖子讨论热度排行,分两种排行方式:(1) 根据用户今日发出的帖子被回复数量进行排名…...

RebbitMQ 消息队列(简单使用)
消息队列介绍 MQ的优势 1.业务解耦:不同系统消费信息互不关联,灵活增减系统数量,修改某个系统其他系统也不影响 2.异步提速:不同系统之间可同时响应,提升并发量 3.削峰填谷:处理消息高峰期,均摊…...

OpenCV-Python学习(21)—— OpenCV 图像几何变换之图像翻转(cv.flip、np.flip)
1. 学习目标 学习 OpenCV 图像的翻转函数 cv.flip;学习 NumPy 矩阵的反转函数 np.flip;自己实现矩阵反转的函数。 2. OpenCV 翻转 翻转也称镜像,是指将图像沿轴线进行轴对称变换。水平镜像是将图像沿垂直中轴线进行左右翻转,垂直…...

CRM系统能帮外贸行业解决哪些问题
国内的外贸行业经历了四个发展阶段,从发展期到繁荣期,CRM客户管理系统逐步走到幕前,成为外贸企业必不可少的主打工具。那么外贸行业整面临哪些问题?该如何解决?下面我们就来说说适合外贸行业的CRM解决方案。 外贸行业…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...

基于django+vue的健身房管理系统-vue
开发语言:Python框架:djangoPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat12开发软件:PyCharm 系统展示 会员信息管理 员工信息管理 会员卡类型管理 健身项目管理 会员卡管理 摘要 健身房管理…...