当前位置: 首页 > news >正文

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、运行tesseractocrw64setupv4.0.0.20181030.exe文件,安装完之后,配置系统环境变量(最基本就不叙述了)

D:\Program Files (x86)\Tesseract-OCR  只是我配置的路径,就是安装的根路径
在后面用来生成.box文件


2、使用jTessBoxEditor生成训练样本的的合并tif图片(图片是已经准备好的,亦可以自己准备)\color{#21a2f1}2、使用jTessBoxEditor生成训练样本的的合并tif图片 (图片是已经准备好的,亦可以自己准备)2、使用jTessBoxEditor生成训练样本的的合并tif图片(图片是已经准备好的,亦可以自己准备)

  1. 打开jTessBoxEditor,选择Tools->Merge TIFF,进入训练样本所在文件夹,选中要参与训练的样本图片:

  2. 点击 “打开” 后弹出保存对话框,选择保存在当前路径下,文件命名为 “zwp.test.exp0.tif” ,格式只有一种 “TIFF” 可选。

  3. 注意: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文件:

  1. 执行如下命令: echo test 0 0 0 0 0 >font_properties

  2. 也可以手工新建一个名为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、代码测试

  1. 在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>
  1. 代码

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)
其他语言包地址

http://www.lryc.cn/news/18389.html

相关文章:

  • ChatGPT热潮背后,金融行业大模型应用路在何方?——金融行业大模型应用探索
  • 【怎么预防sql注入,以及还有预防其他的什么网络攻击】
  • 2023年全国最新机动车签字授权人精选真题及答案4
  • 【Java】用记事本实现“HelloWorld”输出
  • 我希望早点知道的关于成长的建议
  • 【哈希表】使用方法总结
  • 【笑小枫-面试篇】Java基础面试题整理,努力做全网最全
  • 亚马逊短期疲软,但长期前景乐观
  • webgis高德地图
  • django项目实战十(django+bootstrap实现增删改查)进阶数据统计
  • 【布隆过滤器(Bloom Filter)基本概念与原理、Bloom Filter优点与缺点、以及应用场景】
  • unity的Rendertexture上面显示粒子特效最便捷的解决方案
  • Docker 查询、停止、删除和重启容器
  • 面试历程(3)
  • 【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(二)
  • (免费分享)基于ssm的BBS社区论坛系统带论文
  • RebbitMQ 消息队列(简单使用)
  • OpenCV-Python学习(21)—— OpenCV 图像几何变换之图像翻转(cv.flip、np.flip)
  • CRM系统能帮外贸行业解决哪些问题
  • 掌握lombok简化Java编码完成后端提效
  • 【蓝桥集训】第七天——并查集
  • 该来的总会来,继岳云鹏走红之后,孔云龙也和主流相声界打成一片
  • 索引的创建与设计原则
  • day51【代码随想录】动态规划之回文子串、最长回文子序列
  • 拟凸函数,拟凹函数,单峰函数
  • 数据处理(伪)代码:卡尔曼滤波 vs. 卡尔曼平滑
  • 华为OD机试题,用 Java 解【比赛评分】问题
  • 【基础算法】哈希表(开放寻址法)
  • 优化算法(寻优问题)
  • 基于视频流⽔线的Opencv缺陷检测项⽬