tesseract ocr5.3.3自定义训练

系列文章目录

1.tesseract ocr5.3.3源码编译方法一(基于cmake)
2.tesseract ocr5.3.3源码编译方法二(基于cmake+sw)
3.tesseract ocr5.3.3自定义训练



前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、准备工作

1.安装tesseract.exe

我这边选择的是 tesseract-ocr-w64-setup-5.3.3.20231005.exe
下载地址:https://digi.bib.uni-mannheim.de/tesseract/
安装好后,目录如下
在这里插入图片描述
安装完成之后,需要把安装目录(我的安装位置是:D:\Program Files\Tesseract-OCR)加入Path环境变量,以方便后面执行命令行工具。
在这里插入图片描述
注意:Tesseract-OCR4.0安装之后,需要设置TESSDATA_PREFIX环境变量,指向D:\Program Files \Tesseract-OCR\tessdata;Tesseract-OCR5.0,64位版本则不需要此操作。但我还是加了
在这里插入图片描述
备注:如果不想添加系统环境,那每次使用tesseract之前,先cd 到安装目录,如下图所示
在这里插入图片描述

2.下载所需字库到tessdata

下载地址:https://github.com/tesseract-ocr/tessdata_best
国内gitee下载:https://gitee.com/acgnhiki/tessdata_best/tree/main,要识别简体中文需要下载chi_sim.traindata字库。
备注:从tessdata_best下载对应data,是因为后续训练自己的库时,需要从这些.traineddata文件提取.lstm文件,如果从原有tesseract-OCR中的.traineddata文件提取.lstm文件,会造成无法进行训练。

3.安装jTessBoxEditor

jTessBoxEditor是用java写的box编辑器,用于编辑、生成新的字库
下载地址:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
我这边选择的是jTessBoxEditor-2.5.0
下载并解压即可,打开就是双击train.bat即可
在这里插入图片描述
备注:如果运行不了,先查看一下是否有java环境,没有的话,则需要先安装java虚拟环境,如安装open jdk等。
在这里插入图片描述

二、训练步骤

1.准备训练素材

图片格式必须为tif格式的,如果是bmp格式的,可以先通过windows自带的画图工具来另存为tif格式
在这里插入图片描述
在这里插入图片描述

2.合成tiff文件

打开jTessBoxEditor,在Tools–>Merge TIFF 然后选择准备好的所有tif图片(注意:全部选中),然后点击打开,然后输入要保存的文件名称,如ahTest,点击保存,这样我们就将多张tif图片merge到了一个文件里面了,如ahTest.tif
在这里插入图片描述
在这里插入图片描述

3.生成box

打开cmd.exe窗口,输入如下指令生成box:
tesseract F:\A.H_OCR\trainOCR\tifMerge\ahTest.tif F:\A.H_OCR\trainOCR\tifMerge\ahTest batch.nochop makebox
备注:
输入目录为 F:\A.H_OCR\trainOCR\tifMerge\ahTest.tif
输出目录为 F:\A.H_OCR\trainOCR\tifMerge\ahTest (在此目录下生成名为ahTest.box的文件,该文件记录了识别出来的每个字和它对应的位置坐标)
在这里插入图片描述

4.纠正box内容

双击train.bat,打开jTessBoxEditor工具,点击Box Editor,然后open打开ahTest.tif(确保ahTest.box文件在同目录)。通过右上角的X,Y,W,H对每个需要改正的字符进行调整,注意调整好后别忘记保存 ,可以每次纠正后都点击一下save。
在这里插入图片描述

5.生成lstmf文件

利用.tif和.box文件生成.lstmf文件,打开cmd.exe,输入一下命令:
tesseract F:\A.H_OCR\trainOCR\tifMerge\ahTest.tif F:\A.H_OCR\trainOCR\tifMerge\ahTest.box --psm 6 lstm.train
在这里插入图片描述
备注参数含义:
ahTest.tif 上一步生成的.tif 格式的文件
ahTest指明要生成的.lstmf文件的名称
-l eng 表示用到的语言
–psm 6 表示采用的识别模式,通常6 效果会好些
运行后工作目录会多出一个ahTest.lstmf文件

在这里插入图片描述

6.提取.lstm文件

从已有的.traineddata中提取.lstm文件,将下载好的.traineddata文件拷贝到工作目录,我这里是eng.traineddata,命令行工具执行:
combine_tessdata -e tessdata\eng.traineddata eng.lstm
在这里插入图片描述
备注:如果出现读取失败
可以先cd 到ocr目录
比如我的安装在d盘先输入d: 回车 然后cd D:\Program Files\Tesseract-OCR 回车 然后在输入
combine_tessdata -e tessdata\eng.traineddata eng.lstm
在这里插入图片描述
eng.lstm也可以放置到我们选择的位置
combine_tessdata -e tessdata\eng.traineddata F:\A.H_OCR\trainOCR\tifMerge\eng.lstm

7.设置.lstm文件路径

在这里插入图片描述

8.训练并生成traindata

在工作目录创建output子目录,使用lstmtraining命令开始训练,这一步生成output_checkpoint文件:
lstmtraining.exe --model_output="F:\A.H_OCR\trainOCR\tifMerge\output\output "
–continue_from=“F:\A.H_OCR\trainOCR\tifMerge\eng.lstm”
–train_listfile=“F:\A.H_OCR\trainOCR\tifMerge\eng.trainingfile.txt”
–traineddata=“F:\A.H_OCR\trainOCR\tifMerge\eng.traineddata” --debug_interval -1 --max_iterations 5000 --target_error_rate 0.01
注意路径冒号不要有空格
–modeloutput 模型训练输出的路径
–continue_from 训练从哪里继续,这里指定从上面提取的 eng.lstm文件,
–train_listfile 指定上一步创建的文件的路径
–traineddata 指定.traineddata文件的路径
–debug_interval 当值为-1时,训练结束,会显示训练的一些结果参数
–max_iterations 指明训练遍历次数
–target_error_rate 0.01 期望错误率
此时命令窗口中会有滚动的训练历程,这一步操作比较耗费时间。
在这里插入图片描述
训练结束后,在output文件夹中会生成i一个output_checkpoint文件和多个类似output0.012_3.checkpoint的.checkpoint文件。
将checkpoint文件和.traineddata文件合并成新的.traineddata文件
lstmtraining --stop_training --continue_from=“F:\A.H_OCR\trainOCR\tifMerge\ output\output_checkpoint”
–traineddata=“F:\A.H_OCR\trainOCR\tifMerge\ eng.traineddata” --model_output=“F:\A.H_OCR\trainOCR\tifMerge\output \ahTest1.traineddata”
参数含义:
–stop_training 停止训练
–traineddata=eng.traineddata 训练使用的字体
–continue_from=“F:\A.H_OCR\trainOCR\tifMerge\ output\output_checkpoint”
–model_output=“F:\A.H_OCR\trainOCR\tifMerge\output \ahTest1.traineddata” 生成字体文件的traineddata目录及文件名称
在这里插入图片描述


测试应用

打开cmd 输入 ,可以先用eng看看识别效果,然后用我们训练的在看看效果,如下图所示,使用eng训练数据
tesseract F:\A.H_OCR\trainOCR\Dst\3\4.bmp stdout –l eng –psm 6
结果:0rr
tesseract F:\A.H_OCR\trainOCR\Dst\3\4.bmp stdout –l ahTest1 –psm 6
结果:0mL 还是有效果的。
在这里插入图片描述

参考

Tesseract-OCR 5.0LSTM训练流程
https://www.cnblogs.com/nayitian/p/15240143.html
Tesseract-OCR5.0字体训练以及提高准确率、提升训练效率的方法
https://blog.csdn.net/juzicode00/article/details/121538270?spm=1001.2101.3001.4242.1&utm_relevant_index=3

  • 64
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值