Tesseract-OCR 字库训练
文章目录
- 一、环境搭建
- 二、用jTessBoxEditor训练数字
- 2.1 示例一:
- 三、 用jTessBoxEditor训练中文字库
- 附加
一、环境搭建
安装Tesseract-OCR自带下载中文字库进行识别!但是在实际使用识别效果不佳,
为了提高识别效果所以决定根据所需要的识别的内容训练字库!
字库的训练最好在Tesseract-OCR的安装目录下进行。
下载Tesseract-OCR引擎:详情请点击。
jTessBoxEditor 下载:https://www.softpedia.com/get/Multimedia/Graphic/Graphic-Others/jTessBoxEditor.shtml
https://github.com/tesseract-ocr/tesseract/wiki/AddOns
jTessBoxEditorFX 2.0下载: https://dl.pconline.com.cn/download/1060986.html
解压:
下载jdk-8u201-windows-x64.exe,并安装JRE环境。(jTessBoxEditor是用java开发的依赖于Java)
jdk-8u201-windows-x64.exe下载地址(需要注册登录)
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
运行train.bat,就可以打开jTessBoxEditor工具。
二、用jTessBoxEditor训练数字
先将步骤整理如下:
下载chi_sim.traindata字库。要有这个才能识别中文。下好后,放到Tesseract-OCR项目的tessdata文件夹里面。
2.1 示例一:
2.1. 准备图片:
2.1.2 合并样本图片
执行train.bat
启动jTessBoxEditorFX,选择菜单Tools->Merge TIFF 执行图片合并,选中上面将5张tif图片文件,合并为1个tif文件命名为:num.hand_num.exp0.tif
,关闭jTessBoxEditorFX。
合成图片后,我们可以预览一下。查看刚才合成的图片。
- 合并后的文件命名格式:
-
【语法】:
[lang]
.[fontname]
.exp[num
].tif
lang为语言名称
fontname为字体名称
num为序号,可自定义。
2.1.3 生成box文件
终端进入合成的tif图片文件夹下执行(无特别申明都是在此目录下运行终端命令):
tesseract num.hand_num.exp0.tif num.hand_num.exp0 [-l eng --psm 7] batch.nochop makebox
- 说明:
-
以上
[ ]
中的内容当返回Empty page的时候可以加上.
-psm 7
表示用单行文本识别,
-l eng
表示使用英语语言.
2.1.4 字符纠正
执行train.bat启动jTessBoxEditorFX,点击Box Editor,再点击Open选中之前生成的合并样本图片num.hand_num.exp0.tif
,其对应的box文件会自动加载。
检查修改每页中的各个数字字符解析结果,有不正确的修改,完成后保存替换原box文件。
2.1.5 创建font_properties文件
创建字体属性文件font_properties
,该文件为文本文件,但没有扩展名。
终端执行:echo hand_num 0 0 0 0 0 >font_properties
【语法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
fontname为字体名称,
italic为斜体,
bold为黑体字,
fixed为默认字体,
serif为衬线字体,
fraktur德文黑字体,
1和0代表有和无,精细区分时可使用。
2.1.6 生成训练文件
终端执行:tesseract num.hand_num.exp0.tif num.hand_num.exp0 -l eng --psm 7 nobatch box.train
运行后在目标文件夹生成文件num.hand_num.exp0.tr。
2.1.7 生成字符集文件
终端执行:unicharset_extractor num.hand_num.exp0.box
运行后在目标文件夹生成文件unicharset。
2.1.8 生成shape文件
终端执行:shapeclustering -F font_properties -U unicharset -O num.unicharset num.hand_num.exp0.tr
运行后在目标文件夹生成文件num.unicharset和shapetable。
2.1.9 生成聚集字符特征文件
终端执行:mftraining -F font_properties -U unicharset -O num.unicharset num.hand_num.exp0.tr
运行后在目标文件夹生成文件inttemp和pffmtable。
2.1.10 生成字符正常化特征文件
终端执行:cntraining num.hand_num.exp0.tr
运行后在目标文件夹生成文件normproto。
2.1.11 对特征文件更名,终端执行:
rename normproto hand_num.normproto
rename inttemp hand_num.inttemp
rename pffmtable hand_num.pffmtable
rename unicharset hand_num.unicharset
rename shapetable hand_num.shapetable
2.1.12 合并训练文件
终端执行:combine_tessdata hand_num.
注意命令中最后有个小数点,运行后在目标文件夹生成文件hand_num.traineddata。
2.1.13 将最终生成的训练数据文件hand_num.traineddata复制到Tesseract-OCR软件安装路径的tessdata目录下,以后Tesseract即可将其作为新的语言识别包使用。
随机从上面5张手写数字图片中截取数字,拼成由一串数字构成的手机号码digit.png,然后对比训练前后的识别效果。
不使用训练后的语言包,直接使用默认识别
tesseract digit.png digit1
识别结果:1390652649]
使用训练后的语言包来识别
tesseract digit.png digit2 -l hand_num
识别结果:13908526497
三、 用jTessBoxEditor训练中文字库
先把训练用样本图像准备好。
打开 jTessBoxEditor ,选择 Tools -> Merge TIFF,打开对话框,选择训练样本所在文件夹,并选中所有要参与训练的样本图片,注意对话框中“文件类型”的选取png
之后有打开对话框,输入“chi_my.font.exp0.tif”,格式为tiff。其中chi_my可改为自己定义。会生成chi_my.font.exp0.tif文件。
生成“chi_my.font.exp0.box” 文件;在命令行下执行
tesseract chi_my.font.exp0.tif chi_my.font.exp0 -l chi_sim batch.nochop makebox
tesseract chi_my.font.exp0.tif chi_my.font.exp0 -l eng batch.nochop makebox
打开 jTessBoxEditor ,点击 Box Editor -> Open,选择chi_my.font.exp0.tif文件。
调整识别错误的情况。尤其是图像,字符比较多的情况。
注意、修改后的保存需点击界面上charater后的标识为设置图标的button后,再点击save按钮。创建字体特征文件
echo font 0 0 0 0 0>font_properties
会生成“font_properties” 文件。文件size显示为0字节。其实里面有‘“font 0 0 0 0 0”’内容。训练
tesseract chi_my.font.exp0.tif chi_my.font.exp0 -l eng -psm 7 nobatch box.train
生成字符集文件
unicharset_extractor chi_my.font.exp0.box
生成 “unicharset” 文件。生成shape文件,聚集字符特征文件,字符正常化特征文件等四个文件。
- 命令
shapeclustering -F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr
生成 “shapetable”“inttemp”“pffmtable” 文件。 - 命令
mftraining -F font_properties -U unicharset -O langyp.unicharset langyp.fontyp.exp0.tr
生成 “pinyin.unicharset” 文件。 - 命令
cntraining langyp.fontyp.exp0.tr
生成 “normproto” 文件。
- 命令
更名,合并训练文件
rename normproto langyp.normproto
rename inttemp langyp.inttemp
rename pffmtable langyp.pffmtable
rename unicharset langyp.unicharset
rename shapetable langyp.shapetable
合并训练文件,
combine_tessdata langyp.
生成langyp.traineddata文件。将生成的 “langyp.traineddata” 语言包文件拷贝到tesseract的tessdata 目录下,
就可以用它来进行中文字符识别了。
附加
自动化字库训练脚本
待续
实例:
G:\Program Files (x86)\jTessBoxEditorFX\samples\pinyin>unicharset_extractor pinyin.font.exp0.box
Extracting unicharset from pinyin.font.exp0.box
Wrote unicharset file ./unicharset.
G:\Program Files (x86)\jTessBoxEditorFX\samples\pinyin>shapeclustering -F font_properties -U unicharset -O pinyin.unicharset pinyin.font.exp0.tr
Reading pinyin.font.exp0.tr …
G:\Program Files (x86)\jTessBoxEditorFX\samples\pinyin>mftraining -F font_properties -U unicharset -O pinyin.unicharset pinyin.font.exp0.tr
Read shape table shapetable of 27 shapes
G:\Program Files (x86)\jTessBoxEditorFX\samples\pinyin>cntraining pinyin.font.exp0.tr
Reading pinyin.font.exp0.tr …
Clustering …
G:\Program Files (x86)\jTessBoxEditorFX\samples\pinyin>combine_tessdata pinyin.
Combining tessdata files
鸣谢
https://www.cnblogs.com/zhongtang/p/5555950.html
自动训练3500常用汉字:https://blog.csdn.net/woaipangruimao/article/details/78741022
https://blog.csdn.net/duanshao/article/details/79835651
https://blog.csdn.net/woaipangruimao/article/details/78685727
http://www.cnblogs.com/wzben/p/5930538.html
https://blog.csdn.net/sylsjane/article/details/83751297
中文训练:https://www.cnblogs.com/asker009/p/11119005.html
官方字库:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files#format-of-traineddata-files
Tesseract-OCR 字库训练相关推荐
- 关于Tesseract OCR 中文训练识别小试(java调用Tess4j)
2017.9.20日小结 最近接到是关于消防系统协议解析仪器的项目,目的是从协议解析仪器获取有效数据,并解析数据(目的是不希望消防主机的数据信息再传给主机厂商而是最后能给自己收集调用).由于各个消防器 ...
- Tesseract OCR手写数字的样本训练
Tesseract OCR样本训练除需要安装Tesseract OCR软件外,还需要下载Tesseract OCR样本训练工具jTessBoxEditorFX,下载地址: http://dl.pcon ...
- Tesseract OCR 训练字库
Tesseract OCR是一款由HP实验室开发由Google维护的开源OCR引擎,在字符识别领域发挥着举足轻重的作用.除了使用软件自带的中英文识别库,我们可以使用Tesseract OCR训练属于自 ...
- android自动识别文字,Android文字识别tesseract ocr -训练样本库 识别字库
目录 安装tesseract ocr引擎和jTessBoxEditor 安装jTessBoxEditor 开始制作box 准备好训练的图片 将图片转为tif格式的样本图片 合并样本图片 修改box文件 ...
- Tesseract OCR简介(三)--安装及参数使用
参考:AI-Tesseract-OCR简介_花熊的博客-CSDN博客_tesseract坐标 一.windows 1.1 Tesseract安装 适用于Tesseract 3.05和Tesseract ...
- Tesseract OCR论文笔记及使用说明
1.Tesseract介绍 Tesseract是惠普布里斯托实验室在1985到1995年间开发的一一个开源的OCR引擎,曾经在1995 UNLV精确度测试中名列前茅.但1996年后基本停止了开发.20 ...
- jTessBoxEditor for Tesseract OCR
jTessBoxEditor下载地址 http://vietocr.sourceforge.net/training.html 以下翻译自安装(解压)后的Readme文件 jTessBoxEditor ...
- Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案
基本概念 Tesseract OCR:Tesseract-OCR 引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一.然而,HP不久便决定放弃OCR业务 ...
- [转]tesseract OCR Engine overview字符识别学习
原文地址:http://blog.csdn.net/viewcode/article/details/7790065 正文: 原文: An Overview of the Tesseract OCR ...
- Tesseract Ocr文字识别
Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一.2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于G ...
最新文章
- C++利用二次探查实现存储机制hash table的算法(附完整源码)
- CentOS上 Mono 3.2.8运行ASP.NET MVC4经验
- w7怎么重启无限服务器,w7重启数据库服务器
- iPhone清理喇叭灰尘_iphone正确清理扬声器灰尘的方法
- Redis学习---(14)Redis 事务
- 【Elasticsearch】使用 Elasticsearch 的 44 条建议
- python 迭代器的方法_python--魔法方法,属性和迭代器
- 读书笔记 - 深入解析Windows操作系统 - C1. 概念和工具
- 用服务器日志监控软件、服务器日志分析工具软件教你如何查看服务器日志?
- 提供多种版本- MSI Code条形码字体具有可扩充性条形码控件MSI Plessey
- 《Python程序设计(第3版)》[美] 约翰·策勒(John Zelle) 第 9 章 答案
- 截断二进制指数退避算法c++实现
- java连接redis存取数据(详细)
- Java输出英语字母对应的数字
- [1] OPC UA基础知识简介
- 《脚本》Python在线百度文库爬虫(免下载券)
- 研究生的压力应对与心理健康期末考试答案
- utools快速上手心得
- CSS实现button按钮的点击效果
- SuperMap大数据GIS技术白皮书 v2.1
热门文章
- 双机热备+负载均衡(Heartbeat+DRBD+NFS+Keepalived+Lnmp)线上方案
- 西南政法大学计算机课程要求,西南政法大学本科课程教学改革办法
- Java实现:百钱买百鸡问题
- 国内常见网络设备提供商分析
- 中南大学计算机学院 吴嘉,中南大学要求老师打分服从正态分布?考试中心:没有明确规定...
- 看财报:新东方步入中老年
- JQuery EasyUI Datagrid 清空排序状态(箭头)代码
- mongoDB使用数据(数据的插入,查询等介绍)
- 什么是服务器?如何租用服务器?
- linux 火车票软件,快订火车票软件下载-快订火车票订购appv3.3.5-Linux公社