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.rhkb.cn/news/359538.html

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

相关文章

【Day02】0基础微信小程序入门-学习笔记

文章目录 模板与配置学习目标WXML 模板语法1.数据绑定(类似于 Vue2 )2. 事件绑定3. 条件渲染4.列表渲染 WXSS模板样式1. rpx尺寸单位2.样式导入3. 全局样式和局部样式 全局配置1. window2. tabBar 页面配置网络数据请求总结 持续更新~ 模板与配置 学习目…

Databend 开源周报第 149 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 支持递归公共表…

Nvidia Isaac Sim图编程OmniGraph 入门教程 2024(6)

Nvidia Isaac Sim 入门教程 2024 版权信息 Copyright 2023-2024 Herman YeAuromix. All rights reserved.This course and all of its associated content, including but not limited to text, images, videos, and any other materials, are protected by copyright law. …

创建一个Django项目

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 本小节我们将开始讲解如何使用Django创建一个项目,步骤如下: (1)首先在D盘(读者可以根据…

Java基础:IO流

目录 一、定义 1.引言 2.分类 (1)按照流的方向分 (2)按操作文件的类型分 3.体系结构 二、字节流(以操作本地文件为例) 1. FileOutputStream 类 (1)定义 (2&am…

使用 Iceberg、Tabular 和 MinIO 构建现代数据架构

现代数据环境需要一种新型的基础架构,即无缝集成结构化和非结构化数据、轻松扩展并支持高效的 AI/ML 工作负载的基础架构。这就是现代数据湖的用武之地,它为您的所有数据需求提供了一个中心枢纽。然而,构建和管理有效的数据湖可能很复杂。 这…

PR模板 | RGB特效视频标题模板Titles | MOGRT

RGB特效视频标题模板mogrt免费下载 4K分辨率(38402160) 支持任何语言 友好的界面 输入和输出动画 快速渲染 视频教程 免费下载:https://prmuban.com/39055.html 更多pr模板视频素材下载地址:https://prmuban.com

不翻墙安装yolov8环境下的RT-DETR并实现PCB表面缺陷检测

目录 一、新建conda环境二、安装yolov8环境1.克隆安装包2.安装依赖包3.测试模型 任务2:基于RT-DETR实现PKU-PCB表面缺陷检测数据准备 数据增强测试 总结 一、新建conda环境 创建并激活conda环境: 在conda创建一个名为yolov8的新环境,并在其中…

外贸行业 - 收汇日期

“收汇日期”指的是外贸业务中,出口方从进口方收到货款的具体日期。在外贸交易中,特别是使用信用证(Letter of Credit, L/C)、电汇(Telegraphic Transfer, T/T)、付款交单(Documents against Pa…

《2024云安全资源池 能力指南》

《2024云安全资源池 能力指南》这份报告不仅梳理了云安全资源池的发展历程,还深入探讨了其在当前云计算环境下的重要性和必要性。报告详细分析了云安全资源池的市场需求、技术架构、关键技术以及行业应用案例,为政企用户提供了全面的云安全解决方案。通过资料收集、问卷调研、企…

深入了解 GPT-4 和 ChatGPT 的 API---OpenAI Playground

文章目录 基本概念OpenAI API 提供的可用模型在 OpenAI Playground 中使用 GPT 模型 掌握GPT-4 和 ChatGPT 的 API 的使用方法,以便有效地将它们集成到 Python 应用程序中。首先,需要了解 OpenAI Playground。这将使你在编写代码之前更好地了解模型。接着…

如何将一个web端程序打包成一个pc端程序(exe文件)?

如何将一个Web端程序打包成一个PC端程序,例如一个可执行的EXE文件,是许多开发者常见的需求。下面将详细解释如何使用Nativefier工具将Web端程序打包成PC端程序的具体步骤。 目录 下载并安装Node.js验证Node.js和npm的安装安装Nativefier使用Nativefier打…

鸿蒙Harmony角落里的知识:从ECMA规范到ArkTS接口(一)

前言: 在深入理解和使用ArkTS中的数组操作之前,我们有必要先了解ECMAScript(ECMA)规范中的规定。ECMA规范是JavaScript语言的官方标准,而ArkTS作为JavaScript的超集,也遵守了这些规定。本系列文章旨在探讨…

学期结束如何发布期末成绩?

当期末的试卷最后一张被收起,当教室里的喧嚣逐渐沉寂,学生们的心中充满了对成绩的期待与忐忑。期末成绩,关乎着学生的心情,更关系到他们的未来学习动力。那么,如何在保护学生隐私的同时,高效地公布成绩呢&a…

文件怎么加密?电脑文件加密,分享5个实用方法

通常情况下,人们对手机数据的保护比对电脑数据更为重视。许多人使用指纹和密码来防止他人窥视聊天记录和照片。然而,电脑上的数据却常常被忽视。大多数用户仅设置了电脑登录密码,认为这样就足以保护电脑和其中的文件。然而如果你也是这样认为…

chatglm系列知识

一、目录 chatglm 是什么语言模型与transformer decoder 的区别解释prefix LM与Cause LMchatglm(prefix LM)与decoder-only LM 核心区别glm 架构chatglm 预训练方式chatglm 微调chatglm与chatglm2、chatglm3的区别chatglm 激活函数采用gelu, 为什么chat…

办理北京公司注册地址异常变更要求和流程

在北京注册公司时选择注册地址是非常重要的一环,注册地址不仅体现在营业执照上,在网上也有公示信息,一般选用的是商用地址和商住两用地址,在公司经营过程中,因为经营需要变更注册地址,也要依法变更&#xf…

详解Spring AOP(一)

目录 1. AOP概述 2.Spring AOP快速入门 2.1引入AOP依赖 2.2编写AOP程序 3.Spring AOP核心概念 3.1切点(PointCut) 3.2连接点(Join Point) 3.3通知(Advice) 3.4切面(Aspect) …

时间?空间?复杂度??

1.什么是时间复杂度和空间复杂度? 1.1算法效率 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称为空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空…

CentOS 8.5 - 配置ssh的免密登录

文章目录 生成ssh密钥公钥内容放入服务器 生成ssh密钥 在本地主机安装 ssh工具,并生成公钥、私钥。 # 命令行输入 ssh-keygen -r rsa# 会在当前用户的家目录下生成一个.ssh目录公钥内容放入服务器 将上一步生成的id_rsa.pub公钥的内容复制到远程服务器 # 编辑文…