python结合tesseract-ocr识别汉字的训练库过程

一、安装python

例如,安装路径为:C:\rtkapp\python-3.8.0

二、安装opencv

三、安装tesseract-ocr

 

 

 

 

 

 

 安装完成后,在系统环境变量path中,添加安装路径C:\rtkapp\Tesseract-OCR

四、打开python安装pytesseract

 五、安装java运行环境

例如,安装版本为:jdk-8u191-windows-x64

 

 添加和配置系统环境变量

 

 

六、安装jTessBoxEditor

例如,安装版本为:jTessBoxEditor1.5

 七、打开jTesseBoxEditor为编辑汉字设置字体为宋体

八、用jTesBoxEditor合并选择的图片文件sample1.png

 保存结果如图:

 九、用命令生成box文件

例如,图片文件为:fmc.font.exp1.tif

运行命令为:tesseract.exe -l chi_sim fmc.font.exp1.tif fmc.font.exp1 batch.nochop makebox

生成的box文件为:fmc.font.exp1.box

十、浏览打开图片文件fmc.font.exp1.tif

用Box View调整X、Y、W、H使汉字正好在方框内,如汉字识别错误,在Char栏修改即可,

全部完成后,按Save保存即可,如下图:

十一、运行下面python脚本生成自定字库fmc.traineddata

import os
import cv2
import time
import pytesseract
import numpy as np
import subprocess
from PIL import Image#Change work path
workpath="C:\\picdata";
curpath=os.getcwd();
os.chdir(workpath);#Create a default font properties file
strcmd="echo normal 0 0 0 0 0>font_properties";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");#Run tesseract for training
strcmd="tesseract.exe -l chi_sim fmc.font.exp1.tif fmc.font.exp1 nobatch box.train";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");#Compute the character set
strcmd="unicharset_extractor.exe fmc.font.exp1.box";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");
strcmd="mftraining -F font_properties -U unicharset -O fmc.unicharset fmc.font.exp1.tr ";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");#Run clustering
strcmd="cntraining.exe fmc.font.exp1.tr";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");#Rename files
strcmd="move normproto fmc.normproto";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");
strcmd="move inttemp fmc.inttemp";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");
strcmd="move pffmtable fmc.pffmtable";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");
strcmd="move shapetable fmc.shapetable";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");#Create tessdata
strcmd="combine_tessdata.exe fmc";
print(workpath+">"+strcmd);
print(subprocess.getoutput(strcmd)+"\n");tessdata_path="";
strpath=os.getenv("path").split(";");
for kkk in strpath:if kkk.lower().find("tesseract")>0:tessdata_path=kkk+"\\tessdata";break;#Copy tessdata
print(tessdata_path);
#Create Tessdata
if len(tessdata_path)>0:strcmd="copy fmc.traineddata "+tessdata_path;print(workpath+">"+strcmd);print(subprocess.getoutput(strcmd)+"\n");

十二、用生成的自定义字库fmc识别图片汉字

import os
import cv2
import pytesseractpytesseract.pytesseract.tesseract_cmd = 'tesseract.exe'
img = cv2.imread('C:\\picdata\\sample1.png')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)print(pytesseract.image_to_string(img,lang="fmc"))

运行结果如下:

 

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

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

相关文章

测试开源C#人脸识别模块ViewFaceCore(5:质量检测和眼睛状态检测)

ViewFaceCore模块中的FaceQuality支持预测人脸质量,最初以为是预测人体体重,实际测试过程中才发现是评估人脸图片质量,主要调用Detect函数执行图片质量检测操作,其函数原型如下所示: //// 摘要:// 人脸质量评估///…

Qt+OpenCV+VTK在VS2017中配置路径

QtOpenCVVTK在VS2017中配置路径 《Qt环境配置》《OpenCV环境配置》《VTK环境配置》 《Qt环境配置》 包含目录: D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include\QtWidgets D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include…

[containerd] 初始化流程概览

1. 环境 containerd版本:v1.7.2,containerd debug搭建教程链接操作系统:Ubuntu22.04 2. 初始化流程 containerd的入口为:cmd/containerd/main.go,如下: func main() {// TODO 实例化containerdapp : com…

webstorm配置less转译

Program中路径如果识别不到 项目文件\node_modules.bin\lessc

springCloud Eureka注册中心配置详解

1、创建一个springBoot项目 2、在springBoot项目中添加SpringCloud依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.3</version><type>…

【MySQL数据库备份】

目录 一、概述 二、数据备份的重要性 1. 数据保护 2. 灾难恢复 3. 数据完整性 4. 合规性要求 三、造成数据丢失的原因 1. 硬件故障 2. 人为错误 3. 黑客攻击 4. 自然灾害 5. 软件故障 四、备份类型 1.物理与逻辑角度 1.1 概念 1.2 物理备份 1.2.1 冷备份 1.2…

建造者模式

1.概念 建造者模式是一种创建型设计模式&#xff0c;它允许我们一步一步的来构造对象&#xff0c;其实就是将创建对象的一个过程拆分成了很多个小步骤&#xff0c;常见主要是在一个A类的基础上&#xff0c;加多一个Builder的类&#xff0c;然后属性和A类的一样&#xff0c;我们…

gdb调试时查看汇编代码

在gdb中查看汇编代码&#xff0c;可以使用display命令或x命令。 以下是一个示例程序&#xff0c;我们以它为例来演示如何在gdb中查看汇编代码。 #include <stdio.h> int main() { int a 10; int b 20; int c a b; printf("c %d\n", c); return 0;…

Flutter:滑动面板

前言 无意中发现了这个库&#xff0c;发现现在很多app中都有类似的功能。以手机b站为例&#xff0c;当你在看视频时&#xff0c;点击评论&#xff0c;视频会向上偏移&#xff0c;下方划出评论界面。 sliding_up_panel SlidingUpPanel是一个Flutter插件&#xff0c;用于创建滑…

Stable Diffusion 硬核生存指南:WebUI 中的 VAE

本篇文章聊聊 Stable Diffusion 生态中呼声最高、也是最复杂的开源模型管理图形界面 “stable-diffusion-webui” 中和 VAE 相关的事情。 写在前面 Stable Diffusion 生态中有一个很重要的项目&#xff0c;它对于 SD 生态繁荣做出的贡献可以说居功至伟&#xff0c;自去年八月…

13. Mybatis-Plus

目录 1. MyBatis-Plus 简介 2. 新建项目 3. 添加依赖 4. 配置数据库 5. 编码 1. MyBatis-Plus 简介 通过官网&#xff1a;MyBatis-Plus MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window)的增强工具&#xff0c;在 MyB…

W2NER详解

论文&#xff1a;https://arxiv.org/pdf/2112.10070.pdf 代码&#xff1a;https://github.com/ljynlp/W2NER 文章目录 W2NER介绍模型架构解码 源码介绍数据输入格式模型代码 参考资料 W2NER 介绍 W2NER模型&#xff0c;将NER任务转化预测word-word&#xff08;备注&#xff…

Gateway结合nacos(lb://xxx)无效问题

Gateway结合nacos无效 版本如下&#xff1a; com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:2021.0.1.0 org.springframework.cloud:spring-cloud-starter-gateway:3.1.1 配置如下&#xff1a; server:port: 7000 spring:application:name: springCloudGa…

微信小程序生成带参数的二维码base64转png显示

getQRCode() {var that this;wx.request({url: http://localhost:8080/getQRCode?ID 13,header: {content-type: application/json},method: POST,responseType: arraybuffer,//将原本按文本解析修改为arraybuffersuccess(res) {that.setData({getQRCode: wx.arrayBufferToB…

django Ajax--前后端数据交互

一.Django的Ajax和JavaScript的Ajax Django的Ajax和JavaScript的Ajax实质上是指同一种技术&#xff0c;即异步JavaScript和XML&#xff08;Asynchronous JavaScript and XML&#xff09;。它允许在不刷新整个页面的情况下&#xff0c;通过前后端之间的异步交互来获取或发送数据…

string【2】模拟实现string类

string模拟实现 引言&#xff08;实现概述&#xff09;string类方法实现默认成员函数构造函数拷贝构造赋值运算符重载析构函数 迭代器beginend 容量size、capacity、emptyreserveresize 访问元素operator[] 修改insert插入字符插入字符串 appendpush_backoperatoreraseclearswa…

uni-app在小米手机上运行【步骤细节】

注意细节重点&#xff1a; 1.手机使用数据线与电脑连接&#xff0c;手机连接模式必须是传输文件模式 2.手机必须打开开发者模式 3.打开开发者模式后&#xff0c;仔细浏览并调整USB调试权限&#xff0c;重点打开USB是否允许安装按钮&#xff01;&#xff01;&#xff01; 操作步…

Mybatis-Plus分页功能

1、创建springboot项目 2、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId&…

RWEQ模型参量提取

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一&#xff0c;土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2&#xff0c;占国土总面积的16.7%&#xff0c;严重影响这些地区的资源开发和社会经…

windows环境下,安装elasticsearch

目录 前言准备安装 jdk 安装nodejsElasticSearch下载ElasticSearch-head 下载 安装ElasticSearch安装ElasticSearch-head插件设置用户名密码访问ElasticSearch 默认用户名和密码参考 前言 win10elasticsearch 8.9.0 准备 安装 jdk ElasticSearch 是基于lucence开发的&#…