【转载】Windows下Tesseract4.0识别与中文手写字体训练
一 、 tesseract 4.0 安装及使用
1. tesseract 4.0 安装
安装包下载地址: http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe
我在CSDN下载资源里也上传了一份: http://download.csdn.net/download/dcrmg/10021168
exe可执行文件直接安装,选择安装路径:
安装完成之后需要添加2个环境变量:
1. 把安装路径“C:\Program Files (x86)\Tesseract-OCR”添加到环境变量里,方便在命令行里直接调用;
2. 把语言包所在路径“C:\Program Files (x86)\Tesseract-OCR\tessdata”添加到环境变量里,变量名称为“TESSDATA_PREFIX”,不添加语言包路径的话调用tesseract识别会报如下错误:
2. 简体中文语言包下载
语言包存放路径是在“C:\Program Files (x86)\Tesseract-OCR\tessdata”文件下,是一些后缀为“.traineddata”的文件,tesseract安装包里预装了英文识别语言包“eng.traineddata”,其他语言包需要下载后放到这个文件夹下。
简体中文语言包下载地址: https://github.com/tesseract-ocr/tessdata/find/master
名称是“chi_sim.traineddata”的是简体中文语言包,访问不了github的可以试试到这里下载: http://download.csdn.net/download/dcrmg/10021178
3. tesseract在命令行里的使用
在命令行里输入tesseract,查看:
-l : 指定识别语言
--psm: 指定识别对象属性,如果要识别的图像中文字的分布是只有一行,就是用 “--psm 7”
对这个图像中微软雅黑字体的中文进行识别:
在图像文件所在目录下启动命令提示符,输入:
tesseract spring1.png output_sim -l chi_sim --psm 7
执行之后,图像中的文字都正确识别出来了:
测试对这个图像中同样文字的手写字体内容进行识别效果如何:
结果很差,只正确识别出来3个字:
所以tesseract的中文语言包“chi_sim”对中文手写字体(或环境比较复杂的情况)的识别正确率不高,需要针对特定情况用自己的样本进行训练,提高识别率。
二、 jTessBoxEditor 和 java 下载安装
tesseract的训练需要使用到一个“.box”文件,相当于一个打标文件,记录了对应图片上各个文字的内容和位置,这个.box文件可以使用 “jTessBoxEditor”(这个东西是本人遇到过的有史以来最惨绝人寰、最惨无人道、最罄竹难书的东东~) 这个工具来进行调整,这个鬼东西的运行依赖于Java运行时环境,所以还得安装Java虚拟机。
1. Java虚拟机安装
java虚拟机 百度下载地址: http://rj.baidu.com/soft/detail/10463.html?ald
或: http://download.csdn.net/download/dcrmg/10021382
2. jTessBoxEditor 安装
jTessBoxEditor下载地址: https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
务必选择带FX的版本,才支持中文字符编辑:
安装包解压出来之后双击里边的“jTessBoxEditor.jar” (或者双击该文件夹下的 “train.bat” 脚本文件),如果前边安装了Java虚拟机,一般会弹出来如下对话框,选择 “Java(TM) Platform SE binary” 就行了:
jTessBoxEditor 打开之后长这个样子:
三、 使用 tesseract && JTessBoxEditor 执行手写体图片样本训练
1. 样本图片准备
理论上训练样本数量越多越好,这里作为训练流程的演示,对以上测试图片 “长花短草 贴河而立” 里边的8个字分别只准备了2种手写字体样本,如下:
截取的样本图片中最好不要有10个以上的字符样本,特别是在背景复杂的情况下,因为正常情况下tesseract分割出来的各个字符的位置和大小是不对的,需要使用jTessBoxEditor这个惨绝人寰的工具进行调整,单张图片中有过多的字符需要调整在jTessBoxEditor中的难度是成几何倍数增长的,Try it……
旧版的jTessBoxEditor只能处理后缀为 “.tif” 的图片,上文下载链接中提供的是2.0版本,可以处理 GPEG、PNG、BItmap等几乎所有格式的图片,不再需要对样本进行 “.tif” 格式的转化了。
以上2张训练图片分别命名为: spring1.PNG、spring2.PNG,存放路径在 “D:\CSDN\1014\samples” 下。
2. 使用 jTessBoxEditor 生成 训练样本的 “合并”(Merge)图片
打开 jTessBoxEditor ,选择 Tools -> Merge TIFF,打开对话框,选择训练样本所在文件夹,并选中所有要参与训练的样本图片,注意对话框中“文件类型”的选取:
点击 “打开” 之后弹出保存对话框,还是选择在当前路径下保存,文件命名为 “chi_my.font.exp0.tif” ,格式只有一种 “TIFF” 可选:
点击 “保存” 之后在指定路径下生成所有样本的 “合并” 图片 chi_my.font.exp0.tif
3. 使用 tesseract 生成 .box 文件
在上一步骤中生成的 “chi_my.font.exp0.tif” 文件所在路径下打开命令行程序,执行以下命名:
tesseract chi_my.font.exp0.tif chi_my.font.exp0 -l chi_sim batch.nochop makebox
执行后在当前路径下生成 “chi_my.font.exp0.box” 文件
4. 使用 jTessBoxEditor 调整 .box 训练文件
“.box” 文件中记录了每个字符在图片上的位置以及识别出的内容,训练之前需要使用jTessBoxEditor调整字符的位置和内容。
打开 jTessBoxEditor ,点击 Box Editor -> Open ,打开步骤2中生成的 “chi_my.font.exp0.tif” ,会自动关联到 “chi_my.font.exp0.box” 文件:
右上角红色方框内分别可以调整字符的内容、位置、宽高等,不带 “FX”版本的jTessBoxEditor还可以直接在方框内输入具体的数值,但不支持中文字符!…… 带 “FX” 版本的jTessBoxEditor支持中文字符,但是竟然不可以在方框内直接输入数值,需要一下一下点击方框右边的三角框!从600点到20是常有的事! 慢慢享受……
底部的红色方框内可以看到总的图片数量和当前编辑的张数,调整所有样本后点击 File -> Save as 另存为调整后的 “.box” 文件或Ctrl + S 原地保存。
5. 使用echo命令创建字体特征文件
在终端中执行以下命令:
echo font 0 0 0 0 0>font_properties
执行完成之后,在当前文件夹下生成font_properties文件
也可以手动在该文件夹下建立一个名为 “font_properties” 的文件,这个文件没有后缀名称,输入内容 “font 0 0 0 0 0” , 表示字体 font 的粗体、倾斜等共计5个属性全都设置为0
注意 : 这里输入的 “font” 名称必须与 “chi_my.font.exp0.box” 中两个点号之间的 “font” 名称保持一致。
在tesseract训练语言包的过程中,jTessBoxEditor的作用就是调整(位置和内容)tesseract生成的 “.box”文件,这个文件中列出了每个字符在图片上的位置以及内容。
6. 使用 tesseract 生成 chi_my.font.exp0.tr 训练文件
在终端中执行以下命名:
tesseract chi_my.font.exp0.tif chi_my.font.exp0 nobatch box.train
执行后在当前文件夹下生成 chi_ym.font.exp0.tr训练文件。
7. 生成字符集文件
在终端中执行以下命令:
unicharset_extractor chi_my.font.exp0.box
执行之后在当前文件夹下生成 “unicharset” 文件。
8. 生成字典数据
在终端中依次执行以下两条命名:
mftraining -F font_properties -U unicharset -O chi_my.unicharset chi_my.font.exp0.tr
cntraining chi_my.font.exp0.tr
生成之后手工修改 Clustering 过程生成的 4 个文件(inttemp、pffmtable、normproto、shapetable)的名称为 [lang].xxx。这里改为 chi_my.inttemp、chi_my.pffmtable、chi_my.normproto、chi_my.shapetable。
9. 合并数据文件
在终端中执行以下命令:
combine_tessdata chi_my.
Log 输出中的 Offset 1、3、4、5、13 这些项不是 -1 ,表示新的语言包生成成功。
将生成的 “chi_my.traineddata” 语言包文件拷贝到 tessdata 目录下,就可以用它来进行中文字符识别了。
10. 验证训练生成的语言包
在终端中输入:
tesseract spring1.PNG result -l chi_my --psm 7
使用 “chi_sim” 语言包只可以正确识别3个字,使用新训练生成的 “chi_my” 都可以正确识别了:
【转载】Windows下Tesseract4.0识别与中文手写字体训练相关推荐
- Windows下Tesseract4.0识别与中文手写字体训练
一 . tesseract 4.0 安装及使用 1. tesseract 4.0 安装 安装包下载地址: http://digi.bib.uni-mannheim.de/tesseract/tesse ...
- 【踩坑日记 · 前端】为 Excalidraw 添加中文手写字体
文章目录 前言 中文手写字体 步骤 1. 下载源代码和中文字体 2. 注册字体 3. 预加载字体资源 4. 增加字体枚举 5. 添加字体切换按钮 部署测试 参考资料 前言 Excalidraw 是一款 ...
- Excalidraw 安装部署中文手绘/手写字体
Excalidraw 是一个在线的白板协作工具,支持用户创建手绘风格的图形,但是默认情况下不支持中文手写字体. 如果你想在 Excalidraw 中使用中文手写字体,可以按照以下步骤进行安装和部署. ...
- 支持中文手写和多画布的Handraw
什么是 Handraw ? Handraw 是支持中文手写和多画布的 Excalidraw 白板工具. 官网上项目名称还是 Excalidraw-CN,所以 Handraw 应该是基于 Excalid ...
- Windows下 maven3.0.4的安装步骤+maven配置本地仓库(转载)
转自:Windows下 maven3.0.4的安装步骤+maven配置本地仓库 简单讲下maven的安装步骤: 1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量. 2 ...
- Windows Mobile 6.0 SDK和中文模拟器下载
[转] Windows Mobile 6.0 SDK和中文模拟器下载 Windows Mobile 6.5 模拟器 2010年12月06日 星期一 07:48 转载自 zhangyanle86 终于编 ...
- python手写汉字识别_TensorFlow 2.0实践之中文手写字识别
问题导读: 1.相比于简单minist识别,汉字识别具有哪些难点? 2.如何快速的构建一个OCR网络模型? 3.读取的时候有哪些点需要注意? 4.如何让模型更简单的收敛? 还在玩minist?fash ...
- windows下mysql-8.0.11-winx64解压版配置
windows下mysql-8.0.11-winx64解压版配置 首先解压下载好的压缩版本, 使用的是社区开源版可以到官网上找到 将解压后mysql的bin文件目录配置系统环境path变量中 . 使用 ...
- 中文手写数据生成基于paddleocr和textrenderer-大幅提高中文识别准确率
文章目录 参考 一.textrenderer更多参数解释 二.准备手写字体文件 效果展示 参考 主要是参考了这位大佬的工作 ,大佬说生成都是灰度图,因为考虑样本多样性,主要介绍如何生成彩色图片,字典文 ...
最新文章
- 刷爆了!这项技术BAT力捧!程序员:我彻底慌了...
- 头脑风暴-如何减少软件项目对于人的依赖性。
- C#自定义工业控件开发
- linux 产生0~3之间的随机数
- 穿背心的老院士,86岁,重病,还在敲代码,单手!
- 一个路由器两个网段互通_如何判断两个IP地址是否在同一个网段?什么是子网掩码?...
- 激光slam_机器人主流定位技术,激光SLAM与视觉SLAM谁更胜一筹
- 仅用 2 年过渡到自研 ARM 芯片,苹果的底气从何而来?
- C语言中的fopen函数
- pythonide的作用_Linux程序员宝典:2020年10款出色的Python IDE!
- 给编程生涯充电的 10 本书
- git服务器ip变更后的配置
- 《每日一题》NO.21:画出CMOS 非门/与非门/或非门的结构
- 数据分析训练营-pandas
- elastic-job监控平台ElasticJob-UI的使用
- 深入理解JVM—第二章:Java内存区域与内存溢出异常
- JS工具库moment —— 实现日历
- Microsoft Cartoon Maker(微软卡通头像制作软件)使用方法详解
- 信奥要学哪些数学知识 学信奥要不要先学python
- redis 解决key是乱码问题,并清理
热门文章
- 利用matplotlib为论文画图(一)
- 常用的几款SSH工具通过密匙认证连接远程主机
- 网络爬虫-58同城·招聘联系电话js解密
- Python模块之Pandas 格式化数据
- 【Linux】/etc/issue、/etc/issue.net和/etc/motd的区别
- 入门经典_Chap08_题解总结:极角扫描法 滑动窗口 单调队列 单调栈
- mac终端命令(苹果终端命令)
- 远程连接windows 2012 是报出“出现身份验证错误,要求的函数不受支持”解决方法”
- java中将html特殊字符作转义和取消转义操作
- 删除所有用户数据!永久关闭