限制字符tesseract正在寻找

时间:2010-03-02 13:47:51

标签: ocr tesseract

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

7 个答案:

答案 0 :(得分:76)

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

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

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

tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz  

...或者也许[a-z]有效.. dunno :-)
然后调用类似于此的tesseract:

tesseract input.tif output nobatch letters  

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

答案 1 :(得分:15)

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

tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6

答案 2 :(得分:14)

要在配置文件中使用白名单或使用-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)中,Windows和某些Linux安装程序默认安装了已损坏的eng.traineddata文件。临时解决方案是将tessdata\eng.traineddata文件替换为旧版本的文件。此文件大约应为30MB。否则你会收到错误:" Tesseract无法加载任何语言!"或类似的。

答案 3 :(得分:6)

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

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

你也可以为要排除的字符做blackList。

答案 4 :(得分: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

sample.jpg

答案 5 :(得分:0)

在Tesseract版本4.00中,无法完成此操作。您只能微调模型或使用正则表达式从预测中删除多余的字符。

答案 6 :(得分:0)

我的答案完全来自于已接受的答案,并在此处添加,以使使用Tesseract NuGet软件包的任何.NET Windows开发人员都受益-但是,请注意我的第2条适用于任何人< / em>在Windows上使用任何Tesseract

  1. 在其他训练数据所在的config文件夹中创建一个tessdata文件夹。
  2. letters文件夹中添加一个config文件。 enter image description here 使用诸如TextPad之类的编辑器,它将帮助您将其保存在UNIX中。 格式,ANSI编码(我最初尝试过UTF-8 / IBM PC和 tesseract在我的“测试”输出中出现了错误)
  3. 就像训练文件一样,确保letters文件在“属性”面板中的“构建操作”设置为Content,并进一步标记为复制到输出目录:
    enter image description here
  4. 这样调用您的tesseract引擎类:
 var ocrEng = new TesseractEngine("./tessdata", "eng", EngineMode.Default, "letters");