我有一个应用程序,其中使用 tesseract API 对技术数据表进行 OCR。我这样初始化它:
tesseract::TessBaseAPI tess;
tess.Init(NULL, "eng", tesseract::OEM_TESSERACT_ONLY);
然而,即使在使用这样的自定义白名单之后
tess.SetVariable("tessedit_char_blacklist", "");
tess.SetVariable("tessedit_char_whitelist", myWhitelist);
某些数据表条目被错误识别,例如 PA3
被识别为 FAB
。
如何禁用字典辅助 OCR,即 .为了不影响其他工具,我不想尽可能修改全局配置文件。
注意:这不是 this previous question 的拷贝因为上述问题明确要求命令行工具,而我明确要求 tesseract API。
最佳答案
您可以简单地将惩罚设置为零:
tess.SetVariable("segment_penalty_garbage", "0");
tess.SetVariable("segment_penalty_dict_nonword", "0");
tess.SetVariable("segment_penalty_dict_frequent_word", "0");
tess.SetVariable("segment_penalty_dict_case_ok", "0");
tess.SetVariable("segment_penalty_dict_case_bad", "0");
虽然字典仍然保持事件状态,但这种方法基本上告诉算法字典命中(也包括错误的标点符号等)并不比非字典命中好。
参见 the dict.cpp
source code供引用。
关于c++ - 在 tesseract C++ API 中禁用字典辅助 OCR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33005215/