是否可以限制tesseract正在寻找的字符集(例如,仅搜索字母az)?这将极大地改善我的结果.
在tessdata/configs目录中创建一个配置文件(例如"letters") - 通常/usr/share/tesseract/tessdata/configs
或
/usr/share/tesseract-ocr/tessdata/configs
并将此行添加到配置文件:
tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz
...或者[az]工作.. dunno :-)
然后调用tesseract类似于:
tesseract input.tif output nobatch letters
这将限制tesseract只识别想要的字符
要在配置文件中使用白名单或使用-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无法加载任何语言!" 或类似的.
除配置文件外,还有-c
标志:
tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6
只需在Android上使用tesseract的任何人添加此项.在readOCR函数中设置语言等,添加以下行;
tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
你也可以为要排除的字符做blackList.