Tesseract5.0训练字库,提高OCR特殊场景识别率(一)
0、目标
很多特殊场景,原生的字库识别率不高,这时候就需要根据需求自己训练字库生成traineddata文件。
一、前期准备工作
1.安装jdk 用于运行jTessBoxEditor
2.安装jTessBoxEditor 用于调整图片上文字的内容和位置
3. 安装tesseract5.0
jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jTessBoxEditor下载地址:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
安装包解压后双击里面的“jTessBoxEditor.jar”,或者双击该目录下的“train.bat”脚本文件,就可以打开该工具了。
二、样本图片准备:(进行训练的样本图片数量越多越好)
三、使用JTBE生成训练样本的合并tif图片
1.打开jTessBoxEditor,选择Tools->Merge TIFF,进入训练样本所在文件夹,选中要参与训练的样本图片,可以同时选择多张图片:
2.点击打开后,会提示你保存tif的地址,保存在当前路径,文件命名格式为hyfontlab.normal.exp0.tif,格式选择tiff
注意:
tif文件命名格式[lang].[fontname].exp[num].tif
lang是语言,fontname是字体,num为自定义数字。
比如我们要训练自定义字库 hyfontlab,字体名normal,那么我们把图片文件命名hyfontlab.normal.exp0.tif
四、使用tesseract生成box文件
在上一步骤生成的 hyfontlab.normal.exp0.tif 文件所在目录下打开Terminal窗口,执行下面命令,执行完之后会生成hyfontlab.normal.exp0.box文件。box文件是通过原生的tesseract-ocr识别出来的结果和对应坐标。如果我们要训练中文字库的话,记得加 -l chi_sim
tesseract hyfontlab.normal.exp0.tif hyfontlab.normal.exp0 -l chi_sim batch.nochop makebox
五、使用jTBE纠正box文件的错误
1.box文件记录了每个字符在图片上的位置和识别出的内容,训练前需要使用jTessBoxEditor调整字符的位置和内容。
2.打开jTessBoxEditor点击Box Editor ->Open,打开步骤三中生成的“hyfontlab.normal.exp0.tif”,会自动关联到“hyfontlab.normal.exp0.box”文件,这两文件要求在同一目录下。调整完点击“save”保存修改。
注意:
如果中文无法识别,需要在settings里面设置字体为宋体,style为Regular,size可以调到24.
六、生成font_properties文件(此文件没有后缀名)
执行命令: echo normal 0 0 0 0 0 > font_properties
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
其中fontname为字体名称,必须与[lang].[fontname].exp[num].box中的名称保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值为1或0,表示字体是否具有这些属性。
七、使用tesseract生成tr训练文件
1. 执行命令: tesseract hyfontlab.normal.exp0.tif hyfontlab.normal.exp0 nobatch box.train
2. 执行完之后,会在当前目录生成hyfontlab.normal.exp0.tr文件。
八、生成字符集文件
1.执行命令: unicharset_extractor fst.word.exp0.box
2. 执行下面命令:执行完之后会在当前目录生成一个名为“unicharset”的文件。
九、生成shape文件
1.执行命令: shapeclustering -F font_properties -U unicharset -O hyfontlab.unicharset hyfontlab.normal.exp0.tr
2.执行完之后,会生成 shapetable 和 hyfontlab.unicharset 两个文件
十、生成聚字符特征文件
1.执行命令: mftraining -F font_properties -U unicharset -O hyfontlab.unicharset hyfontlab.normal.exp0.tr
2.会生成 inttemp、pffmtable、shapetable和hyfontlab.unicharset四个文件。
十一、生成字符正常化特征文件
1.执行命令: cntraining hyfontlab.normal.exp0.tr
2.会生成 normproto 文件。
十二、文件重命名
1.重新命名inttemp、pffmtable、shapetable和normproto这四个文件的名字为[lang].xxx。
2.这里修改为 hyfontlab.inttemp、hyfontlab.pffmtable、hyfontlab.shapetable、hyfontlab.normproto
3.rename normproto zwp.normproto
十三、合并训练文件
1.执行下面命令,会生成hyfontlab.traineddata文件
2.执行命令: combine_tessdata hyfontlab.
3.Log输出中的Offset 1、3、4、5、13这些项不是-1,表示新的语言包生成成功。
4.将生成的“hyfontlab.traineddata”语言包文件复制到Tesseract-OCR 安装目录下的tessdata文件夹中,就可以使用训练生成的语言包进行图像文字识别了。
参考:
Tesseract5.0训练字库,提高OCR特殊场景识别率(一)的更多相关文章
- Tesseract5.0训练字库,提高OCR特殊场景识别率,合并字库(二)
一.准备工作 需要的文件 tif文件和box文件. 如果你打标打好了,但是是分批次打标的,那么可以合并字库,我们最初只需要 tif 和 box 文件,如下: 二.生成对应的 .tr 训练文件 根据不同 ...
- tesseract-ocr 提高验证码识别率手段之---识别码库训练方法
本文是对tesseract-ocr 使用的进一步技术升级说明,使用默认的识别库识别率比较低怎么办? 不用着急,tesseract-ocr本身的工具中提供了使用你提供的素材进行人工修正以提高识别率的方法 ...
- Tesseract-OCR-v5.0中文识别,训练自定义字库,提高图片的识别效果
1,下载安装Tesseract-OCR 安装,链接地址https://digi.bib.uni-mannheim.de/tesseract/ 2,安装成功 tesseract -v 注意:安装后, ...
- Tesseract-OCR4.0识别中文与训练字库实例
关于中文的识别,效果比较好而且开源的应该就是Tesseract-OCR了,所以自己亲身试用一下,分享到博客让有同样兴趣的人少走弯路. 文中所用到的身份证图片资源是百度找的,如有侵权可联系我删除. 一. ...
- 深入学习Tesseract-ocr识别中文并训练字库的方法
上篇文章简单的学习了tesseract-ocr识别图片中的英文(链接地址如下:https://www.cnblogs.com/wj-1314/p/9428909.html),看起来效果还不错,所以这篇 ...
- ABBYY FineReader利用模式提高OCR质量
提高OCR质量,除了可以使用ABBYY FineReader 12OCR文字识别软件解决纸质文档的复杂结构未出现在电子文档中,或者未正确检测到区域的问题(详见如何提高ABBYY FineReader ...
- 利用jTessBoxEditor工具进行Tesseract3.02.02样本训练,提高验证码识别率
1.背景 前文已经简要介绍tesseract ocr引擎的安装及基本使用,其中提到使用-l eng参数来限定语言库,可以提高识别准确率及识别效率. 本文将针对某个网站的验证码进行样本训练,形成自己的语 ...
- 用jTessBoxEditorFX训练字库
软件下载:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/ 官方字库下载:https://github.com/tesser ...
- Tesseract-OCR识别中文与训练字库
转自:https://www.cnblogs.com/lcawen/articles/7040005.html 关于中文的识别,效果比较好而且开源的应该就是Tesseract-OCR了,所以自己亲身试 ...
随机推荐
- 生成对抗网络 Generative Adversarial Networks
转自:https://zhuanlan.zhihu.com/p/26499443 生成对抗网络GAN是由蒙特利尔大学Ian Goodfellow教授和他的学生在2014年提出的机器学习架构. 要全面理 ...
- LOJ bitset+分块 大内存毒瘤题
题面 $ solution: $ 真的没有想到可以用分块. 但是可以发现一个性质,每个询问只关心这个点最后一次赋值操作,和这个赋值操作后的所有取 $ min $ 操作.这个感觉很有用,但是真的很难让人 ...
- 如何提高SMTP邮件的安全性?从而不被黑客窃听
简单邮件传输协议(SMTP)用于在邮件服务器之间进行邮件传输,并且传统上是不安全的,因此容易被黑客窃听.命名实体的基于DNS的认证(国家统计局)用于SMTP提供了邮件传输更安全的方法,并逐渐变得越来越 ...
- ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿
原因分析 主要是因为文件是网络下载的,office自动锁定了文件(默认不可编辑). 解决办法 在文件上右键-属性-解除锁定(最下面),就不会进行检查了,问题也就解决了. ppt文件---右键---属性 ...
- RPC协议解析
RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.简言之,RPC使得程序能够像访问本地 ...
- layui数据表格分页加载动画,自己定义加载动画,"加载中..."
记录思路,仅供参考 在表格渲染完成后,在done回调函数中给分页动态加点击事件, 关闭"加载中..."动画也是在 done回调函数中关闭 这是我实现的思路,记录给大家参考. , d ...
- AngualJS-leaflet之视图等级缩放
在http://tombatossals.github.io/angular-leaflet-directive/#!/examples/events 中的则是zoomlevelschange,然后识 ...
- 触发器insert
USE [stalentzx]GO/****** Object: Trigger [dbo].[GZ_HISTORY_INSERT] Script Date: 2019/12/24 13:11:40 ...
- [HG]AK 题解
前言 什么鬼畜玩意,扶我起来,我要用__int128,这辈子都不珂能用龟速乘的... 真香. 题解 我们知道这个模数是个神奇的东西 \(2305843008676823040 = 2^{29} \ti ...
- 3D Computer Grapihcs Using OpenGL - 02 QGLWidget
用红色来填充GLWidget窗口 修改MyGlWindow.h,添加两个函数,一个用来初始化OpengGL,一个用来绘制OpenGL #pragma once #include <QtOpenG ...