tessreact训练字库

tessreact主要用于字符识别,除了使用软件自带的中英文识别库,还可以使用Tesseract OCR训练属于自己的字库。

一、软件环境搭建

使用Tesseract OCR训练自己的字库,需要安装Tesseract OCR和jTessBoxEditor(配套训练工具)。jTessBoxEditor需要jdk。要安装jTessBoxEditor之前先安装jdk
安装tessreact OCR:https://blog.csdn.net/u010833154/article/details/135599860
jTessBoxEditor下载地址:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/

获取样本

即需要识别的图片,越多越好;
在这里插入图片描述

Merge样本文件

打开jTessBoxEditor,Tools->Merge TIFF,选择图片的格式,然后打开所有样本文件,并将合并文件保存为num.font.exp0.tif

生成box文件

打开命令行并切换至num.font.exp0.tif所在目录,输入以下命令并生成名为num.font.exp0.box的文件。

tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox

【语法】:tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox
lang为语言名称,fontname为字体名称,num为序号;在tesseract中,一定要注意格式。

字符矫正

使用jTessBoxEditor—>Box Editor—>open,打开生成的box文件进行字符矫正
在这里插入图片描述

定义字符配置文件

在目标文件夹内生成一个名为font_properties.txt的文本文件,内容为

font 0 0 0 0 0  

【语法】:< fontname> < italic> < bold> < fixed> < serif> < fraktur>
fontname为字体名称,italic为斜体,bold为黑体字,fixed为默认字体,serif为衬线字体,fraktur德文黑字体,1和0代表有和无,精细区分时可使用。

生成特征文件

echo Run Tesseract for Training.. 
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train echo Compute the Character Set.. 
unicharset_extractor.exe num.font.exp0.box 
mftraining -F font_properties.txt -U unicharset -O num.unicharset num.font.exp0.tr echo Clustering.. 
cntraining.exe num.font.exp0.tr echo Rename Files.. 
rename normproto num.normproto 
rename inttemp num.inttemp 
rename pffmtable num.pffmtable 
rename shapetable num.shapetable  echo Create Tessdata.. 
combine_tessdata.exe num. echo. & pause

测试

将生成的num.traineddata文件放入到Tesseract-OCR下的tessdata文件夹下;
在cmd中进入待识别图片文件夹,执行以下代码:

tesseract test.png output -l num

识别结果就存放在当前文件夹下跌output.txt文件夹下;

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

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

相关文章

接口以及多态

什么是接口 接口是一种抽象的数据类型&#xff0c;它定义了一组方法的规范&#xff0c;但没有具体的实现。接口可以被类实现&#xff0c;一个类实现了接口后&#xff0c;必须实现接口中定义的所有方法。接口可以被多个类实现&#xff0c;用以实现多重继承。 接口的定义使用关键…

基于SSM的社区老年人关怀服务系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【Vue自定义指令详细介绍】

Vue自定义指令详细介绍 1. 自定义指令1.1 局部1.2 全局 1. 自定义指令 在 Vue.js 中&#xff0c;除了默认提供的核心指令&#xff08;如 v-model、v-show、v-if 等&#xff09;&#xff0c;Vue.js 也允许注册自定义指令&#xff0c;自定义指令给你提供了一种方法来扩展 Vue 的…

【23种设计模式应用场景汇总】

23种设计模式应用场景汇总 设计模式是一种在软件开发中解决特定问题的通用解决方案。下面我将尝试将23种设计模式融入到一个场景中&#xff1a; 假设我们正在开发一个在线购物系统&#xff0c;我们可以使用以下设计模式&#xff1a; 1. 工厂方法模式&#xff1a;当用户在网站上…

力扣hot100 只出现一次的数字 位运算

Problem: 136. 只出现一次的数字 文章目录 思路复杂度Code 思路 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public int singleNumber(int[] nums) {int res 0;for(int x : nums)res ^ x;return res;} }

UI自动化测试框架

文章目录 UI自动化基础什么是UI自动化测试框架UI自动化测试框架的模式数据驱动测试框架关键字驱动测试框架行为驱动测试框架 UI自动化测试框架的作用UI自动化测试框架的核心思想UI自动化测试框架的步骤UI自动化测试框架的构成UtilsLog.javaReadProperties.Java coreBaseTest.ja…

【分布式技术】监控技术zabbix实操

目录 一、脚本监控nginx的连接状态 步骤一&#xff1a;做好nginx的配置 步骤二&#xff1a;完成监控数据脚本编写&#xff0c;并使用zabbix_get测试 步骤三&#xff1a;在zabbix agent配置目录中&#xff0c;编写以conf结尾的用户参数文件 步骤四&#xff1a;在zabbix web…

Python 网络编程之TCP详细讲解

【一】传输层 【1】概念 传输层是OSI五层模型中的第四层&#xff0c;负责在网络中的两个端系统之间提供数据传输服务主要协议包括**TCP&#xff08;传输控制协议&#xff09;和UDP&#xff08;用户数据报协议&#xff09;** 【2】功能 **端到端通信&#xff1a;**传输层负责…

HackerGPTWhiteRabbitNeo的使用及体验对比

1. 简介 WhiteRabbitNeo&#xff08;https://www.whiterabbitneo.com/&#xff09;是基于Meta的LLaMA 2模型进行特化的网络安全AI模型。通过专门的数据训练&#xff0c;它在理解和生成网络安全相关内容方面具有深入的专业能力&#xff0c;可广泛应用于教育、专业培训和安全研究…

MongoDB系统性能调优(持续更新)

cache_size 指定WT存储引擎内部cache的内存用量上限。 需要注意的是&#xff0c;仅作用于WiredTiger cache&#xff0c;而非mongod进程的内存用量上限。MongoDB同时使用WT cache和文件系统cache&#xff0c;往往mongod进程的内存用量高于该值。cache_size相对于物理内存总量不要…

聊聊PowerJob的TransportServiceAware

序 本文主要研究一下PowerJob的TransportServiceAware TransportServiceAware tech/powerjob/server/remote/aware/TransportServiceAware.java public interface TransportServiceAware extends PowerJobAware {void setTransportService(TransportService transportServi…

什么是非电离辐射与电离辐射?

摘要: 非电离辐射和电离辐射是两种不同类型的辐射&#xff0c;它们主要区别在于能量水平和与物质相互作用的方式。 非电离辐射 非电离辐射是指能量较低&#xff0c;不足以使原子或分子的电子脱离其原子核束缚而产生电离现象的电磁波。这类辐射不 ... 非电离辐射和电离辐射是两…

多角度俯瞰Python函数及作用

什么是函数 我们应该都学过三角函数吧&#xff0c;比如正弦函数&#xff0c;在最初接触到这方面的知识的时候&#xff0c;我们要求sin30是不是要去查一个叫做“三角函数值查表”的东西&#xff0c;然后得出sin30 0.5。 那么问题来了&#xff0c;sin30为什么会等于0.5呢&…

嵌入式培训机构四个月实训课程笔记(完整版)-C++和QT编程第四天-C++动态联编和虚函数(物联技术666)

链接:https://pan.baidu.com/s/1QO44mZtlgbiStTuI6sQP4g?pwd=1688 提取码:1688 上午:动态联编和虚函数 下午:QT介绍 教学内容: 1、动态联编和虚函数: 编译程序在编译阶段并不能确切知道将要调用的函数,只有在程序运行时才能确定将要调用的函数,这要求联编工作要…

国内环境 GitHub 拉取仓库速度慢的缓解方案

第一步&#xff1a; 浏览器打开如下两个网址&#xff0c;找到对应 IP 地址&#xff1a; GitHub.com - GitHub: Lets build from here GitHubgithub.global.ssl.fastly.net 假设对应 IP 地址分别为 140.82.xx.xxx 和 199.232.yy.yyy 第二步&#xff1a; 编辑 hosts 文件 sud…

openssl3.2 - 官方demo学习 - kdf - scrypt.c

文章目录 openssl3.2 - 官方demo学习 - kdf - scrypt.c概述笔记END openssl3.2 - 官方demo学习 - kdf - scrypt.c 概述 设置 kdf-SCRYPT算法的参数, 取key 笔记 /*! \file scrypt.c \note openssl3.2 - 官方demo学习 - kdf - scrypt.c 设置 kdf-SCRYPT算法的参数, 取key */…

Centos 更换内核

文章目录 一、查看/更换系统内核1.1 查看当前运行环境的内核1.2 查看系统上所有可用内核1.3 切换内核方法一&#xff1a;通过启动菜单更换内核方法二&#xff1a;更换默认启动内核 二、安装内核2.1 使用ELRepo安装2.2 安装指定内核版本参考资料 一、查看/更换系统内核 1.1 查看…

docker搭建SSH镜像、systemctl镜像、nginx镜像、tomcat镜像

目录 一、SSH镜像 二、systemctl镜像 三、nginx镜像 四、tomcat镜像 五、mysql镜像 一、SSH镜像 1、开启ip转发功能 vim /etc/sysctl.conf net.ipv4.ip_forward 1sysctl -psystemctl restart docker 2、 cd /opt/sshd/vim Dockerfile 3、生成镜像 4、启动容器并修改ro…

面试题:你知道 Spring lazy-init 懒加载的原理吗?

文章目录 前言一、先睹为快二、原理分析三、总结 前言 普通的bean的初始化是在容器启动初始化阶段执行的&#xff0c;而被lazy-init修饰的bean 则是在从容器里第一次进行context.getBean(“”)时进行触发。 Spring 启动的时候会把所有bean信息(包括XML和注解)解析转化成Spring…

这可能是最全面的Java并发编程八股文了

内容摘自我的学习网站&#xff1a;topjavaer.cn 分享50道Java并发高频面试题。 线程池 线程池&#xff1a;一个管理线程的池子。 为什么平时都是使用线程池创建线程&#xff0c;直接new一个线程不好吗&#xff1f; 嗯&#xff0c;手动创建线程有两个缺点 不受控风险频繁创…