引言: Tesseract虽然功能强大,但是依然由于图片本身诸多的干扰因素和识别能力,存在诸多的识别率不高和信息不准确的问题,Training的过程则可以提升起识别的准确率, 本文将介绍如何train tesseract-ocr。

1.  关于Training

Tesseract虽然很强,且可以处理各类的文字转换,但是我们的目标图片并非如我们所期没有各类的干扰因素;在实际的情况下,各类的干扰因素将导致我们的识别准确率和效果大幅度下降;针对这类问题,Tesseract提供了Training的各类工具和过程,以期提升其识别率和正确率,提供可定制化的灵活性。

  • 如何来提升输出的质量(Improve the quality of output),   https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality
  • Traing的介绍   https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract#introduction
  • Testdata    https://github.com/tesseract-ocr/tessdata
  • Training Tesseract https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract-3.00%E2%80%933.02

2.   jTessEditorBox

jTessEditorBox是第三方提供了一个关于自定义用户识别结合的工具,非常的好用强大,其本身是基于Java开发而成的,需要依赖JRE的运行环境,推荐使用JDK8 u40+以上版本,具体信息可以参考其官网信息。

这里做一个小说明: 直接从其官网下载非常慢,且非常容易断线,故直接使用了baidu的离线下载,秒级下载成功;然后绕道从百度云盘上下载。

3.  安装好tesseract

这里假定已经安装好了tesseract,如果安装有问题,可以参考我之前写的一篇文字,关于如何安装tesseract的简明教程。

4.  创建用户自定义的原始图片文件

这里笔者自行使用window自带的工具,创建以下4个图片,分别写了简单的数字:

5.  运行jTessEditorbox工具,merge图片

点击打开Tool菜单,点击merge,选择多个文件,另存在一个合成之后的文件:

在生成另外一个merged文件之后,进行编辑和错误信息的纠偏:

另存文件或者保存文件之后,保存到当下目录。

6.. 运行tesseract命令,生成box文件

>>>>  tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox

[html] view plaincopy
  1. E:\testdir>tesseract num.font.exp0.tif num.font.exp0 batch.nochop makebox
  2. Tesseract Open Source OCR Engine v3.05.00dev with Leptonica
  3. Page 1
  4. Page 2
  5. Page 3
  6. Page 4

结果会生成一个名称为num.font.exp0的文件,在命令运行的当下目录。BOX文件为Tessercat识别出的文字和其坐标。

注:Make Box File 文件名有一定的格式,不能随便乱取名字,命令格式为:

[html] view plaincopy
  1. tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox

其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义。

7. 定义字体特征文件。Tesseract-OCR3.01以上的版本在训练之前需要创建一个名称为font_properties的字体特征文件。font_properties不含有BOM头,文件内容格式如下:
   <fontname> <italic> <bold> <fixed> <serif> <fraktur> 
   其中fontname为字体名称,必须与[lang].[fontname].exp[num].box中的名称保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值为1或0,表示字体是否具有这些属性。
    这里在样本图片所在目录下创建一个名称为font_properties的文件,用记事本打开,输入以下下内容:

[html] view plaincopy
  1. font 0 0 0 0 0

这里全取值为0,表示字体不是粗体、斜体等。。

8. 生成语言文件。在样本图片所在目录下创建一个批处理文件 num_batch.bat,输入如下内容:

[html] view plaincopy
  1. rem 执行改批处理前先要目录下创建font_properties文件
  2. echo Run Tesseract for Training..
  3. tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train
  4. echo Compute the Character Set..
  5. unicharset_extractor.exe num.font.exp0.box
  6. mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr
  7. echo Clustering..
  8. cntraining.exe num.font.exp0.tr
  9. echo Rename Files..
  10. rename normproto num.normproto
  11. rename inttemp num.inttemp
  12. rename pffmtable num.pffmtable
  13. rename shapetable num.shapetable
  14. echo Create Tessdata..
  15. combine_tessdata.exe num.

然后运行这个bat文件,运行结果信息如下:

[html] view plaincopy
  1. E:\testdir>num_batch.bat
  2. E:\testdir>rem 执行改批处理前先要目录下创建font_properties文件
  3. E:\testdir>echo Run Tesseract for Training..
  4. Run Tesseract for Training..
  5. E:\testdir>tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train
  6. Tesseract Open Source OCR Engine v3.05.00dev with Leptonica
  7. Page 1
  8. APPLY_BOXES:
  9. Boxes read from boxfile:       8
  10. Found 8 good blobs.
  11. Generated training data for 2 words
  12. Page 2
  13. APPLY_BOXES:
  14. Boxes read from boxfile:       8
  15. Found 8 good blobs.
  16. Generated training data for 2 words
  17. Page 3
  18. APPLY_BOXES:
  19. Boxes read from boxfile:       8
  20. Found 8 good blobs.
  21. Generated training data for 2 words
  22. Page 4
  23. APPLY_BOXES:
  24. Boxes read from boxfile:       8
  25. Found 8 good blobs.
  26. Generated training data for 1 words
  27. E:\testdir>echo Compute the Character Set..
  28. Compute the Character Set..
  29. E:\testdir>unicharset_extractor.exe num.font.exp0.box
  30. Extracting unicharset from num.font.exp0.box
  31. Wrote unicharset file ./unicharset.
  32. E:\testdir>mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr
  33. Warning: No shape table file present: shapetable
  34. Reading num.font.exp0.tr ...
  35. Flat shape table summary: Number of shapes = 8 max unichars = 1 number with multiple unich
  36. Warning: no protos/configs for Joined in CreateIntTemplates()
  37. Warning: no protos/configs for |Broken|0|1 in CreateIntTemplates()
  38. Done!
  39. E:\testdir>echo Clustering..
  40. Clustering..
  41. E:\testdir>cntraining.exe num.font.exp0.tr
  42. Reading num.font.exp0.tr ...
  43. Clustering ...
  44. Writing normproto ...
  45. E:\testdir>echo Rename Files..
  46. Rename Files..
  47. E:\testdir>rename normproto num.normproto
  48. E:\testdir>rename inttemp num.inttemp
  49. E:\testdir>rename pffmtable num.pffmtable
  50. E:\testdir>rename shapetable num.shapetable
  51. E:\testdir>echo Create Tessdata..
  52. Create Tessdata..
  53. E:\testdir>combine_tessdata.exe num.
  54. Combining tessdata files
  55. TessdataManager combined tesseract data files.
  56. Offset for type  0 (num.config                ) is -1
  57. Offset for type  1 (num.unicharset            ) is 140
  58. Offset for type  2 (num.unicharambigs         ) is -1
  59. Offset for type  3 (num.inttemp               ) is 710
  60. Offset for type  4 (num.pffmtable             ) is 130474
  61. Offset for type  5 (num.normproto             ) is 130573
  62. Offset for type  6 (num.punc-dawg             ) is -1
  63. Offset for type  7 (num.word-dawg             ) is -1
  64. Offset for type  8 (num.number-dawg           ) is -1
  65. Offset for type  9 (num.freq-dawg             ) is -1
  66. Offset for type 10 (num.fixed-length-dawgs    ) is -1
  67. Offset for type 11 (num.cube-unicharset       ) is -1
  68. Offset for type 12 (num.cube-word-dawg        ) is -1
  69. Offset for type 13 (num.shapetable            ) is 131715
  70. Offset for type 14 (num.bigram-dawg           ) is -1
  71. Offset for type 15 (num.unambig-dawg          ) is -1
  72. Offset for type 16 (num.params-model          ) is -1
  73. Output num.traineddata created successfully.

需确认打印结果中的Offset 1、3、4、5、13这些项不是-1。这样,一个新的语言文件就生成了。
num.traineddata便是最终生成的语言文件,将生成的num.traineddata拷贝到Tesseract-OCR-->tessdata目录下。可以用它来进行字符识别了。

9. 基于新的字符集合,进行字符识别验证

验证新的测试集合

创建新的测试图片,我们还是使用输入数字,重新做了一个图片:

打开命令行,我们进行OCR转换:

[html] view plaincopy
  1. E:\testdir>tesseract newtestnum.png newresulttest -l num
  2. Tesseract Open Source OCR Engine v3.05.00dev with Leptonica
  3. Warning in fopenReadFromMemory: work-around: writing to a temp file
  4. E:\testdir>

注意: 这里我们使用了一个新的语言类型 num,就是我们之前进行的用户自定义的识别字符集合。

我们查看一下我们的识别结果集合:

[html] view plaincopy
  1. 12357 684

效果还是非常棒的。

FAQ

1.  在windows下安装成功之后,进行tesseract的操作,碰到如下错误信息:

[html] view plaincopy
  1. E:\testdir>tesseract ttest1.png test1 -l eng
  2. Error opening data file \Program Files (x86)\Tesseract-OCR\tessdata/eng.traineddata
  3. Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your "tessdata" directory.
  4. Failed loading language 'eng'
  5. Tesseract couldn't load any languages!
  6. Could not initialize tesseract.

错误信息的关键词是tesseract_prefix的环境变量设置。

解决办法:  找到testData所在的目录,默认情况下是在tesseract安装的目录,在环境变量中设置TESSDATA_PREFIX的环境变量为testdata所在的目录即可。 重新运行命令即可正常使用。

Tesseract-OCR的Training简明教程相关推荐

  1. Tesseract OCR 下载及安装教程 (中英文语言包)

    Tesseract OCR 下载安装 (中英文语言包) (需要csdn币的下载真没必要,所有的包都在这里免费下) https://github.com/tesseract-ocr/tessdata 这 ...

  2. Tesseract OCR——Windows 10 + CMake-GUI + Visual Studio 2019下编译和使用解决方案

    基本概念 Tesseract OCR:Tesseract-OCR 引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一.然而,HP不久便决定放弃OCR业务 ...

  3. jTessBoxEditor for Tesseract OCR

    jTessBoxEditor下载地址 http://vietocr.sourceforge.net/training.html 以下翻译自安装(解压)后的Readme文件 jTessBoxEditor ...

  4. Tesseract OCR简介(三)--安装及参数使用

    参考:AI-Tesseract-OCR简介_花熊的博客-CSDN博客_tesseract坐标 一.windows 1.1 Tesseract安装 适用于Tesseract 3.05和Tesseract ...

  5. Tesseract OCR简介(一)

    简介 Tesseract(/'tesərækt/) 这个词的意思是"超立方体",指的是几何学里的四维标准方体,又称"正八胞体".右图是一个正八胞体绕着两个四维空 ...

  6. Tesseract OCR 训练字库

    Tesseract OCR是一款由HP实验室开发由Google维护的开源OCR引擎,在字符识别领域发挥着举足轻重的作用.除了使用软件自带的中英文识别库,我们可以使用Tesseract OCR训练属于自 ...

  7. An Overview of the Tesseract OCR Engine译文

    An Overview of the Tesseract OCR Engine译文 Abstract Tesseract OCR引擎以及UNLV OCR精度第四次年度测试中的HP Research P ...

  8. python简明教程word版-计算机开放电子书归档 2018

    97 Things Every Programmer Should Know A Java Reference (UCB CS61b Textbook) AI Cheat Sheet Advanced ...

  9. tesseract ocr训练样本库以及样本库使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.tesseract ocr训练样本库 二.样本库的使用 总结 前言 这篇报告主要介绍两个内容: 1.tessera ...

最新文章

  1. java 单链表约瑟夫环_java循环单链表实现约瑟夫环问题
  2. cpu功耗排行_2020 主流手机处理器排行榜
  3. 检索数据_9_返回的字段在某个范围内的数据
  4. 小白学数据分析------日活跃人数分析
  5. Python精通-Python元组操作
  6. 用javascript写Android和iOS naitve应用,实在炫酷。
  7. es的分片和副本_原创|ES广告倒排索引架构演进与优化
  8. [原创]差分放大器阻抗匹配计算+阻抗计算小工具
  9. Java实现简易版金山打字
  10. [渝粤教育] 三江学院 财务管理 参考 资料
  11. 剑客之剑——倚天剑(Vim)
  12. Go 标准库介绍一: Replacer
  13. 惠普台式计算机系统系统修复,一键恢复系统,详细教您怎么一键恢复惠普笔记本系统...
  14. Mac搭建GO开发环境
  15. 迷宫最短路径问题(数据结构4.4.3 拓展)
  16. OpenCL Programming Guide - OpenCL 编程指南 - 书中源代码
  17. SGU126 Boxes
  18. Android内核模式下对当前进程的cred结构的获取方式
  19. make_moons的用法
  20. js 判断浏览器是IE几

热门文章

  1. 100楼层和两个玻璃球
  2. 2017IT最重要的证书
  3. 护理疑难病例讨论PPT模板-优页文档
  4. 基于APP Inventor2的蓝牙智能小车控制之APP操作系统篇(20191220更新篇)
  5. Python 高级编程和异步IO并发编程 --13_7 futur和task
  6. 在统计学中_统计学中的几个基本概念
  7. python自然语言处理实战 | NLP中用到的机器学习算法学习笔记
  8. 该如何学习嵌入式?看大佬的职业规划!
  9. 目标跟踪:VITAL: VIsual Tracking via Adversarial Learning代码运行
  10. 支付宝手机网页支付java demo调试问题和解决办法