利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高识别率

本文主要是介绍利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高识别率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高识别率

1 . 下载Tesseract-OCR(相关版本自行选择)
得到目录结构如下:
这里写图片描述
tessdata目录为相关的语言包文件目录

2 .下载jTessBoxEditor(运行环境为java虚拟机)
得到目录结构如下:
这里写图片描述

打开方式如下:
这里写图片描述

工具都安装完成了,我们接下来测试下tesseract
我的测试图片如下:
这里写图片描述

在命令行输入 : tesseract b.jpg output -l eng -psm 7
这里写图片描述
其中eng为你tesseract目录tessdata里的已有的eng语言包

接下来把识别的结果用文本打印出来,输入:type output.txt
这里写图片描述

可以看到eng的语言包识别有错误的结果,4识别成了1o

所以在我们开发中针对我们要识别的字体,进行我们自己训练的语言是很有必要的

3 . 训练自己的语言包文件
a. 用jTessBoxEditor把要训练样本图片文件合并成tif文件(样本图片一定要为有效的格式图片)
运行jTessBoxEditor程序,界面如下:
这里写图片描述

点击顶栏的Tools选项,选择Merge TIFF.. 进入你要训练的样本图片所在的目录,点击Ctrl+Alt+A,选择所有图片点击打开:
这里写图片描述

然后保存文件名到指定目录,我这里保存的文件名为: langyp.font.exp0.tif

这里写图片描述

b.生成Box文件
打开cmd,到你langyp.font.exp0.tif文件所在目录,执行tesseract langyp.font.exp0.tif langyp.font.exp0 -l eng -psm 7 batch.nochop makebox 命令
这里写图片描述

结果生成了langyp.font.exp0.box文件
这里写图片描述

C. 对样本图片用jTessBoxEditor工具进行矫正
点击jTessBoxEditor工具的Box Editor选项,点击下方的open选项,打开刚刚生成的langyp.font.exp0.tif文件,结果如下:
这里写图片描述

右侧为对应的Box文件数据,如果char的字符和当前的样本图片一致时就进行矫正,修改char里的字符,然后进行save,这样就矫正了,进入下张样本图片时,同样,矫正后点击save,当所有样本图片都矫正了,这一步也就完成了

d.生成font_properties文件(该文件没有后缀名)
在命令行执行:echo font 0 0 0 0 0 >font_properties
结果生成了font_properties文件
这里写图片描述
内容为字体名font,后面带5个0,分别代表字体的粗体、斜体等属性,这里全部是0

e.生成.tr训练文件
在命令行执行: tesseract langyp.font.exp0.tif langyp.font.exp0 -l eng -psm 7 nobatch box.train

这里写图片描述

会生成框内两个文件

f.生成字符集文件
在命令行执行 : unicharset_extractor langyp.font.exp0.box
这里写图片描述

结果生成了unicharset文件

g.生成shape文件
在命令行执行 : shapeclustering -F font_properties -U unicharset -O langyp.unicharset langyp.font.exp0.tr
这里写图片描述
结果生成了shapetable文件和langyp.unicharset文件

h.生成聚集字符特征文件
在命令行执行: mftraining -F font_properties -U unicharset -O langyp.unicharset langyp.font.exp0.tr
这里写图片描述

结果生成了pffmtable,inttemp,unicharset文件

i.生成字符正常化特征文件
在命令行执行: cntraining langyp.font.exp0.tr
这里写图片描述

结果生成了normproto文件

j.把h,i步骤生成的文件用rename命令进行更名
在命令行执行:
**rename normproto fontyp.normproto
rename inttemp fontyp.inttemp
rename pffmtable fontyp.pffmtable
rename unicharset fontyp.unicharset
rename shapetable fontyp.shapetable**
这里写图片描述

k.合并训练文件
在命令行执行: combine_tessdata fontyp.
这里写图片描述

l.将fontyp.traineddata文件拷贝至Tesseract-OCR文件夹里的tessdata语言包文件夹里

测试 :
cmd操作回到样本图片的目录,如果没有你当前目录没有该样本图片,执行命令时会提示”Cannot open input file: b.jpg”,还有执行指定的新的语言包,Tesseract-OCR目录的tessdata的文件夹必须要有新的语言包文件
执行命令: tesseract b.jpg output -l fontyp -psm 7(fontyp为训练的语言包文件)
最后执行 : type output.txt
这里写图片描述

可以看见没有一个错误,最后用其它的样本进行识别,都能完全识别,用默认的eng语言包识别错误的”4”,用新的语言包识别后都没有错

本文档训练的语言包文件可用作身份证识别的语言包文件和车牌识别的语言包文件!

版本申明: 转载或者用作其它用途,请标明出处!

这篇关于利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高识别率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/522621

相关文章

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Java数字转换工具类NumberUtil的使用

《Java数字转换工具类NumberUtil的使用》NumberUtil是一个功能强大的Java工具类,用于处理数字的各种操作,包括数值运算、格式化、随机数生成和数值判断,下面就来介绍一下Number... 目录一、NumberUtil类概述二、主要功能介绍1. 数值运算2. 格式化3. 数值判断4. 随机

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

如何使用Spring boot的@Transactional进行事务管理

《如何使用Springboot的@Transactional进行事务管理》这篇文章介绍了SpringBoot中使用@Transactional注解进行声明式事务管理的详细信息,包括基本用法、核心配置... 目录一、前置条件二、基本用法1. 在方法上添加注解2. 在类上添加注解三、核心配置参数1. 传播行为(

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate