Tesseract 训练自己的模型步骤

1 获取大量验证码图片

2 进行验证码图片预处理(降噪、二值化等)并且生成 tiff 格式图片

可以用画图进行图片另存为 tiff 格式,也可以用下列代码批量进行图片转换

from PIL import Image

im = Image.open(path)
im.save('xxxx.tiff')

3 使用 jTessBoxEditor 中的 merge tiff 将所有 tiff 图片生成一份 tif 文件

jTessBoxEditor 软件下载:ef8b7c1eb08b40a49b943e64be4bf22a_jTessBoxEditor.zip

tif 文件命名格式:[language].[fontname].exp[num].tif
例如 eng.yzm.exp0.tif
注意这个格式是 Tesseract 官方定义的,如果不按照这个格式来定义,那么生成的语言库不会生效

4 打开命令行并切换到 tif 文件所在的目录下

输入tesseract.exe eng.yzm.exp0.tif eng.yzm.exp0 batch.nochop makebox
这个步骤的目的是生成 eng.yzm.exp0.box 文件,box 文件的命名规范与 tif 命名规范一致
命令行不要关闭

5 将 tif 文件和 box 文件放在同一个路径下

打开 jTessBoxEditor,在 box editor 中打开 tif 并对自动标注的结果进行纠正后保存

6 生成字符特征文件

在命令行中输入tesseract.exe eng.yzm.exp0.tif eng.yzm.exp0 nobatch box.train

7 产生字符集

unicharset_extrator.exe eng.yzm.exp0.box

8 定义字体特征文件

新建文件命名为 font_properties(类型为文件,如果不知道怎么新建可以在 Tesseract-OCR\tessdata\configs 文件夹中复制一个文件并改名为 font_properties)
在文件中写入yzm 0 0 0 0 0
表示字体名为 yzm,是普通字体,不加粗,不倾斜

9 生成字体形状特征文件

shapeclustering.exe -F font_properties -U unicharset eng.yzm.exp0.tr

10 聚集字符特征

mftraining.exe -F font_properties -U unicharset eng.yzm.exp0.tr

11 生成字符形状正常变化特征文件 normproto

cntraining.exe eng.yzm.exp0.tr

12 文件重命名

给 inttemp,normproto,pffmtable,shapetable,unicharset 添加前缀“yzm”,也就是我们的字体名

13 生成语言库

combine_tessdata.exe yzm. 注意最后有个点