图像文字识别(三):Tesseract4.0训练字库,提高正确识别率
由于tesseract的中文语言包“chi_sim”对中文手写字体或者环境比较复杂的图片,识别正确率不高,因此需要针对特定情况用自己的样本进行训练,提高识别率,通过训练,也可以形成自己的语言库。
步骤:
1、工具准备:
(1)官方文档:https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract-4.00
(2)Java虚拟机,由于jTessBoxEditor的运行依赖Java运行时环境,所以需要安装Java虚拟机。
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(3)jTessBoxEditor2.0工具,用于调整图片上文字的内容和位置,
下载地址:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
安装包解压后双击里边的“jTessBoxEditor.jar”,或者双击该目录下的“train.bat”脚本文件,就可以打开该工具了。
2、样本图片准备:(进行训练的样本图片数量越多越好)
这里只准备2种不同字体样本进行测试:
3、使用jTessBoxEditor生成训练样本的的合并tif图片:
(1)打开jTessBoxEditor,选择Tools->Merge TIFF,进入训练样本所在文件夹,选中要参与训练的样本图片:
(2)点击 “打开” 后弹出保存对话框,选择保存在当前路径下,文件命名为 “zwp.test.exp0.tif” ,格式只有一种 “TIFF” 可选。
tif文面命名格式[lang].[fontname].exp[num].tif
lang是语言,fontname是字体,num为自定义数字。
比如我们要训练自定义字库 zwp,字体名test,那么我们把图片文件命名为 zwp.test.exp0.tif
4、使用tesseract生成.box文件:
在上一步骤生成的“zwp.test.exp0.tif”文件所在目录下打开命令行程序,执行下面命令,执行完之后会生成zwp.test.exp0.box文件。
tesseract zwp.test.exp0.tif zwp.test.exp0 -l chi_sim -psm 7 batch.nochop makebox
5、使用jTessBoxEditor矫正.box文件的错误:
.box文件记录了每个字符在图片上的位置和识别出的内容,训练前需要使用jTessBoxEditor调整字符的位置和内容。
打开jTessBoxEditor点击Box Editor ->Open,打开步骤2中生成的“zwp.test.exp0.tif”,会自动关联到“zwp.test.exp0.box”文件,这两文件要求在同一目录下。调整完点击“save”保存修改。
6、生成font_properties文件:(该文件没有后缀名)
(1)执行命令,执行完之后,会在当前目录生成font_properties文件
echo test 0 0 0 0 0 >font_properties
(2)也可以手工新建一个名为font_properties的文本文件,输入内容 “test 0 0 0 0 0” 表示字体test的粗体、倾斜等共计5个属性。这里的“test”必须与“zwp.test.exp0.box”中的“test”名称一致。
7、使用tesseract生成.tr训练文件:
执行下面命令,执行完之后,会在当前目录生成zwp.test.exp0.tr文件。
tesseract zwp.test.exp0.tif zwp.test.exp0 nobatch box.train
8、生成字符集文件:
执行下面命令:执行完之后会在当前目录生成一个名为“unicharset”的文件。
unicharset_extractor zwp.test.exp0.box
9、生成shape文件:
执行下面命令,执行完之后,会生成 shapetable 和 zwp.unicharset 两个文件。
shapeclustering -F font_properties -U unicharset -O zwp.unicharset zwp.test.exp0.tr
10、生成聚字符特征文件:
执行下面命令,会生成 inttemp、pffmtable、shapetable和zwp.unicharset四个文件。
mftraining -F font_properties -U unicharset -O zwp.unicharset zwp.test.exp0.tr
11、生成字符正常化特征文件:
执行下面命令,会生成 normproto 文件。
cntraining zwp.test.exp0.tr
12、文件重命名:
重新命名inttemp、pffmtable、shapetable和normproto这四个文件的名字为[lang].xxx。
这里修改为zwp.inttemp、zwp.pffmtable、zwp.shapetable和zwp.normproto
执行下面命令:
rename normproto zwp.normproto
rename inttemp zwp.inttemp
rename pffmtable zwp.pffmtable
rename shapetable zwp.shapetable
13、合并训练文件:
执行下面命令,会生成zwp.traineddata文件。
combine_tessdata zwp.
Log输出中的Offset 1、3、4、5、13这些项不是-1,表示新的语言包生成成功。
将生成的“zwp.traineddata”语言包文件复制到Tesseract-OCR 安装目录下的tessdata文件夹中,就可以使用训练生成的语言包进行图像文字识别了。
14、测试:
输入下面命令,-l后面为训练生成的语言包。
tesseract test.PNG test -l zwp
使用新训练的语言包进行文字识别后,会发现之前识别不出来的文字也可以识别出来了。
附:最终所有的生成文件:
图像文字识别(三):Tesseract4.0训练字库,提高正确识别率相关推荐
- OCR文字识别:Tesseract-4.00训练字库
由于tesseract的中文语言包"chi_sim"对中文手写字体或者环境比较复杂的图片,识别正确率不高,因此需要针对特定情况用自己的样本进行训练,提高识别率,通过训练,也可以形成 ...
- Tesseract-ocr识别中文并训练字库操作指南
Tesseract-ocr识别中文并训练字库操作指南 一.Tesseract-ocr识别中文 1.Tesseract-ocr下载 2.中文语言包下载 Tesseract中文语言包 chi_sim.tr ...
- 论文阅读笔记(五)——狐猴识别系统:一种便于狐猴个体识别的面部识别系统
论文阅读笔记(五)--狐猴识别系统:一种便于狐猴个体识别的面部识别系统 论文简介 论文中文翻译:狐猴识别系统:一种便于狐猴个体识别的面部识别系统 论文名称:<LemurFaceID: a fac ...
- 【转载】Windows下Tesseract4.0识别与中文手写字体训练
一 . tesseract 4.0 安装及使用 1. tesseract 4.0 安装 安装包下载地址: http://digi.bib.uni-mannheim.de/tesseract/tesse ...
- Windows下Tesseract4.0识别与中文手写字体训练
一 . tesseract 4.0 安装及使用 1. tesseract 4.0 安装 安装包下载地址: http://digi.bib.uni-mannheim.de/tesseract/tesse ...
- Tesseract-OCR-v5.0中文识别,训练自定义字库,提高图片的识别效果
1,下载安装Tesseract-OCR 安装,链接地址Index of /tesseract 2,安装成功 tesseract -v 注意:安装后,要添加系统环境变量 3,cmd指定目录到 cd C: ...
- Tesseract-OCR 安装、中文识别与训练字库
简介 OCR(Optical Character Recognition):光学字符识别,是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法将形 ...
- 图像文字识别初探(二)-FAN(Focusing Attention Network)
图像文字识别初探(一)-CRNN(Convolution Recurrent Neural Network)和DTRN(Deep-text Recurrent Network) 图像文字识别初探(二) ...
- 中安OCR文字识别系统V5.0 ——OCR文字识别开发包SDK
一.中安OCR文字识别系统V5.0简介 中安OCR文字识别系统V5.0是一种光学字符识别(OCR)软件开发包(OCR SDK):中安OCR文字识别系统V5.0为软件开发人员.系统集成商.数据加工商(B ...
最新文章
- 【C++】operator bool() 和 operator const bool() const
- 编写 Debugging Tools for Windows 扩展,第 2 部分:输出 (windbg 插件 扩展)
- App推广中如何寻找200个以上渠道
- ZooKeeper自定义数据日志目录
- python读取有空行的csv_如何在使用python读取CSV文件时跳过空行
- python图片显示英文字符_python如何解析字符串中出现的英文人名?
- KIE-WB / JBPM控制台Ng –配置
- 用纸筒做机器人_365天,每天都可以玩出新花样,卷纸筒就是这么牛的神器!
- JavaScript性能优化之加载与执行
- 9、kubernetes之statefulset控制器
- 人工智能ai以算法为基础_IT团队如何为AI项目奠定正确的基础
- POJ 3257 Cow Roller Coaster 二维背包
- PHP+MYSQL+SCWS 做自己的站内搜索引擎
- 供应链金融运营研究 -----内容运营
- 2015 沈阳 Frogs
- (三万字长文)类型即正义:TypeScript 从入门到实践系列,正式完结!
- 【ZT】一个程序占用内存的分类
- 编译安装redis6.2.6
- 视频教程-VUE前端开发/前后端分离-Java
- WPS 查找历史版本记录
热门文章
- kaggle (自杀分析)
- 【Python金融量化 1- 100 】三、流行股票指数
- 你写的机器学习代码占多少内存?这件事很重要,但很多人还不懂
- Designing GANs:又一个GAN生产车间
- 使用PaddleFluid和TensorFlow训练序列标注模型
- SQuAD文本理解挑战赛十大模型解读
- Linux安装配置Java1.8开发环境
- python100以内孪生素数_python用递归筛选法求N以内的孪生质数(孪生素数)
- Java后端学习路线6大维度详细总结(编程基础+开发工具+应用框架+运维知识+成神之路+平稳降落)【可作为知识点梳理列表】【点击可查看高清原图】
- spring程序开发步骤