Tesseract OCR技巧-创建自己的词汇表以提高OCR性能

这是我关于使用Tesseract的光学字符识别(OCR)的第一篇文章。 Tesserast是Google支持的非常流行的OCR开源库,可提供高精度结果并支持100多种语言。 在这篇文章中,我将告诉您如何使用Tesseract语言模型的标准词典并对其进行自定义以满足您的需求。 谁在乎,请在猫下。

Tesseract语言模型和字典


Tesseract使用语言模型和词典来识别特定语言的文本。 语言模型包含神经网络模型的参数值和其他学习数据。 例如,英语语言模型存储在eng.traineddata文件中。 用户可以为Tesseract创建自己的单词列表,以便Tesseract可以学会识别它们。

Tesseract允许您通过添加自己的单词来扩展标准词典以支持任何受支持的语言,或者通过用您自己的单词完全替换标准词典中的单词来教授语言模型。

Tesseract对字典中的各种单词使用特殊的.dawg文件。 例如,.word-dawg文件用于字典的主要单词,而freq-dawg文件用于最常见的单词。 有关此问题的更多信息,请参见此处

Tesseract语言模型定制


本指南可适用于Tesseract 3.0.5和4.0.0的版本。 Tesseract 4.0.0和更早的3.0.x之间的唯一区别是,在版本4中,Tesseract基于LSTM模型,dawg词典文件的扩展名为lstm-dawg(在v3.0.5版本中,其扩展名为-dawg)。 例如,最常用词的文件现在具有扩展名lstm-freq-dawg而不是freq-dawg,并且unicharset文件收到了扩展名lstm-unicharset(以前是.unicharset)。

首先,安装Tesseract OCR库。 在本教程中,我使用Ubuntu OS(我使用Ubuntu 18.04)和Tesseract v4。 只需使用apt软件包安装Tesseract:

sudo apt update && sudo apt install tesseract-ocr 

除了Tesseract库本身之外,该团队还将安装用于教授语言模型的所有必要工具(培训工具)。

首先,我们将以自己的语言扩展语言模型。 例如,我们要扩展英语模型。 创建一个名为wordlistfile的纯文本文件,然后将要添加到模型字典中的单词添加到其中,每行一个。

然后它将转到tessdata文件夹。 我们需要root特权才能在此系统文件夹中执行操作。

 sudo su 

将wordlistfile复制到此文件夹。 将eng.traineddata语言模型文件解压缩到traineddat_backup文件夹中

 combine_tessdata -u eng.traineddata traineddat_backup/eng. 

此命令将编译语言模型所需的所有文件提取到训练好的atat_backup文件夹中。

现在,使用wordlistfile实用程序从我们的wordlistfile中创建eng.lstm-word-dawg文件

 wordlist2dawg wordlistfile eng.lstm-word-dawg traineddat_backup/eng.lstm-unicharset 

并编译一个新的语言模型文件eng.traineddata

 combine_tessdata -o eng.traineddata eng.lstm-word-dawg 

我们将从自己的字典单词中获得eng.traineddata语言模型文件。

现在,我们将通过用我们自己的单词完全替换标准词典中的单词来教授英语语言模型。 首先,我们需要备份位于trainingdat_backup文件夹中的所有dawg文件(.lstm-word-dawg,.lstm-freq-dawg等),因为我们将用新文件替换它们。 只需创建tmp文件夹并将所有dawg文件传输到其中即可。

之后,将我们先前创建的eng.lstm-word-dawg文件复制到训练好的at_backup文件夹中。 让我们转到此文件夹并编译新的语言模型

 combine_tessdata eng. </source           tessdata        ( cus - custom).   OCR  Tesseract     : <source lang="bash"> tesseract <image> -l <your_model> <output> 

其中output是要写入OCR结果的文本文件的名称或“ stdout”以输出到终端。

Tesseract OCR中的配置文件


Tesseract使用配置文件(包含变量及其键值的纯文本文件,用空格分隔),该文件允许用户控制OCR结果。 您可以创建自己的配置(myconf)并将其放在tessdata文件夹内的configs文件夹中,并在使用Tesseract时指定配置名称:

 tesseract <image> <options> myconf 

其中选项:out是要输出结果的文件名或“ stdout”,-l是语言模型,-psm是Page分段方法

Tesseract提供了许多控制选项来定制输出并提高OCR精度。 因此,存在控制字典使用的变量,例如,排除word_dawg / user_words中没有的单词(language_model_penalty_non_freq_dict_word和language_model_penalty_non_dict_word)。 有关控制参数的更多详细信息,请参见此处

我在配置中使用了以下值:

 language_model_penalty_non_freq_dict_word 1 language_model_penalty_non_dict_word 1 

这使我可以识别字典中的一些单词。

现在就这些了。 祝您好运,将Tesseract用于OCR任务,很快再见!

Source: https://habr.com/ru/post/zh-CN466571/


All Articles