tesseract ChoiceIterator 置信度阈值
tesseract ChoiceIterator confidence threshold
我正在尝试使用 tesseract (3.03) ChoiceIterator 列出序列号中每个字符的可能替代项。对于某些角色,它似乎工作正常:
symbol 3, conf: 82.660316
- 3 conf: 82.660316
- B conf: 74.598289
- S conf: 74.530128
对于其他角色它不起作用(即它没有 return 任何替代品):
symbol I, conf: 90.924942
现在,我很难相信 "I" 不容易与“1”混淆(实际上在我的例子中这个字符是“1”而不是 "I")。我猜 tesseract 一定是因为置信度低(即置信度低于某个阈值?)而放弃了替代方案,但我找不到任何合适的选择。
在深入研究 Tesseract 代码数小时后,我终于找到了它 - 参数名称是 "matcher_bad_match_pad",它告诉 Tesseract 相对于角色的最高置信度预测的截止阈值是多少。所以,在我的例子中:
symbol I, conf: 90.924942
如果 "matcher_bad_match_pad" 设置为 0.20 并且“1”的置信度为 0.70,它将被拒绝。像这样修复它:
tesseract.SetVariable("matcher_bad_match_pad", "0.25");
我正在尝试使用 tesseract (3.03) ChoiceIterator 列出序列号中每个字符的可能替代项。对于某些角色,它似乎工作正常:
symbol 3, conf: 82.660316
- 3 conf: 82.660316
- B conf: 74.598289
- S conf: 74.530128
对于其他角色它不起作用(即它没有 return 任何替代品):
symbol I, conf: 90.924942
现在,我很难相信 "I" 不容易与“1”混淆(实际上在我的例子中这个字符是“1”而不是 "I")。我猜 tesseract 一定是因为置信度低(即置信度低于某个阈值?)而放弃了替代方案,但我找不到任何合适的选择。
在深入研究 Tesseract 代码数小时后,我终于找到了它 - 参数名称是 "matcher_bad_match_pad",它告诉 Tesseract 相对于角色的最高置信度预测的截止阈值是多少。所以,在我的例子中:
symbol I, conf: 90.924942
如果 "matcher_bad_match_pad" 设置为 0.20 并且“1”的置信度为 0.70,它将被拒绝。像这样修复它:
tesseract.SetVariable("matcher_bad_match_pad", "0.25");