83

是否可以限制tesseract正在寻找的字符集(例如仅搜索字母 az)?这将大大改善我的结果。

4

7 回答 7

91

在 tessdata/configs 目录中创建一个配置文件(例如“字母”) - 通常/usr/share/tesseract/tessdata/configs

/usr/share/tesseract-ocr/tessdata/configs

并将这一行添加到配置文件中:

tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz

...或者也许 [az] 有效。我不知道。然后像这样调用 tesseract:

tesseract input.tif output nobatch letters  

这将限制 tesseract 只识别想要的字符。

于 2010-06-06T06:08:44.340 回答
30

要在配置文件中使用白名单或使用-c tessedit_char_whitelist=...命令行开关,在最新的 4.0 版本中,您必须将 OCR 引擎模式设置为“仅限原始 Tesseract”。这是因为新的“神经网络 LSTM”模式不尊重白名单设置。4.0 版本的正确命令行示例:

tesseract input_file output_file --oem 0 -c tessedit_char_whitelist=abc123

更新:在较新的版本(4.0)中eng.traineddata,Windows 和一些 Linux 安装程序默认安装了损坏的文件。临时解决方案是tessdata\eng.traineddata用旧版本的文件替换文件。这个文件应该是大约 30MB。否则你会得到错误:“Tesseract 无法加载任何语言!” 或类似的。

从 tesseract 4.1.1 更新

  • 但是,在 tesseract 4.1.1 中修复了上述错误,也就是说,在 tesseract 4.1.1 中,以下工作就像一个魅力

    tesseract my_image.jpg stdout -l mylang configfile myconfig

其中“myconfig”是位于 TESSDATA/configs 中的纯文本文件

load_system_dawg false
load_freq_dawg false
tessedit_char_whitelist ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
于 2018-02-28T13:39:43.973 回答
23

除了配置文件,还有-c标志:

tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6

更新

确认正在处理版本:

  • 4.1.1
于 2016-09-08T09:34:36.690 回答
9

只需为在 Android 上使用 tesseract 的任何人添加此内容。在您设置语言等的 readOCR 函数中,添加以下行;

tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");

您还可以对要排除的字符进行黑名单。

于 2017-03-21T13:03:11.010 回答
2

我正在使用 Ubuntu 18.04.4 LTS。默认的 tesseract 是版本 4。我不能使用白名单。然后我将它升级到版本 5。然后我使用下面的命令并且它工作。

tesseract sample.jpg stdout -l eng --oem 3 --psm 7
Warning: Invalid resolution 0 dpi. Using 70 instead.
LL £036 GL)

tesseract sample.jpg stdout -l eng --oem 3 --psm 7 -c tessedit_char_whitelist="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Warning: Invalid resolution 0 dpi. Using 70 instead.
L4036GL

样本.jpg

于 2020-04-11T06:15:32.957 回答
1

在 Tesseract 4.00 版中,无法做到这一点。您只能微调您的模型或使用正则表达式从预测中删除多余的字符。

于 2019-04-26T04:24:08.817 回答
0

我的答案完全来自接受的答案,并在此处添加以使任何使用TesseractNuGet 包的 .NET Windows 开发人员受益 - 但是,请注意我的项目符号 2,它适用于在 Windows 上使用任何类型的任何人Tesseract

  1. 在其他训练数据所在的config文件夹内创建一个文件夹。tessdata
  2. 在文件夹中添加一个letters文件config在此处输入图像描述 使用像 TextPad 这样的编辑器,它可以帮助您将其保存为 UNIX 格式、ANSI 编码(我最初尝试过 UTF-8 / IBM PC 并且 tesseract 在我的测试输出中出现错误)
  3. 就像您的训练文件一样,确保该letters文件在“属性”面板中设置了“构建操作”Content并进一步标记为复制到输出目录:
    在此处输入图像描述
  4. 因此调用您的 tesseract 引擎类:
 var ocrEng = new TesseractEngine("./tessdata", "eng", EngineMode.Default, "letters");
于 2020-10-29T15:27:24.580 回答