首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[tesseract]用jTessBoxEditor制作训练库

[tesseract]用jTessBoxEditor制作训练库

作者头像
云未归来
发布2025-07-20 15:59:05
发布2025-07-20 15:59:05
2350
举报

做课题的时候,用tesseract-ocr进行字符识别时,有官方提供的字库,但这些字库并不能满足我们所有的需求,例如手写字体以及一些其他的字体。tesseract提供的字库中没有我们相应的字体时,就会出现识别错误的问题,这个时候就需要训练自己的字库进行训练了。

1.准备训练图片,并且制作tif格式

字库的训练图片格式最好是png的,注意图片数字周围的空白区域不能太窄,tesseract无法识别空白区域太窄的字符。

将上面的图片放到一个D:\jesdor目录下(自己可以命名)新建的文件夹下,在D:\jesdor目录下有一个jTessBoxEditor.jar的java文件,这个文件需要用java虚拟机打开,电脑上配置了java环境就可以直接打开。

选择 Tools -> Merge TIFF,打开对话框,选择训练样本所在文件夹,并选中所有要参与训练的样本图片,注意对话框中“文件类型”的选取,选择所有的图片文件。

选择好了后,点击打开按钮,出现文件保存对话框,输入文件名:num_1.font.exp0.tif

正确进行上述步骤后会出现merge完成的提示

然后在图片集那个文件目录下会出现生成的这个tif文件

2. 使用tesseract生成.box文件

打开命令提示符,进入步骤2生成的num_1.font.exp0.tif文件所在目录

然后执行命令:tesseract num_1.font.exp0.tif num_1.font.exp0 –l eng batch.nochop makebox

执行完成后,会在当前目录下生成num_1.font.exp0.box文件。

使用jTessBoxEditor调整.box训练文件 .box文件中记录了每个字符在图片上的位置以及识别出的内容,训练之前需要使用jTessBoxEditor调整字符的位置和内容。 打开 jTessBoxEditor ,点击 Box Editor -> Open ,打开步骤2中生成的 “num_1font.exp0.tif” ,会自动关联到 “num_1.font.exp0.box” 文件:

打开完成后,每一个会显示每一张图片的的识别结果

接下来我们对每张图片的识别字符和识别框进行纠正,如果字符识别错了,我们就改成正确的,如果识别出现偏差,我们也要进行调整。

这个过程是非常重要的,字符框的好坏取决于方框是否调整的准确。 我们把所有图片的全部纠正完。

点击save按钮,将校正后的box文件保存。


3.使用echo命令创建字体特征文件

在命令符窗口中输入如下命令:echo font 0 0 0 0 0>font_properties

执行完成之后,在当前文件夹下生成font_properties文件 也可以手动在该文件夹下建立一个名为 “font_properties” 的文件,这个文件没有后缀名称,输入内容 “font 0 0 0 0 0” , 表示字体 font 的粗体、倾斜等共计5个属性全都设置为0

4. 使用tesseract生成num_1.font.exp0.tr训练文件

在命令行窗口中输入命令: tesseract num_1.font.exp0.tif num_1.font.exp0 nobatch box.train

生成训练文件成功


5.生成字符集文件

在命令行中执行如下命令: unicharset_extractor num_1.font.exp0.box

执行之后在当前目录生成unicharset文件


6. 生成数据字典

在命令行中先执行如下命令: mftraining -F font_properties -U unicharset -O num_1.unicharset num_1.font.exp0.tr

接着执行另外一个训练命令:cntraining num_1.font.exp0.tr

会在当前目录下生成 4 个文件(inttemp、pffmtable、normproto、shapetable)

需要手动修改名称,这里我们修改成num_1.inttemp、num_1.pffmtable、num_1.normproto、num_1.shapetable。

7.合并数据文件,生成字库文件

在命令提示符中执行如下命令:combine_tessdata num_1.

生成字库文件成功,会在当前目录生成num_1.traineddata文件,这个语言就是跟我们下载的官方字库一样,例如eng,chi_sim一样,不过这个字库专门用于识别图片中那种数字字体。

我们把这个字库num_1放到tesseract-ocr的tessdata目录下D:\jTessBoxEditor\tesseract-ocr\tessdata

8.验证生成的语言包字库

输入命令:tesseract --list-langs 可以看到语言库中有自己刚添加的字库num_1

我们用这个字库来识别一张图片 tesseract 72.png out -l num_1 会在图片目录下生成out.txt文件,我们打开这个txt文件,可以看到使用num_1字库识别这张图片的结果

打开out文件,发现识别结果与图片完全符合,至此,自己制作的字库就已经成功了,可以识别所有这种数字字体的图片。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.准备训练图片,并且制作tif格式
  • 2. 使用tesseract生成.box文件
  • 3.使用echo命令创建字体特征文件
  • 4. 使用tesseract生成num_1.font.exp0.tr训练文件
  • 5.生成字符集文件
  • 6. 生成数据字典
  • 7.合并数据文件,生成字库文件
  • 8.验证生成的语言包字库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档