限制字符tesseract正在寻找

Dan*_*gen 60 ocr tesseract

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

小智 79

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

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

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

tessedit_char_whitelist abcdefghijklmnopqrstuvwxyz  
Run Code Online (Sandbox Code Playgroud)

...或者[az]工作.. dunno :-)
然后调用tesseract类似于:

tesseract input.tif output nobatch letters  
Run Code Online (Sandbox Code Playgroud)

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

  • 非常有帮助!我会说 Tesseract 文档很糟糕,但实际上我正在寻找的词是“不存在”谢谢! (2认同)

Bar*_*asz 18

要在配置文件中使用白名单或使用-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无法加载任何语言!" 或类似的.

  • 你是对的。在较新的版本中,`eng.traineddata` 文件已损坏。我已经尝试了最新的 4.0 版本并得到了同样的错误。临时解决方案是用旧版本中的一个替换 `tessdata\eng.traineddata` 文件。这个文件应该是 30MB 左右(不像 4.0 版本安装的那样是 4MB)。 (2认同)
  • 是的,我刚刚从GitHub项目[link](https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata)中尝试了该文件的最新版本,并替换了我在`tessdata中使用的版本/ eng.trainedddata`和已下载的文件,并且在4.0版本上都可以完美运行。 (2认同)

jmu*_*sch 15

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

tesseract stdin stdout -c tessedit_char_whitelist=abcdefghijklmnopqrstuvwxyz -psm 6
Run Code Online (Sandbox Code Playgroud)

  • 即使我把它设置为普通的香草字母,我也会看到"检测到31个变音符号"的消息.这很奇怪,因为我没有在白名单中包含任何变音符号或重音符号. (2认同)
  • 我可以确认这在 Linux 上的 Tesseract 4.1.1 上运行良好。 (2认同)

小智 7

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

tesseract.setVariable("tessedit_char_whitelist","ABCDEFGHIJKLMNOPQRSTUVWXYZ");
Run Code Online (Sandbox Code Playgroud)

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