Windows上基于Tesseract OCR5.0官方语言库的LSTM字库训练

系列文章目录

Tesseract OCR引擎


文章目录

  • 系列文章目录
  • 前言
  • 一、LSTM字库训练是什么?
  • 二、使用步骤
    • 1. 环境准备
      • 1.1下载Tesseract 程序并安装
      • 1.2下载Tesseract 训练字库
      • 1.3下载工具jTessBoxEditor
    • 2. LSTM训练
      • 2.1 将要训练的图片(jpg/tif)合并成一个文件
      • 2.2 生成box文件
        • 2.2.1 通过命令生成box文件
      • 2.3 字符校正
      • 2.3 生成.lstmf文件
      • 2.4 根据官方的.traineddata中提取.lstm文件
      • 2.5 创建训练用的.txt文件
      • 2.6 训练
      • 2.7 生成新的语言库
      • 2.8 检验


前言

TesseractOCR官方提供了训练好的标准语言包(traineddata文件,涵盖多国语言,每个语言一个库文件)。某些特定文字(LED灯的数字等)在官方语言库识别效果不好的情况下,还可以自己训练语言库。本文讲述基于官方语言库的LSTM字库训练方法和步骤。


一、LSTM字库训练是什么?

LSTM字库训练是指使用长短期记忆(LSTM)神经网络模型对特定文本或字符集进行训练,以识别和分类其中的字符或单词。通过训练,LSTM模型可以学习到文本的内在特征和模式,从而在给定的文本数据集上提高OCR识别的准确率。

在训练过程中,LSTM模型将文本数据作为输入,通过反向传播算法不断调整模型的参数,以最小化预测错误。训练的目标是使得模型能够正确识别并输出给定文本中的每个字符或单词。一旦训练完成,就可以将训练好的模型应用于新的文本数据,实现高效的OCR识别。

总之,LSTM字库训练是指使用LSTM模型对特定文本集进行训练,以提高OCR识别的准确率。

二、使用步骤

1. 环境准备

1.1下载Tesseract 程序并安装

官方没有最新的window安装程序。不过官网上有提供第三方的下载渠道。
有64位和32位的版本,根据需要下载最新的版本并安装。
安装完成需把安装目录添加到环境变量。默认安装目录(C:\Program Files (x86)\Tesseract-OCR)

官方下载文档:https://tesseract-ocr.github.io/tessdoc/Downloads.html
官方推荐下载渠道:https://digi.bib.uni-mannheim.de/tesseract/


1.2下载Tesseract 训练字库

用LSTM训练字库的话,一定要用 tessdata_best 字库。需要哪个语言,下载哪个语言库。
比如中文简体是chi_sim.traineddata;英语是eng.traineddata
官方下载地址


1.3下载工具jTessBoxEditor

网址:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
下载后将之解压缩到C盘某个目录,这个工具是用来训练样本用的(错误标注并更正)。

该工具是用Java开发的,需要安装jdk环境
网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2. LSTM训练

2.1 将要训练的图片(jpg/tif)合并成一个文件

打开jTessBoxEditor解压缩的目录,双击执行jTessBoxEditorFX.jar或者train.bat
窗口打开后,工具栏上依次Tools->Merge Tiff ,选中需要训练的图片,指定目录和命名合成后的文件。合成后,会弹出如下Msg提示合并成功。然后检查指定目录下是否生成了合并好的tif文件(保存多种图片的信息)。
在这里插入图片描述

目录:C:\Users\shen_pengfei.pfu\Desktop\LSTMTrain
合成文件:eng.normal.exp1.list.tif

2.2 生成box文件

2.2.1 通过命令生成box文件

在合并后的tif文件所在目录启动cmd,输入以下命令,生成box文件eng.normal.exp1.list.box(保存图像中文字的位置信息,比如坐标、宽、高等)。
box 文件名和tif 文件名需要一致,且位于同一目录

tesseract eng.normal.exp1.list.tif eng.normal.exp1.list -l eng lstmbox

命令格式:tesseract tif filename.tif box filenam -l lang lstmbox

在这里插入图片描述

2.3 字符校正

打开jTessBoxEditor工具,然后依次Box Editor->Open,选择eng.normal.exp1.list.tif文件,右边显示原稿识别的区域,以行位单位;坐边对应识别的结果,以字符位单位。在左边区域依次对识别错误的每个字符进行校正,同时如果有减少或增加的字符,也要在左边区域进行相应的增加或删除。
在这里插入图片描述
比如红色框选的地方,***识别成了BX,既识别错误,也减少了一个字符。校正后,首先更改位正确字符,同时追加一个字符。
注意追加字符的时候,相应的坐标也要更改
在这里插入图片描述
一页的内容都校正完后,保存本页更改。然后点击下一页(黄色框选)继续校正。

2.3 生成.lstmf文件

在合并后的tif文件和box文件所在目录启动cmd,输入以下命令,生成eng.normal.exp1.list.lstmf文件用于训练。

tesseract eng.normal.exp1.list.tif eng.normal.exp1.list -l eng --psm 6 lstm.train

命令格式 tesseract ‘tif filename’.tif lstmf filename -l lang分割模式 lstm.train

在这里插入图片描述

分割模式汇总,尝试不同分割模式,精度有差异。

0    Orientation and script detection (OSD) only.
1    Automatic page segmentation with OSD.
2    Automatic page segmentation, but no OSD, or OCR.
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,

2.4 根据官方的.traineddata中提取.lstm文件

将官方的traineddata文件复制到tif同目录,在该目录启动cmd,输入以下命令,生成.lstmf文件。我这里是用eng.traineddata生成eng.lstmf

combine_tessdata -e eng.traineddata eng.lstm

注意:如果需要其他语言包,请自行下载。

2.5 创建训练用的.txt文件

在tif同目录下创建eng.training.path.txt文件,里面内容是.lstmf文件的完整路径。

在这里插入图片描述

2.6 训练

在tif同目录下创建output子目录。然后该目录cmd,输入以下命令,进行训练。此步比较耗时,耐心等待。最好会在output文件夹下生成一堆checkpoint文件。

lstmtraining --model_output=“C:\Users\xxxx\Desktop\LSTMTrain\output”
–continue_from=“C:\Users\xxxx\Desktop\LSTMTrain\eng.lstm” --train_listfile=“C:\Users\xxxx\Desktop\LSTMTrain\eng.training.path.txt”
–traineddata=“C:\Users\xxxx\Desktop\LSTMTrain\eng.traineddata” --debug_interval -1 --max_iterations 800

参数含义:
–model_output 指定训练输出路径
–continue_from 训练base,这里指定 eng.lstm文件
–train_listfile 指定上一步创建的文件的路径
–traineddata 指定.traineddata文件的路径
–debug_interval 当值为-1时,训练结束,会显示训练的一些结果参数
–max_iterations 指定训练遍历次数

在这里插入图片描述

2.7 生成新的语言库

输入以下命令,将checkpoint文件和.traineddata文件合并成新的.traineddata文件

eddata=“C:\Users\xxxx\Desktop\LSTMTrain\eng.traineddata”
–model_output=“C:\Users\xxxx\Desktop\LSTMTrain\output\engtrain.traineddata”

参数含义:
–stop_training 默认要有的
–continue_from output_checkpoint文件路径
–traineddata 官方的.traineddata文件的路径
–model_output 新的.traineddata 输出的路径

在这里插入图片描述

2.8 检验

用新生成的engtrain.traineddata文件识别原来的图像,看是否改善。
实测下来,虽然校正的图像再识别的时候,得到了改善,但是如果训练的原稿不够多的话,对没有训练的图像有较大劣化效果。所以一般不建议自己训练字库,官方的字库基本足够用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python】AppUI自动化—appium自动化元素定位、元素事件操作(17)下

文章目录 前言一.Appium 元素定位1.定位方式种类2.如何定位2.1 id定位2.2 className定位2.3 content-desc 定位2.4 Android Uiautomator定位4.1 text定位4.2 text模糊定位4.3 text正则匹配定位4.4 resourceId定位4.5 resourceId正则匹配定位4.6 className定位4.7 className正则…

QT项目|时间服务器架构

目录 一、 创建新UI界面的标题 二、 创建服务器运行图标 2.1 查找图标,并截图 2.2 加入QT资源库 三、编辑UI界面 3.1 根据要求,绘制UI界面 3.2 对控件进行命名 3.3 加入Group Box进行美化 四、 按钮操作设置 4.1 QT加入网络 4.2 转到槽&…

NetCore独立发布部署到Linux服务器

1、准备一台服务器 2核2G服务器足够 系统环境:Alibaba Cloud 3 或者其他版本的Linux操作系统都行 2、安装宝塔 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec 安装后…

高德地图添加信息弹窗,信息弹窗是单独的组件

//弹窗组件 <template><el-card class"box-card" ref"boxCard" v-if"showCard"><div slot"header" class"clearfix"><div class"title">{{ model.pointName }}</div><div class…

Nacos使用指南

Nacos使用指南 1.认识Nacos Nacos是SpringCloudAlibaba的一个组件&#xff0c;遵循SpringCloud规范 2.Nacos的优势 1.支持服务端主动检测服务提供者状态。临时实例采用心跳检测&#xff0c;非临时实例采用主动检测 2.Nacos支持服务列表变更消息推送&#xff0c;消息更加及…

CCLink转Modbus TCP网关_CCLINK参数配置

CCLink转Modbus TCP网关&#xff08;XD-ETHCL20&#xff09;&#xff0c;具有CCLINK主从站功能。主要用途是将各种MODBUS-TCP设备接入到CCLINK总线中。它可以作为从站连接到CCLINK总线上&#xff0c;也可以作为主站或从站连接到MODBUS-MTP总线上。 1、 配置网关的CCLINK参数&am…

Docker 安装与优化

一、安装Docker 1、关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 02、安装依赖包 yum -y install yum-utils device-mapper-persistent-data lvm2#解释 yum-utils #提供了yum-config-manager工具 device mapper #是linux内核中支持逻辑卷…

阿里巴巴将开源720亿参数大模型;开源语言大模型演进史

&#x1f989; AI新闻 &#x1f680; 阿里巴巴将开源720亿参数大模型 摘要&#xff1a;在2023世界互联网大会乌镇峰会上&#xff0c;阿里巴巴集团CEO吴泳铭透露&#xff0c;阿里巴巴即将开源720亿参数大模型&#xff0c;这将是国内参数规模最大的开源大模型。目前&#xff0c…

华为eNSP实验-QinQ基本实验

1.拓扑图如下 PC1的设置如下&#xff1a; 在未配置VLAN之前&#xff0c;PC1可以ping通PC3&#xff0c;PC2可以ping通PC4&#xff08;因为同一网段&#xff09; 2.SW1和SW4配置VLAN <Huawei>system-view [Huawei]undo info-center enable //关闭提示信息 [Huawei]sysn…

基于springboot实现协同过滤算法商品推荐系统项目【项目源码】计算机毕业设计

基于springboot实现协同过滤算法商品推荐系统演示 Java语言简介 Java是由SUN公司推出&#xff0c;该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称&#xff0c;也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…

Pydantic:数据类型确认和解析神器

大家好&#xff0c;数据验证和解析是软件开发中的重要任务&#xff0c;特别是在处理用户输入或外部数据源时尤为重要&#xff0c;Python凭借其简洁性和多功能性&#xff0c;在这些任务中提供了各种库的帮助。在本文中将探讨Pydantic&#xff0c;介绍其特点&#xff0c;并提供一…

基于VPLC711的曲面外观检测XYR运动控制解决方案

市场应用背景 随着消费升级&#xff0c;产品形态正在朝着多样性和精细化方向迅速发展。这导致了对于复杂曲面轨迹加工的需求&#xff0c;包括外观检测、打磨抛光和点胶工艺控制&#xff0c;要求更高的精密度。企业必须主动满足市场需求&#xff0c;不断改进工艺&#xff0c;以…

「算法小记」-2:矩阵链相乘的方案数【迭代/递归/动态规划/区域化DP/记忆化搜索】(C++ )

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

RT-Thread系列09——ETH网口设备

文章目录 1. ETH测试第一步&#xff1a;cubemx配置。第二步&#xff1a;board.h配置。第三步&#xff1a;rtthread settings配置第四步&#xff1a;以太网复位引脚设置第五步&#xff1a;修改rtthread源码第六步&#xff1a;修改 cubemx 生成的 main 函数第七步&#xff1a;编译…

uniapp和vue3+ts开发小程序,使用vscode提示声明变量冲突解决办法

在uniapp中&#xff0c;我们可能经常会遇到需要在不用的环境中使用不同变量的场景&#xff0c;例如在VUE3中的小程序环境使用下面的方式导入echarts&#xff1a; const echarts require(../../static/echarts.min); 如果不是小程序环境则使用下面的方式导入echarts&#xff…

实战leetcode(二)

Practice makes perfect&#xff01; 实战一&#xff1a; 这里我们运用快慢指针的思想&#xff0c;我们的slow和fast都指向第一个节点&#xff0c;我们的快指针一次走两步&#xff0c;慢指针一次走一步&#xff0c;当我们的fast指针走到尾的时候&#xff0c;我们的慢指针正好…

vscode调试react 最初的源码

如果直接在react项目中打点调试, 调试的是 react-dom.development.js, 而源码里这些逻辑是分散在不同的包里的,如何才能够调试 React 最初的源码呢&#xff1f; JS 代码经过编译&#xff0c;会产生目标代码&#xff0c;但同时也会产生 sourcemap。sourcemap 的作用就是映射目…

为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?

​ 为什么我是机器视觉调机仔&#xff0c;为什么一定要学一门高级语言编程&#xff0c;以后好不好就业&#xff0c;待遇高不高&#xff0c;都是跟这项技术没关系&#xff0c;是跟这个技术背后的行业发展有关系。 你可以选择离机器视觉行业&#xff0c;也可以选择与高级语言相关…

[Mac软件]Adobe Media Encoder 2024 V24.0.2免激活版

软件说明 使用Media Encoder&#xff0c;您将能够处理和管理多媒体。插入、转码、创建代理版本&#xff0c;并几乎以任何可用的格式输出。在应用程序中以单一方式使用多媒体&#xff0c;包括Premiere Pro、After Effects和Audition。 紧密整合 与Adobe Premiere Pro、After …

SSL证书申请安全审核失败?

随着HTTPS普及&#xff0c;申请安装使用SSL证书成为了我们的必备项。但这个SSL证书申请过程中&#xff0c;遇到问题也是不少。今天我们来浅了解一下SSL证书为什么会出现安全审核失败&#xff1f; SSL证书申请会出现安全审核失败的情况可能是以下原因&#xff1a; 域名验证不通…