是否可以限制tesseract正在寻找的字符集(例如,仅搜索字母a-z)?这将极大地改善我的结果。
答案 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
答案 5 :(得分:0)
在Tesseract版本4.00中,无法完成此操作。您只能微调模型或使用正则表达式从预测中删除多余的字符。
答案 6 :(得分:0)
我的答案完全来自于已接受的答案,并在此处添加,以使使用Tesseract
NuGet软件包的任何.NET Windows开发人员都受益-但是,请注意我的第2条适用于任何人< / em>在Windows上使用任何种Tesseract
config
文件夹中创建一个tessdata
文件夹。letters
文件夹中添加一个config
文件。
使用诸如TextPad之类的编辑器,它将帮助您将其保存在UNIX中。
格式,ANSI编码(我最初尝试过UTF-8 / IBM PC和
tesseract在我的“测试”输出中出现了错误)letters
文件在“属性”面板中的“构建操作”设置为Content
,并进一步标记为复制到输出目录: var ocrEng = new TesseractEngine("./tessdata", "eng", EngineMode.Default, "letters");