Tesseract OCR的训练方法

来源:互联网 发布:施乐监控软件 编辑:程序博客网 时间:2024/04/29 13:51

网上有关于很多Tesseract OCR的训练文章,我看了很多,终于成功成功了一会,写下此文做个记录。

预备工作:

1.下载安装Tesseract OCR,我安装的版本是3.02.02

2.下载安装jTessBoxEditor,这个下载下来是不用安装的,不过运行的时候需要java虚拟机,要打开jar文件,因此需要最好安装一遍java环境,我对java还不是很熟,光安装一个jre是不行的。我百度了一下怎么打开jar文件,后来安装了这个。

3.用画图制作几张图片,jpg格式就好,就是在画图软件中用画笔话同样的几个数字,为了保证图片大小一样,各种另存为再清除重画就行。

开始训练

1.合并样本图片,保存为tif格式。

运行jTessBoxEditor,打开菜单栏Tools->Merge TIFF。为了选中多张图片,记得用Ctrl或Shift。合并成num.font.exp0.tif文件。这个名字很讲究,必须是:

[lang].[fontname].exp[num].tif

2.生成Box File文件。

执行命令:

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

3.校正

    再次用上了jTessBoxEditor,打开Box Editor这栏,Open那个num.font.exp0.tif,box文件不用你管,他会自动关联,要是没有关联出来,你该检查一下tif同目录下有没有box文件。所以这个过程建议你不要自己去变动该目录下的任何文件。用该工具手工去更正每张图片的识别结果,别漏了。然后点save,就可以关闭软件了。

4.定义字体特征文件

Tesseract-OCR3.01以上的版本在训练之前需要创建一个名称为font_properties的字体特征文件——font_properties,这个文件不能含有BOM头,我的方法是,新建一个记事本文件,重命名为font_properties,用Notepad++打开,编辑内容:

font 0 0 0 0 0 

然后点击菜单【格式】->【转为UTF-8无ROM编码格式】,再选【以UTF-8无ROM格式编码】,保存退出。

编辑的内容是有规定了,格式为:

<fontname> <italic> <bold> <fixed> <serif> <fraktur>

fontname表示自定义的字体名字,后面是属性,0表示否,1表示是。

5.生成过度文件,老实说,我都不知道这个过程我都干啥了,但目的很明确就是生成语言库文件num.tessdata

我先给出命令:

1)tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train  
   2)unicharset_extractor.exe num.font.exp0.box  

3)mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr  

4)cntraining.exe num.font.exp0.tr  

5) rename normproto num.normproto  
rename inttemp num.inttemp  
rename pffmtable num.pffmtable  
rename shapetable num.shapetable

6)combine_tessdata.exe num. 


5)是分开一步一步的,6)的结果要保证1 3 4 5 13这些行不是-1才算正常,还有num后面的点"."别漏了。

num.traineddata便是最终生成的语言文件,将生成的num.traineddata拷贝到Tesseract-OCR-->tessdata目录下。可以用它来进行字符识别了。

检验效果

识别那些jpg图片

tesseract.exe number.jpg result -l num

把num改成eng对比试试。

本文有参照这篇文章,特此声明。


0 0
原创粉丝点击