Tesseract5.4.0自定义LSTM训练

准备jTessBoxEditor,然后配置环境变量。

1、将图片转换成tif格式的,这里需要用画图工具另存为;

2、生成box文件

执行命令:

tesseract agv.normal.exp1.tif agv.normal.exp1 -l eng --psm 6 batch.nochop makebox

关于box文件的生成,对于Tesseract3可以使用makebox,但是对于Tesseract的lstm训练,需要使用lstmbox。否则再后面会报如下的错误。

生成lstmbox的命令如下:

D:\agvtest2>tesseract agv.normal.exp1.tif agv.normal.exp1 -l eng lstmbox

关于PSM的说明

0 = 仅方向和脚本检测 (OSD)。

1 = 自动页面分割,带 OSD。

2 = 自动页面分割,但无 OSD 或 OCR。(未执行)

3 = 完全自动页面分割,但无 OSD。(默认值)

4 = 假设一列文字大小可变。

5 = 假定垂直对齐的单个统一文本块。

6 = 假定单个统一的文本块。

7 = 将图像视为单一文本行。

8 = 将图像视为单个单词。

9 = 将图像视为圆圈中的单个单词。

10 = 将图像视为单个字符。

11 = 文本稀疏。不按特定顺序查找尽可能多的文本。

12 = 带 OSD 的稀疏文本。

13 = 原始行。将图像视为单行文本、

3、校正box文件中的信息

使用jTessBoxEditor打开tif文件。执行train.bat,打开jTexxBoxEditor.jar

校正完成后,一定要点保存。如下

关于box文件的内容,这里需要注意。它与tesseract3生成的box格式有所区别。

下面是tesseract5中识别的内容。

文档中说明了一行内容之后,必须标注一个结束行。

4、下载训练文件

从github仓下载traineddata_best类型的traineddata文件,可以选择eng.traineddata,用来初次训练字体;下载地址:https://github.com/tesseract-ocr/tessdata_best,下载后保存在当前工作目录下,另外拷贝一份到系统变量“TESSDATA_PREFIX”路径下,也即tesseract安装路径的tessdata\\文件夹下,这里一定要下载tessdata_best目录下面的,不能是tesssdata下面的,否则后面会报:

eng.lstm is an integer (fast) model, cannot continue training

这样的错误。

同时,将eng.traineddata文件复制一份到图片目录下,如下所示。

5、生成生成基于通用模型的lstm文件

D:\agvtest2>combine_tessdata -e eng.traineddata eng.lstm

可以看到目录下多了一个eng.lstm文件

6、生成lstmf文件

如果前面使用的是makebox生成的lstmf文件,需要将lstmf文件删除,重新执行一下生成listbox的命令。生成lstmf文件的执行命令:

tesseract agv.normal.exp1.tif agv.normal.exp1 --psm 6 lstm.train

可以看到目录下多了一个lstmf文件

7、设置.lstm文件路径

新建一个eng.trainingfile.txt文件,在文件中填写lstmf文件的完整路径。

8、开始训练

新建output目录,执行命令: 

D:\agvtest2>lstmtraining --model_output=output\agv.traineddata --continue_from="D:\agvtest2\eng.lstm" --train_listfile="D:\agvtest2\eng.trainingfile.txt" --traineddata="D:\agvtest2\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 期望错误率
此时命令窗口中会有滚动的训练历程,这一步操作比较耗费时间。

如果在第8步的时候报了“Compute CTC targets failed for D:\agvtest2\agv.normal.exp1.lstmf!”,需要检查一下box文件内容的格式,是否是采用listbox生成的,如果不是,重新生成一次,并重新校正内容,在重新生成lstmf文件。

命令执行成功后,看到如下的日志信息:

然后在output目录下生成了一些output_checkpoint文件,如下所示。

9、生成traineddata文件

执行命令:

D:\agvtest2>lstmtraining --stop_training --model_output=output\agv.traineddata --continue_from="D:\agvtest2\eng.lstm" --traineddata=eng.traineddata

–stop_training 停止训练

–traineddata=eng.traineddata 训练使用的字体,当前工作目录下

–continue_from="D:\agvtest2\eng.lstm" 中间文件名称

--model_output=output\agv.traineddata 生成字体文件的traineddata文件名称

可以看到,在output目录下生成了agv.traineddata文件。

10、测试训练的模型

将agv.traineddata文件拷贝到tesseract的tessdata目录下:

执行命令:

D:\agvtest2>tesseract 2.jpg result -l agv

如下所示:

输出了识别结果到result.txt文件中,但识别结果不准。

11、提升准确率

从前面的训练步骤可以看到,开始训练时需要用到一个已经存在的字体eng.traineddata,比如第5步抽取它的lstm文件、第9步的训练等。既然这个原始字体训练出来的新字体识别的准确率不高,很可能跟选择的这个初始字体有关,那是不是可以用我们训练好的新字体替代eng.traineddata再训练一次呢,这样产生的第2代的新字体是不是可以有更好地表现?如此迭代多次之后,得到第3代、第4代、第5代字体呢? 将eng.traineddata相关的内容替换为agv.traineddata,新生成的第2代字体取名为agv2,依次替代命令行里面的参数训练第2代字体,类似的方法再训练出第3、第4、第5代字体,将每一代字体都用测试集进行测试。

常见问题解决:

1、Deserialize header failed: D:\agvtest2\agv.normal.exp1.lstmf

这是因为在eng.trainingfile.txt文件中,lstmf文件路径的换行符问题,如下所示。

将其中的CR去掉,只保留LF。

最简单的解决办法是去掉2个换行符\r\n(CR LF)。 当使用多个lstmf文件训练时,每个文件名之间必须要保留一个换行符,则必须去掉\r(CR)符号,只保留\n(LF)。去掉的方式如下所示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/66196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 工作原理

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 工作原理 目录 Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle …

Windows系统安装Docker Desktop

文章目录 注意事项安装步骤官网下载软件安装到其它盘符操作(如果就想安装到C盘可以跳过这个步骤, 直接执行文件)等待出现软件安装界面Windows系统的配置软件的一些必要设置(以下设置需要点击apply才能生效,如果点不了,那就是安装后,出现了错误…

从零开始RTSP协议的实时流媒体拉流(pull)的设计与实现(一)

此文为系列文章,此系列主要讲解RTSP客户端的拉流及播放,文章持续更新,会从rtsp的基本协议讲起,如何一步步实现音视频的拉流过程,包括一系列涉及到的协议,rtsp,sdp, rtp(本…

特殊车辆检测数据集VOC+YOLO格式2730张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2730 标注数量(xml文件个数):2730 标注数量(txt文件个数):2730 …

LookingGlass使用

背景 Looking Glass 是一款开源应用程序,可以直接使用显卡直通的windows虚拟机。 常见环境是Linux hostwindows guest,基本部署结构图: 编译 git clone --recursive https://github.com/gnif/LookingGlass.git编译client mkdir client/b…

Ceph 手动部署(CentOS9)

#Ceph手动部署、CentOS9、squid版本、数字版本19.2.0 #部署服务:块、对象、文件 一、部署前规划 1、兼容性确认 2、资源规划 节点类型节点名称操作系统CPU/内存硬盘网络组件安装集群节点CephAdm01CentOS94U/8GOS:40G,OSD:2*100GIP1:192.169.0.9(管理&集群),IP2:…

如何优化亚马逊广告以提高ROI?

在竞争激烈的亚马逊市场中,优化广告以提高投资回报率(ROI)是卖家的关键任务。以下是一些实用的策略: 一、精准的关键词研究与选择 深入了解产品特性和目标受众 详细分析产品的功能、用途、优势和适用人群。例如,如果你…

CSS学习记录23

CSS用户界面 CSS调整大小 resize 属性规定元素是否应&#xff08;以及如何&#xff09;被用户调整大小。下例只允许用户调整 <div> 元素的宽度&#xff1a; div {resize: horizontal;overflow: auto; } 下例只允许用户调整 <div> 元素的高度&#xff1a; div {…

Linux菜鸟级常用的基本指令和基础知识

前言:很多Linux初学者都会头疼于指令太多记不住&#xff0c;笔者刚学习Linux时也是如此&#xff0c;学习Linux指令时&#xff0c;学了后面的指令&#xff0c;前面的指令也会忘的差不多了&#xff0c;针对于以上这些情况&#xff0c;笔者今天来分享一篇Linux菜鸟级的常用指令的博…

【数据仓库】hive on Tez配置

hive on Tez 搭建 前提是hive4.0hadoop3.2.2数仓已搭建完成&#xff0c;现在只是更换其执行引擎 为Tez。搭建可参考【数据仓库】hive hadoop数仓搭建实践文章。 Tez 下载 下载地址 https://archive.apache.org/dist/tez/ 官网地址 https://tez.apache.org/releases/apac…

用python编写一个放烟花的小程序

import pygame import random # 代码解释及使用说明&#xff1a; # 首先&#xff0c;导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制&#xff0c;random 用于生成随机数。 # 初始化 pygame&#xff0c;并设置屏幕尺寸为 800x600 像素&#xff0c;设置窗口标题为…

【管道——二分+区间合并】

题目 思路 区间合并 1、按照左端点排序2、遍历窗口&#xff0c;若窗口非法&#xff0c;继续遍历&#xff1b;否则执行33、若是第一个窗口&#xff0c;设定合并结果初值&#xff0c;判断结果左端点是否造成“起点过大”&#xff0c;是&#xff0c;FALSE退出&#xff1b;否则执行…

语雀导入md文件图片丢失

经常被困扰是&#xff0c;从语雀导入md文件&#xff0c;即使知道把md文件和本地图片文件夹打包成zip进行导入&#xff0c;还是出现图片丢失 解决方式1&#xff1a; 把图片和md文件放到同个目录下&#xff0c;重新打包成zip文件&#xff0c;导入后有图片了 解决方式2&#xf…

单片机--51- RAM

1.概览某个51单片机对空间区域的划分&#xff1a; 2.RAM被分配的区域是256bytes&#xff0c; 通常8051单片机ram是128bytes 8052的ram是256bytes&#xff08;其中高128位的地址和sfr区域地址重合&#xff0c;物理区域不同&#xff09; extern uint32_t alarm_cnt_1; uint32…

145页PPT智慧矿山整体规划建设方案

本资料收录在【智慧方案文库】知识星球&#xff08;截止目前共9500份&#xff0c;PPTWORD超过7000份&#xff0c;持续上传中......&#xff09; 68页PPT丨5G智能矿山解决方案 77页PPT智慧矿山整体规划建设方案

NET拓展配置

IP地址的分类 ABC---单播地址 私网IP地址 A&#xff1a;10.0.0.0 -10.255.255.255 /8 B:172.16.0.0-172.31.255.255 /16--16b类网段 C:192.168.0.0-192.168.255.255 -- Ip地址数量不够 所有华为设备和NAT相关的配置都是在边界设备的出接口上配置 静态NAT 因为网络划分…

云效流水线使用Node构建部署前端web项目

云效流水线实现自动化部署 背景新建流水线配置流水线运行流水线总结 背景 先来看看没有配置云效流水线之前的部署流程&#xff1a; 而且宝塔会经常要求重新登录&#xff0c;麻烦的很 网上博客分享了不少的配置流程&#xff0c;这一篇博客的亮点就是不仅给出了npm命令构建&…

api接口技术开发系列如何调用电商平台的按图搜索商品API?

不同电商平台的按图搜索商品 API 调用方法大致相似&#xff0c;以下是一般的调用步骤&#xff1a; 注册与获取权限 注册账号&#xff1a;在相应的电商开放平台注册成为开发者&#xff0c;如淘宝平台、1688 平台等。创建应用&#xff1a;登录后创建应用&#xff0c;填写应用的相…

如何安装适配pytorch版本的torchvision

一、对照版本 版本对照pytorch/vision: Datasets, Transforms and Models specific to Computer Vision 二、下载对应版本的torchvision 下载连接1download.pytorch.org/whl/torch_stable.html 下载连接2download.pytorch.org/whl/cu110/torch_stable.html 笔者认为1会比2更…

【数据结构-堆】力扣2530. 执行 K 次操作后的最大分数

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你的 起始分数 为 0 。 在一步 操作 中&#xff1a; 选出一个满足 0 < i < nums.length 的下标 i &#xff0c; 将你的 分数 增加 nums[i] &#xff0c;并且 将 nums[i] 替换为 ceil(nums[i] / 3) 。 返回在 恰好…