0

有没有办法启动 Tesseract-OCR 或其他引擎来提高对某些单词/形状的敏感性?启动是人类可以提高对某些刺激的敏感性的一种方式,我不确定 OCR 是否会做同样的事情。我知道 facebook/instagram 之类的应用程序可以增加对某些帖子的敏感度或对某些帐户的行为,如果该帐户过去曾表现出这种行为

4

2 回答 2

0

用户过去可以指定一个user-words文件,但该功能似乎在最新版本的 Tesseract 中不起作用,除了可能在旧模式下。

https://github.com/tesseract-ocr/tesseract/issues/960

于 2019-06-21T21:52:19.083 回答
0

用户词文件开始工作有点挑剔。

这是我用来让它工作的代码的简化版本

#include <tesseract/genericvector.h>
.
.
.
    const char* TESSDATA = "C:/Tesseract/tessdata/";

void TryTess() {
    tesseract::TessBaseAPI* api = new tesseract::TessBaseAPI();


    GenericVector<STRING> pars_vec;
    pars_vec.push_back("load_system_dawg");
    pars_vec.push_back("load_freq_dawg");
    pars_vec.push_back("load_punc_dawg");
    pars_vec.push_back("load_number_dawg");
    pars_vec.push_back("load_unambig_dawg");
    pars_vec.push_back("load_bigram_dawg");
    //pars_vec.push_back("load_fixed_length_dawgs");
    pars_vec.push_back("language_model_penalty_non_dict_word");
    pars_vec.push_back("user_words_suffix");
    pars_vec.push_back("user_patterns_suffix");


    GenericVector<STRING> pars_values;
    pars_values.push_back("0");
    pars_values.push_back("0");
    pars_values.push_back("0");
    pars_values.push_back("0");
    pars_values.push_back("0");
    pars_values.push_back("0");
    //pars_values.push_back("F");
    pars_values.push_back("9999999999999999");
    pars_values.push_back("user-words");
    pars_values.push_back("user-patterns");

    api->Init(TESSDATA, "eng", OEM_DEFAULT, NULL, 0, &pars_vec, &pars_values, false);

    /// Some image preprocessing to improve detection

    char* out = api->GetUTF8Text();
    std::cout << "Result: " << out;
    api->End();
    delete[] out;
}

确保您已配置 TESSDATA 路径。我能找到的最好的几个资源是Herehere

主要的问题是不知道该 genericvector.h 类在哪里,因为 tesseract 的 Init 方法需要该类(似乎没有任何转换方法)。由于必须在初始化之前传入用户字文件,这是我能找到的唯一方法。即使从配置文件中读取也必须在初始化后完成,这会阻止您使用用户字

祝你好运!

于 2019-06-24T12:18:15.273 回答