如何为Tesseract 4.1.0创建Traineddata文件

7
我想要识别车牌上的字符。如何在Ubuntu 16.04上训练Tesseract-ocr以识别相应的车牌?因为我不熟悉训练,请帮我创建一个'traineddata'文件以识别车牌号码。
以下是需要翻译的内容: 我有1000张车牌图像。请看一下。任何帮助都将不胜感激。
所以我尝试了以下命令:
tesseract [langname].[fontname].[expN].[file-extension] [langname].[fontname].[expN] batch.nochop makebox

tesseract eng.arial.plate3655.png eng.arial.plate3655 batch.nochop makebox

但是它会出现错误。
Tesseract Open Source OCR Engine v4.1.0-rc1-56-g7fbd with Leptonica
Error, cannot read input file eng.arial.plate3655.png: No such file or directory
Error during processing.

之后我尝试了以下操作

tesseract plate4.png eng.arial.plate4 batch.nochop makebox

在某些盘中它能够正常工作。但是在第二步骤中,我遇到了错误。

附有截图。

第四个盘的图像用于训练。

第1步骤和第2步骤在终端中显示。

第1步骤和第2步骤后生成的文件。

第1步骤和第2步骤后生成文件的内容。

1个回答

12

为Tesseract 4创建.traineddata文件

{*注:在安装tesseract后打开命令提示符并执行以下操作。}

步骤1: 为想要训练的图像制作盒子文件

语法:

tesseract [langname].[fontname].[expN].[file-extension] [langname].[fontname].[expN] batch.nochop makebox

例如:

tesseract own.arial.exp0.jpg own.arial.exp0 batch.nochop makebox

{*注意:制作盒子文件后,我们必须更改或修改盒子文件中错误识别的字符。}

步骤2: 创建.tr文件(合成图像文件和盒子文件)

语法:

tesseract [langname].[fontname].[expN].[file-extension] [langname].[fontname].[expN] box.train

例如: 运行命令:tesseract own.arial.exp0.jpg own.arial.exp0 box.train

步骤3: 从box文件中提取字符集(该命令的输出结果是unicharset文件)

语法:

unicharset_extractor [langname].[fontname].[expN].box 

例如:

unicharset_extractor  own.arial.exp0.box

步骤4:根据我们的需要创建一个font_properties文件。

语法:

echo "[fontname] [italic (0 or 1)] [bold (0 or 1)] [monospace (0 or 1)] [serif (0 or 1)] [fraktur (0 or 1)]" > font_properties 

Eg:

->

例如:

echo "arial 0 0 1 0 0" > font_properties

步骤5:训练数据。

语法:

mftraining -F font_properties -U unicharset -O [langname].unicharset [langname].[fontname].[expN].tr

例如:

mftraining -F font_properties -U unicharset -O own.unicharset own.arial.exp0.tr

第6步:

语法:

cntraining [langname].[fontname].[expN].tr

例如:

cntraining own.arial.exp0.tr
{*注意:在第5步和第6步之后,会创建四个文件。(shapetable,inttemp,pffmtable,normproto)}

步骤7: 将四个文件(shapetable,inttemp,pffmtable,normproto)重命名为([langname].shapetable,[langname].inttemp,[langname].pffmtable,[langname].normproto)

语法:

rename filename1 filename2

例如:

    rename shapetable own.shapetable
    rename inttemp own.inttemp
    rename pffmtable own.pffmtable
    rename normproto own.normproto

步骤8: 创建.traineddata文件

语法:

combine_tessdata [langname].

例如:

combine_tessdata own.

{ * 注意:我将仅使用一个图像exp0来创建traineddata。如果您想训练多个图像,您可以训练exp1、exp2等等直到expn }

参考资料


请在您的答案中提供解释。 - Word Rearranger
创建*.traineddata文件,您应该执行上述步骤。之后将*.traineddata复制并粘贴到/path/Tesseract-OCR/tessdata中。运行tesseract时,使用命令"tesseract inputimage outputfile -l yourlang"。如果您创建的traineddata文件名为"own.traineddata",请将"yourlang"替换为"own"。 - Lukman Mhd
为了进行车牌识别,您需要尽可能训练车牌图像。此外,您还可以使用“--use-words”选项来识别大多数可能包含文字的车牌。 - Lukman Mhd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接