Train Tesseract LSTM methods Comparison

近期整理了一系列关于train tesseract LSTM的文章,Train Tesseract LSTM with makeTrain Tesseract LSTM with tesstrain.sh,该如何从中选择适合自己的方案呢?本文记录方案选择的基本原则及各种方案的异同。

方案选择基本原则

step by step

如果已准备好.box和.tif文件,或者仅有待训练图像,或者训练单独字体,均可以选择此方案:step by step: Win10 Tesseract4.1 LSTM training.

tesstrain.sh

如果想训练某种语言的新字体,可以选择方案1 step by step中的text2image + lstmtraining来实现,但更推荐选择此方案: tesstrain.sh: Train Tesseract LSTM with tesstrain.sh on Windows. 且通过设定参数,tesstrain.sh既可以用于LSTM的训练,也可以用于传统字库的训练。

关于tesstrain.sh,其参数my_boxtiff_dir值得特别说明:

从注释上来看,感觉tesstrain.sh似乎可以单独训练自己准备好的.box和.tif文件。但事实并非如此,fontlist和fonts_dir参数是必选参数,若要执行的.sh文件中未设置这两个参数,tesstrain.sh会为这两个参数设置默认值。因此最终训练的是参数中设置的fontlist和用户设置的.box/.tif文件同时进行训练。

make

如果只待训练图像,可以选择方案1 step by step中的jTessBoxEditor + lstmtraining来实现,但更推荐此方案:make: Train Tesseract LSTM with make on Windows. 该方案下,只要手动准备与相应图像中文字对应的文本文件,在命令行中输入一个命令即可。

想知道该方案中的makefile是如何工作的吗?看这里:How the makefile in tesstrain-win work.

个人比较推荐的选择优先顺序如下:

Basic principles of Tesseract LSTM train methods selection

不同训练方案的异同

上述训练方案的流程基本相同:

1. 根据已有文件生成.box和.tif文件。

2. 根据.box和.tif文件,以及基础字库生成lstmtraining所需要的参数。

3. 根据需求设定lstmtraining的参数并开始训练。

三种方案的主要差异在第1步,生成.box和.tif的方式不一样;第2步和第3步用到的均是Tesseract的训练工具。

方案1 step by step中的text2image + lstmtraining,与方案2 tesstrain.sh的第1步均用到了Tesseract的训练工具text2image,只是step by step中单次训练一种字体,且各项命令需要逐步手动输入;而tesstrain.sh通过设定参数,可以同时训练多种字体,在训练环境正常的情况下,只需要手动输入一个命令,tesstrain.sh会循环执行text2image,分别为不同的字体生成.box和.tif文件,并自动执行后续训练命令。因此无论是训练单种字体或者训练多种字体,均推荐使用方案2 tesstrain.sh。

方案1 step by step中的jTessBoxEditor + lstmtraining方案,使用了传统训练工具jTessBoxEditor来生成.box文件。

方案3 make 使用python代码根据GroundTruth来生成.box和.tif文件。

如果大家有兴趣,可以看看python生成的.box文件与text2image生成的.box文件的差异。python生成的.box文件,获取的是单行文本在图像中对应的文本的位置信息;而text2image生成的.box文件,则是单个字符在图像中的位置信息。

上述方案均可用于Training From ScratchFine Tuning for ± a few charactersTraining Just a Few Layers,只需要在相应文件或命令中修改lstmtraining的相关参数设定即可。如何修改?请查阅Tesseract官方文档How to use the tools provided to train Tesseract 4.00相关说明。

本文到此结束,感谢阅读,谢谢支持。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

Fork me on GitHub