我正在通过Tesseract 3.01的配置文件设置language_model_penalty_non_dict_word,但是它的值没有任何作用。我尝试了多个图像,并为其设置了多个值,但是每个图像的输出始终是相同的。另一个用户注意到了相同的in a comment in another question

编辑:在查看源代码之后,仅在函数language_model_penalty_non_dict_word中使用变量float LanguageModel::ComputeAdjustedPathCost

但是,永远不会调用此函数!仅由两个函数LanguageModel::UpdateBestChoice()LanguageModel::AddViterbiStateEntry()引用。我在这些函数中放置了断点,但是也没有被调用。

最佳答案

经过一些调试之后,我终于找到了原因-没有调用Wordrec::SegSearch()函数(它在LanguageModel::ComputeAdjustedPathCost()的调用图中)。

从此代码:

  if (enable_new_segsearch) {
    SegSearch(&chunks_record, word->best_choice,
              best_char_choices, word->raw_choice, state);
  } else {
    best_first_search(&chunks_record, best_char_choices, word,
                      state, fixpt, best_state);
  }

因此,您需要在配置文件中设置enable_new_segsearch:
enable_new_segsearch    1

language_model_penalty_non_freq_dict_word 0.2
language_model_penalty_non_dict_word 0.3

关于command-line - "language_model_penalty_non_dict_word"在tesseract 3.01中无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29826591/

10-10 20:14