Tesseract-OCR 5.0LSTM训练

准备工作

1.安装tesseract5.0版本

2.配置tesserac环境变量

3.jTessBoxEditor(需要java环境)

很多博客已有详细教程,不再赘述,本文以训练为主

最终文件目录:

全网最全最细Tesseract-OCR 5.0LSTM训练_人工智能

--tif 需要训练的tif文件

--lstmf 后文会讲到生成的方式

--txt 后文会讲到生成的方式

--box 后文会讲到生成的方式

--lstm 后文会讲到生成的方式

--traineddata 简体中文包后文会有下载方式

--output 文件夹存放训练内容

规范

命名:按照官方的命名规范,不然会出现不明问题

tif文件命名格式[lang].>[fontname].exp[num].tif

tif命名规则:lang为语言名称,fontname为字体名称,num为图片序号,方便记录训练样本;

例本次需要训练自定义字库znzd、字体名normal,则命名为znzd.normal.exp0.tif

特别注意:5.0语法是和4.0有区别的

后文都以znzd.normal.exp0为文件名字,根据自己实际情况替换

代码中不能包含回车

1.生成.box文件

tesseract znzd.normal.exp0.tif znzd.normal.exp0 -l chi_sim --psm 6 lstmbox
  • 1.

语法: tesseract [tif文件名字] [生成文件名(一般情况与tif名字一样注意没有后缀)] -l [语言库] --psm [psm值] lstmbox

--chi_sim:中文语言库(可替换自己的语言库)

psm

0 = Orientation and script detection (OSD) only.

1 = Automatic page segmentation with OSD.

2 = Automatic page segmentation, but no OSD, or OCR. (not implemented)

3 = Fully automatic page segmentation, but no OSD. (Default)

4 = Assume a single column of text of variable sizes.

5 = Assume a single uniform block of vertically aligned text.

6 = Assume a single uniform block of text.

7 = Treat the image as a single text line.

8 = Treat the image as a single word.

9 = Treat the image as a single word in a circle.

10 = Treat the image as a single character.

11 = Sparse text. Find as much text as possible in no particular order.

12 = Sparse text with OSD.

13 = Raw line. Treat the image as a single text line

中文翻译

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

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

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

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

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

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

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

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

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

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

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

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

12 = 带 OSD 的稀疏文本。

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

2.jTessBoxEditor矫正

注意:box坐标框的范围5.0是从单个文字改成一整行,需要以一行作为矫正,不是4的时候拆成一个个框,不然会无限循环打印Compute CTC targets failed! 又浪费了训练时间

具体官方说明: github.com/tesseract-o…

3.生成LSTMF文件

tesseract znzd.normal.exp0.tif znzd.normal.exp0 -l chi_sim --psm 6 lstm.train
  • 1.

语法: tesseract [tif文件名] [生成文件名(一般情况与tif名字一样注意没有后缀)] -l [语言库] --psm [psm值] lstm.train

--chi_sim:中文语言库(可替换自己的语言库)

4.提取LSTM文件

从 github.com/tesseract-o…下载所需语言的.traineddataw文件,放入同级文件夹,此为chi_sim语言(第一次用tesseract\tessdata目录下的chi_sim.traineddata报错了,找了很多博客 建议去 /tessdata_best下载)

combine_tessdata -e chi_sim.traineddata chi_sim.lstm
#此例是下载后文件方在根目录下执行 所以没带路径 也能是 -e E:\xx\chi_sim.traineddata
  • 1.
  • 2.

语法: combine_tessdata -e [语言.traineddata] [文件名称(也可以路径+文件名称)]

初次可以用chi_sim 后续可替换自己的自定义字体

5.创建txt文件

名称为:znzd.normal.exp0.list.text(可根据之前tif取名的名字命名)

内容: E:\xxx\znzd.normal.exp0.lstmf(第三步自己生成的LSTMF文件路径)

6.训练

lstmtraining   --model_output E:\xxx\output\  --continue_from E:\xxx\chi_sim.lstm  --traineddata   E:\xxx\chi_sim.traineddata --train_listfile  E:\xxx\znzd.normal.exp0.list.txt  --max_iterations 0     --target_error_rate 0.001
  • 1.

语法:

–model_output 模型训练输出的路径(模型训练文件,会自动生成output_checkpoint文件可以用于后期训练)

–continue_from 训练从哪里开始(可以是第四步提取的lstm文件路径。也可以是上次训练的output_checkpoint文件路径)

–train_listfile 第五步创建的TXT文件路径ch.simhei.exp0.list.txt文件路径

–traineddata .traineddata文件的路径(此例以chi_sim.traineddata)

–debug_interval 当值为-1时,训练结束,会显示训练的一些结果参数,此参数可略去

–max_iterations 指明训练遍历次数 最大是9000,0 表示无限迭代(类型:整数默认值:0)

–target_error_rate 0.01 训练至错误率低于0.01终止

如果一切配置成功,训练会持续一段时间请耐心等待

7.合并训练 生成.traineddata文件

训练完成后合并结果.traineddata

lstmtraining --stop_training --continue_from="E:\xxx\output\output_checkpoint" --traineddata="E:\xxx\chi_sim.traineddata" --model_output="E:\xxx\znzd.traineddata"
  • 1.

语法:

stop_training 默认要有

–continue_from 第6步model_output输出路径的output_checkpoint文件路径

–traineddata 已有.traineddata文件的路径

–model_output 输出训练好的语言包的路径 路径+语言包名.traineddata

8.查看识别结果

把新语言traineddata文件放入\tesseract\tessdata文件夹下

tesseract znzd.normal.exp1.tif result -l znzd
#tesseract 图片名称 生成的结果文件的名称 -l 新语言名称

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

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

相关文章

Swift Combine — Notification、URLSession、Timer等Publisher的理解与使用

Notification Publisher 在Swift的Combine框架中,可以使用NotificationCenter.Publisher来创建一个能够订阅和接收通知的Publisher。 // 创建一个订阅通知的Publisher let notificationPublisher NotificationCenter.default.publisher(for: Notification.Name(&…

OpenTenBase入门

什么是OpenTenBase OpenTenBase 是一个提供写可靠性,多主节点数据同步的关系数据库集群平台。你可以将 OpenTenBase 配置一台或者多台主机上, OpenTenBase 数据存储在多台物理主机上面。数据表的存储有两种方式, 分别是 distributed 或者 re…

让我来告诉初学者到底什么叫嵌入式系统?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!我们在刚刚开始学习电子学…

通过git命令查询某个用户提交信息

要查询某个用户通过 Git 提交了多少行代码,可以使用以下步骤和命令来实现。这些命令将统计该用户的添加和删除的代码行数。 1、切换到你的 Git 仓库: cd /path/to/your/repositorygit命令结果: 2、查询所有用户: git log --pr…

国外开源字典集(wordlists)

Assetnote Wordlists Wordlists that are up to date and effective against the most popular technologies on the internet.https://wordlists.assetnote.io/

opencv c++ 检测图像尺寸大小,标注轮廓

1. 项目背景 本项目旨在开发一个图像处理程序,通过使用计算机视觉技术,能够自动检测图像中物体的尺寸并进行分类。项目利用了开源的计算机视觉库 OpenCV,实现了图像的灰度处理、二值化、轮廓检测、边界框绘制以及尺寸分类等功能。通过这些功…

在智星云租用算力时,如何选择适合的GPU?

智星云平台分配GPU、CPU、内存的机制为:按租用的GPU数量成比例分配CPU和内存,算力市场显示的CPU和内存均为每GPU分配的CPU和内存,如果租用两块GPU,那么CPU和内存就x2。此外GPU非共享,每个实例对GPU是独占的。 一. CPU…

NSSCTF-Web题目12

目录 [SWPUCTF 2021 新生赛]finalrce 1、题目 2、知识点 3、思路 [UUCTF 2022 新生赛]ez_rce 1、题目 2、知识点 3、思路 [羊城杯 2020]easycon 1、题目 2、知识点 3、思路 [SWPUCTF 2021 新生赛]finalrce 1、题目 2、知识点 命令执行,tee命令 3、思路…

深度学习算法informer(时序预测)(三)(Encoder)

一、EncoderLayer架构如图(不改变输入形状) 二、ConvLayer架构如图(输入形状中特征维度减半) 三、Encoder整体 包括三部分 1. 多层EncoderLayer 2. 多层ConvLayer 3. 层归一化 代码如下 class AttentionLayer(nn.Module):de…

淘宝扭蛋机小程序:互联网时代下行业的发展动力

近几年,扭蛋机在潮玩市场风靡,与各类IP合作,推出各种新颖有趣的扭蛋商品,吸引了众多的IP粉丝,他们会通过扭蛋机进行抽奖,获得喜欢的商品。 目前,移动应用程序不断升级优化,“互联网…

idea中的git在clone文件提示 filename too long

一 解决版本 1.1 问题描述以及解决办法 当在Windows系统下使用Git时出现“filename too long”错误: git config --system core.longpaths true

思科ospf+rip重发布配置命令

——————————————————————————————————————————— 基础配置 R1 Router>en #进入配置模式 Router#conf #进入配置模式 Router(config)#h…

如何在 MySQL 中创建和使用事务?

目录 1. 环境准备 2. 创建事务 3. 事务执行 4. 事务撤消 5. 总结 事务是数据库区别于文件系统的重要特征之一,当我们有了事务就会让数据库始终保持一致,同时我们还能通过事务机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会…

人工智能在肿瘤检测以及癌症早筛中的最新研究|顶刊速递·24-06-21

小罗碎碎念 推文主题:人工智能在癌症检测以及早筛中的最新研究进展 之前有一篇推文介绍了哈佛发表的3D病理,当时应该有不少老师/同学对于数据的获取是有些懵的,那么今天你在第一篇文章中或许能找到答案。 一直看我推送的,并且不跳…

骁龙相机启动流程分析

一、骁龙相机启动流程分析 1. 相机启动阶段关键TAG 关键字解释deliverInputEvent点击事件bindApplicationApp 冷启动 创建applicationactivityStart创建camera activityactivityResumecamera UI界面开始显示connectDevicecameraFWK 开始链接并open sensorCameraHal::openSessio…

MySQL系列-安装配置使用说明(MAC版本)

1、前言 本文将介绍MySQL的安装配置以及基本语法操作说明 环境:mac 版本:MySQL 8.0.28 之前电脑安装卸载过,后面在装的时候遇到一些问题,用了四五天才解决,主要是参考 https://blog.csdn.net/zz00008888/article/deta…

大厂晋升学习方法一:海绵学习法

早晨 30 分钟 首先,我们可以把起床的闹钟提前 30 分钟,比如原来 07:30 的闹钟可以改为 07:00。不用担心提前 30 分钟起床会影响休息质量,习惯以后,早起 30 分钟不但不会影响一天的精力,甚至可能反而让人更有精神。早起…

SAP ScreenPersonas

https://developers.sap.com/mission.screen-personas.html 跟着这个练习做一遍就了解了Personas 访问SAP提供的Personas练习系统 申请用户 登录练习系统 随便找一个可以支持Personas的程序搞起来,比如IW51 执行后等它出现这个图标就可以开始了.

js中的window和Window

示例: window.name name; console.log(window.name) // name console.log(Window.name) // Window由此可见Window和window是有区别的。 console.log(Object.prototype.toString.call(Window)); // [object Function] console.log(Object.prototype.toString.c…

中服云产品远程运维系统

中服云产品远程运维系统主要针对设备售后市场服务的管理,利用工业物联网技术,一方面面向设备生产厂商,将分散的经销商、客户、销售出去的设备统一管理;另一方面面向设备使用厂家,实现设备实时运行监控;系统…