[转]tesseract OCR训练新字体对图片的预处理和要求
版权声明:本文为博主原创文章,未经博主允许不得转载。
同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字符集找到对应字体,打印,扫描,获取训练图片,简单、方便。这个根据实际情况来应用。
tesseract中有这样一句话:
but note that there is no incremental training mode that allows you to add new training data to existing sets.
大意是,没有增量训练的方式,把新的训练数据加入现有的数据集。
tesseract也提出,通过使用多个语言训练库联合使用。如此,新的字体训练库也可以与原有的数据训练库联合使用。如参数 -l 之后 tesseract input.tif output -l eng+newfont。
查看tesseract 3.01的源码,目前没有处理多语言的状况。
而在tesseract 3.02版本已提供了 新增字体库 联合识别 的功能,不过写此文时,tesseract 3.02只有 开发的版本,并没有release。可以获取源码,自己编译,按照3.01的方式进行设置,按照。
在tesseract 3.02源码文档trunk/doc/tesseract.1中
-l lang
The language to use. If none is specified, English is assumed.
Multiple languages may be specified, separated by plus characters.
Tesseract uses 3-character ISO 639-2 language codes. (See
LANGUAGES)