“添加”新字体到 Tesseract eng.traineddata

Posted

技术标签:

【中文标题】“添加”新字体到 Tesseract eng.traineddata【英文标题】:"Adding" new fonts to Tesseract eng.traineddata 【发布时间】:2013-04-26 07:50:36 【问题描述】:

据我所知,Tesseract 3.x 带有 6 种英文(如果我错了,请纠正我)字体。我需要为更多 5 种字体训练 Tesseract。我只需要大写字母和数字(没有特殊字符或符号)。

我遵循了各种流程,例如: Adding New Fonts to Tesseract 3 OCR Engine

还使用工具来自动化流程,例如 Serak Tesseract Trainer for Tesseract 3.02

为了生成盒子文件,我使用了QT Box Editor

使用上述工具后,我得到eng.traineddata 文件。所有教程都告诉我将此eng.traineddata 文件添加到Tesseract-OCR\tessdata 文件夹,但这样做会替换原来的eng.traineddata 文件。这样做之后,我会丢失 Tesseract 3.x 附带的默认字体吗?

如何添加新字体?我还不清楚。我希望有人可以在这里帮助我。谢谢。

【问题讨论】:

【参考方案1】:

应使用不同的名称,例如 eng1.traineddata。这样您就可以通过指定语言选项-l eng+eng1 将新数据与原始数据一起使用。

【讨论】:

在哪里可以指定语言选项 -l eng+eng1 ? 这听起来可能太懒惰了,但是有没有办法提供一个字体文件作为输入(比如网站)并提供一个训练有素的tessdata 作为输出? @tipycalFlow jTessBoxEditor 有一个 TIFF/Box 生成器。您可以提供一个字体文件并获得一个包含正确值的框。使用Serak Tesseract Trainer,您可以完成剩下的工作。【参考方案2】:

如果您有不同字体的新训练数据,我认为您的新字体没有字典校正。

要添加新的训练数据,您可以这样做(我在这里使用 php 代码)

//  as you new trained data, it must be 3 letter prefix 
// what ever 3 letter you want
$languange = "eng+deu";
$settingLanguage = $tesseract -> setLanguage($language) ; 

通过查看tesseract.php函数setLanguage(),可以通过该函数设置语言。

【讨论】:

以上是关于“添加”新字体到 Tesseract eng.traineddata的主要内容,如果未能解决你的问题,请参考以下文章

徽标和字体的Tesseract。

Tesseract OCR 无法检测到不同的字体大小和未水平对齐的字母

显式设置用于 Tesseract-OCR 识别的字体

配置 Tesseract OCR 以读取相同字体大小的单词

Tesseract - 检测图像的小字体大小并转换为文本

使用 Tesseract 和 Pyocr 在 Python 中获取字体大小