所需要的工具:

Tesseract4.0(windows版本于2017年1月30号发布),据说windows版本会有很多诡异的Bug;

java7以上版本,为安装jTessBoxEditor做准备;

jTessBoxEditor,用于标定数据,此软件依赖于java;

准备一些需要识别的目标图片,应该能够覆盖所有需要识别的字符;

训练新字体对图片的预处理和要求:

同tesseract OCR识别对图片有要求一样,在训练新的字符集或新的字体时,对图片也有一定要求,符合要求的图片,能大大提高训练的效率。

在图像处理方面,去除噪声,使训练的字符图片尽量连贯、清晰。

其他方面,通常的要求如下:

1. 在一幅图片内,字体统一,决不能将多种字体混合出现在一幅训练图片内;如果不是通过扫描文本获取的字符图片,这个条件很容易被忽视。

2. 理想条件下,同种字体的字符图片集中到一幅大的训练图片中,在同一页内;

3. 要保留一定的字符间距与行间距;

4. 字符高度(大小),只要满足高度最小条件即可,对于小写字符x,其高度要至少大于10个像素,一般统一采用一种大小即可,tesseract engine默认的training数据集也是一种大小;

5. 对于非字母字符,如!@#$%^&(),.{}<>/?,不要集中在一起出现,原因是这样不利于tesseract找出 文本行基线baseline,不利于文本高度及大小的检测,baseline检测是tesseract engine的第一步;

6. 一般每个字符需要10个样本,高频常见字符至少20个样本,不常见字符需要5个样本;

7. 对于同种字体,多页训练图片,可以在训练中,件用相同的方式合并tr文件和box文件,两类文件内的字符次序要相同,利于提高训练效果。

在获取训练字符图片方面,不一定非要从待识别图片中收集,可以利用word字符集找到对应字体,打印,扫描,获取训练图片,简单、方便。这个根据实际情况来应用。

资源文件(后缀为.traineddata文件)是什么?

可以通过以下命令,打开eng资源文件到english文件中:

combine_tessdata -u /usr/share/tesseract-ocr/tessdata/eng.traineddata english/eng

可以看到如下界面

可以看到,这个资源文件里包含了很多东西,这些文件各自的意义为:

  • config: 配置文件
  • unicharset: 字符集文件,所谓 "字符集" 即是所有可被识别的字符的集合
  • unicharambigs: 识别歧义修正文件
  • inttemp: 每个字符的 "原型" ,或者是 "标准型" ,当然啦,这里面其实是包含了字符的各种特征,并不是一个标准的 "字符图像"
  • pffmtable: 指明了每个字符的特征数量
  • normproto: 项目网站上的说法是 "normalization sensitivity prototypes" ,不知道怎么翻译合适
  • 以 dawg 结尾的文件: 有向非循环词图(Directed Acyclic Word Graph, DAWG)文件,用来增强、调整识别过程
  • cube-unicharset, cube-word-dawg: 用于 Tesseract 内部名为 CUBE 的识别引擎,无资料,不详
  • shapetable: 同样是个不知道如何翻译的家伙,反正项目网站上说这个文件已经不需要使用(但还得有这个文件),就不纠结了

通过以下命令可以再将这些文件进行打包:

combine_tessdata eng

经过尝试,以下五个文件必不可少:

  • unicharset
  • inttemp
  • pffmtable
  • normproto
  • shapetable

训练的过程就是为了产生这些文件

unicharset_extractor 命令用于产生unicharset文件即字符集文件;

font_properties文件信息释义:

<font name> <italic?> <bold?> <fixed?> <serif?> <fraktur?>

第一个字段为字体名称,名称中不能有空格,名称可以任意,但建议尽量贴近字体在操作系统上的名称,后面五个字段分别表示:

  • 该字体是否有斜体
  • 该字体是否有粗体
  • 该字体是否有无衬线体
  • 该字体是否有衬线体
  • 该字体是否有哥特体

训练方法步骤:

1) 准备一些需要识别的目标图片,应该能够覆盖所有需要识别的字符;

2) 图片必须为tiff格式,否则无法进行以下步骤;

3) 合并多个tif文件为一个,这里需要用到一个软件jTessBoxEditor;

4) 双击.bat文件运行jTessBoxEditor软件;

5) 打开“Tools->Merge TIFF...”,选择多个tif文件,保存为name.tif,所有下面的“name”,就是你所取的识别引擎文件的名字,可以改成你自己的。name的格式为 [lang].[fontname].exp[num]

lang为语言,fontname为字体类型(自定义),num为数字(0,1,2,3,...)

6) 输入以下命令,生成box文件,该文件记录了tesseract识别出来的每一个字和其位置坐标;

7) 使用jTessBoxEditor打开name.tif文件,需要记住的是第2步生成的name.box要和这个name.tif文件同在一个目录下。逐个校正文字,后保存。

8) 通过以下命令,生成特征文件(unicharset文件);

a) 生成tr文件

//tesseract.exe [tif图片文件名] [生成的tr文件名] nobatch box.train

tesseract.exe chi.fangzheng.exp0.tif chi.fangzheng.exp0 nobatch box.train

b) 生成Character集合

//unicharset_extractor.exe [box文件名]

unicharset_extractor.exe chi.fangzheng.exp0.box

9) 聚集;

首先,创建字体特征文件,新建文件“font_properties”,并输入文本:name 0 0 0 0 0;

其次,上一步的特征文件生成后,需要将同样文字的不同字体的特征聚集到一起来产生该文字的一个 原型 ,这一步需要执行三个命令:

shape_clustering -F font_properties -U unicharset *.tr

这一步将会生成一个名为 shapetable 的文件。

mftraining -F font_properties -U unicharset -O banker.unicharset *.tr

这一步将会生成一个名为 inttemp文件和pffmtable文件。

cntraining *.tr

这一步将会生成一个名为normproto 的文件。

10) 合并数据文件(打包)

首先,需要将unicharset, inttemp, normproto, pfftable,shapetable这五个文件加上前缀“name.”

然后执行以下命令:

combine_tessdata name.

本例中的name为eng.test.exp0

需确认打印结果中的 Offset 1、3、4、5、13 这些项不是 -1。这样,一个新的语言文件就生成了。

至此,训练过程结束。

此时目录下“name.traineddata”的文件拷贝到tesseract程序目录下的“tessdata”目录。

以后就可以使用该该字典来识别了,例如:

//tesseract [图片文件名] [需要输出的文本文档的文件名] -l [识别的语言] tesseract chi.fangzheng.exp0.tif out -l chi

或者 tesseract.exe test.jpg out –l name -psm 7

将生成的文件name.traineddata拷贝到linux相应的目录下,一样可以使用,整个训练过程最麻烦的就是使用jTessBoxEditor进行文字的校正(即标注),需要非常耐心,这样识别结果就会大大提高。

使用Tesseract训练图片的方法相关推荐

  1. CV之FR:基于DIY人脸图像数据集(每人仅需几张人脸图片训练)利用Hog方法提取特征和改进的kNN算法实现人脸识别并标注姓名(标注文本标签)—(准确度高达100%)

    CV之FR:基于DIY人脸图像数据集(每人仅需几张人脸图片训练)利用Hog方法提取特征和改进的kNN算法实现人脸识别并标注姓名(标注文本标签)-(准确度高达100%) 目录 基于DIY人脸图像数据集( ...

  2. Google开源OCR项目Tesseract训练(自己训练的记录,未成功)

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 本文训练Tesseract用的方法主要参考文章  ...

  3. Tesseract训练新字体

    最近工作需要,要对特定字体准确识别,用官方下载的eng识别库,错误率比较高,不能满足要求,所以就踏上了训练字库的征程,我说下我寻找的几种训练方法 注意: Tesseract-OCR 和 Tessera ...

  4. python OCR Tesseract 训练

    Ps:Tesseract识别英文和字母效果好 中文的话,虽然有训练数据也可以识别,但是效果不是很好 Tesseract的安装和使用: 1.首先用 pip 下载包 pip install tessera ...

  5. 基于Tesseract训练的数字识别研究

    征地档案数字识别研究与应用 1 永州市自然资源与规划勘测事务中心 湖南 永州425000 摘要:针对征地档案数据整理建库工作中界址点坐标电子数据缺失现象,当前主要通过人工识别档案资料并且将坐标数据抄录 ...

  6. yolov3模型识别不出训练图片_YOLOv3训练自己的模型

    3.0 前言 本文是YOLOv3系列第3篇,记录YOLOv3如何训练自己的模型. YOLOv3系列第2篇:YOLOv3的应用 建议参考github上作者的说明,写的十分清楚. 参考的网页: 3.1 配 ...

  7. 图像文字识别(二):java调用tesseract 识别图片文字

      在JAVA中调用tesseract识别图片的文字内容,主要有两种方式:cmd方式,tess4j方式.在这篇博客中,主要记录一下通过cmd命令行的方式.cmd方式,就是通过在java中调用命令行,来 ...

  8. Tesseract训练中文字体识别(转)

    原文地址:http://www.jianshu.com/p/31afd7fc5813 前言 网上已经有大量的tesseract的识别教程,但是主要有两个缺点: 大多数比较老,有部分内容已经不适用. 大 ...

  9. Tesseract训练识别数字

    Tesseract训练识别数字 一.软件环境 1.安装Tesseract 3.0.2 2.安装jTessBoxEditorFX训练工具 二.训练前需要准备的素材 1.多张包含数字的图片 三.开始训练 ...

最新文章

  1. 史上最全的 Linux Shell 文本处理工具集锦,快收藏!
  2. Proteus与Keil联调
  3. Google Maps API编程资源大全
  4. 浅谈以太坊智能合约的设计模式与升级方法
  5. xftp如何搜索文件_头条搜索站长平台如何添加网站和sitemap文件?附图文教程
  6. 2019 ICPC南京站总结
  7. 初识uniapp---uniapp一次开发_小程序_Android_IOS_快应用通用工作笔记001
  8. java操作sql数据库_Java连接Sql数据库经常用到的操作
  9. 第十届南京邮电大学网络攻防大赛(NCTF 2021)writeup
  10. Linux中出现 xxx is not in the sudoers file.This incident will be reported.
  11. 关于在ElasticSearch中使用now函数进行时间范围过滤查询的问题
  12. 焦作大学对口计算机分数线,焦作大学录取分数线|2021焦作大学分数线|2021年焦作大学高考分数线|2021年焦作大学招生计划录取人数...
  13. 声音信号 dB 及 dBA 的计算方式
  14. background-position进行图片定位
  15. 曲阜水利学校计算机96级聚会,曲阜水利学校50年校庆
  16. 音效、配乐素材网站,免费商用
  17. Linux 安装httpd(apache)超详细教程
  18. vb.net与SQL Server
  19. 卸载Oracle11g的步骤
  20. 前端_Vue_1.初识Vue

热门文章

  1. 社交APP平台微信推出小程序意图何如?
  2. 获近亿元融资,这家国产毫米波雷达“优等生”如何斩获国际订单?
  3. 科克曼的十五名女生问题
  4. 天津大学与东南大学计算机专业,东南大学和天津大学,哪个更好一些?
  5. Open Inventor 库简介
  6. 欧姆龙旋转编码器接入单片机(STM32为例)的方法
  7. tiny4412开发板Android篇_2基于tiny4412的Android系统的编译
  8. 几乎是史上最全最实用的Android性能全面分析与优化方案研究
  9. 【科研系列】专利检索工具及方法简单介绍
  10. 新增Linux系统调用——计算一个数的三次方