Command line &引用;语言“模式”惩罚“非命令词”;在tesseract 3.01中无效

Command line &引用;语言“模式”惩罚“非命令词”;在tesseract 3.01中无效,command-line,ocr,tesseract,Command Line,Ocr,Tesseract,我正在通过Tesseract 3.01的配置文件设置语言\u模型\u惩罚\u非dict\u单词,但其值没有任何影响。我尝试过使用多个图像,并且使用了多个值,但是每个图像的输出总是相同的。另一个用户也注意到了同样的情况 编辑:查看源代码内部后,变量语言\u模型\u惩罚\u非dict\u单词仅在函数float LanguageModel::ComputeAdjustedPathCost中使用 但是,从未调用此函数!它仅由两个函数引用-LanguageModel::UpdateBestChoice()

我正在通过Tesseract 3.01的配置文件设置
语言\u模型\u惩罚\u非dict\u单词
,但其值没有任何影响。我尝试过使用多个图像,并且使用了多个值,但是每个图像的输出总是相同的。另一个用户也注意到了同样的情况

编辑:查看源代码内部后,变量
语言\u模型\u惩罚\u非dict\u单词
仅在函数
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

这是否也适用于4.x?