文字识别 OCR 训练样本
Windows下环境搭建
1.Tesseract-OCR的安装
Tesseract-OCR遵循Apache 2.0 license开源协议。
官方地址:https://github.com/tesseract-ocr/tesseract
下载地址:https://digi.bib.uni-mannheim.de/tesseract/
你也可以查看源码编译安装:https://github.com/tesseract-ocr/tesseract/wiki/Downloads
或者非官方安装包:https://github.com/UB-Mannheim/tesseract/wiki
这里我下载了最新的V5.0.0.20190623版本,一路next ,知道安装完成 ,然后把下图中的目录配置到系统环境变量
Tesseract_OCR.png
安装后要配置系统环境变量(一般会自动配置)
使用命令测试: tesseract tif文件 要生成的文件名路径 -| traineddata文件
示例:
tesseract D:\ma\NDK\训练例子\sa\0id16.tif y -| "D:\Program Files\Tesseract-OCR\tessdata\eng.traineddata"
会在当前目录生成一个文件 y.txt
2.安装 jTessBoxEditor
下载地址:https://sourceforge.net/projects/vietocr/files/jTessBoxEditor/
下载之后解压缩,如图:
在命令行窗口运行jTessBoxEditor.jar 命令: java -jar 文件全路径
出现如下如界面:
jTessBox运行界面.png
准备样本
java -jar jTessBoxEditor .jar 运行后
jTessBoxEditor ->tools->merge tiff, 选择需要训练的 tif 文件
megerTIFF.png
文件名必须是如下格式:[lang].[fontname].exp[num]
lang:语言名(训练生成的示为语言)
fontname:字体名
num:序号(无所谓)
于是可以得到一个命名为 zh.song.exp0.tif 的文件
生成BOX
命令:
tesseract zh.song.exp1.tif zh.song.exp1 batch.nochop makebox
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num]
batch.nochop makebox
[lang].[fontname].exp[num] 2.2 给我们的结果,
[lang].[fontname].exp[num] 名字与上面的相同,这个是保存 box 文件的名字
batch.nochop makebox
训练
1.在训练的当前目录创建font_properties文件,此文件没有后缀
文件内容为 :
<fontname> <italic> <bold> <fixed> <serif> <fraktur>
例如:
song 0 0 0 0 0
italic:斜体 0/1
bold:黑体 0/1
fixed:默认字体 0/1
serif:衬线字体 0/1
fraktur:德文黑字体 0/1
2.产生字符特征文件:
命令:
tesseract zh.song.exp1.tif zh.song.exp1 box.train
运行此命令后会多出两个文件,如下图:
tesseract box train.png3.计算字符集:
命令:
unicharset_extractor [lang].[fontname].exp[num].box
计算字符特征.png
运行以上命令后,目录里面会生成 unicharset 文件
4. 聚集字符特征
shapeclustering -F font_properties -U unicharset [lang].[fontname].exp[num].tr
[可以不运行] 生成 shapetable 文件
mftraining -F font_properties -U unicharset -O [lang].unicharset [lang].[fontname].exp[num].tr
5.生成字符形状正常化特征文件
命令格式:cntraining [lang].[fontname].exp[num].tr
生成 normproto 文件
命令:cntraining zh.song.exp1.tr
cntraining命令.png
重命名 shapetable, normproto, inttemp, pffmtable
[lang].shapetable
[lang].normproto
[lang].inttemp
[lang].pffmtable
名称:
zh.shapetable
zh.normproto
zh.inttemp
zh.pffmtable
命令:
ren shapetable zh.shapetable
ren normproto zh.normproto
ren inttemp zh.inttemp
ren pffmtable zh.pffmtable
重命名.png
6.生成 tessdata 文件
运行 combine_tessdata [lang].
得到 *.traineddata 结果
得到zh.traineddata.pngcombine_tessdata zh.