在没有任何外部资源的情况下初始化 tesseract (languages/dictionaries)

Initialize tesseract without any external resources (languages/dictionaries)

我目前正在编写一个 C++ 程序,它应该从 JPEG 图像中读取十六进制数据。我必须将它编译成一个 single windows 可执行文件 而无需任何外部资源 (例如 "tessdata" 目录或配置文件).因为我不读任何单词或句子,所以我不需要任何词典或语言。

我现在的问题是,如果没有任何语言文件,我找不到初始化 API 的方法。每个例子都使用这样的东西:

tesseract::TessBaseAPI api;
if (api.Init(NULL, "eng")) {
    // error handling
    return -1;
}
// do stuff

我还发现我可以在没有语言参数的情况下使用 OEM_TESSERACT_ONLY:

调用 init 函数
if(api.Init(NULL, NULL, tesseract::OcrEngineMode::OEM_TESSERACT_ONLY)) {
    // ...
}

这个 应该 禁用 language/dictionary,但是 NULL 只是默认为 "eng"。似乎 tesseract 仍然需要一个语言文件来初始化,然后将其禁用。

到目前为止我发现的任何其他解决方案似乎也是如此:我总是需要 .traineddata 文件来初始化 api 并且可以 or using config files.

我现在的问题是: 有什么方法可以仅使用可执行文件而不使用其他资源文件在 C++ 中初始化 tesseract API?

没有。 Tesseract 总是需要一些语言(默认为 eng)+ osd (.traineddata) 文件。没有语言数据文件 tesseract 是没用的。

您的 post 似乎做出了一些错误的假设(例如关于 OEM_TESSERACT_ONLY),所以如果您描述了您尝试使用 tesseract 实现的目标,您可能会得到更好的建议。