在没有任何外部资源的情况下初始化 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 实现的目标,您可能会得到更好的建议。
我目前正在编写一个 C++ 程序,它应该从 JPEG 图像中读取十六进制数据。我必须将它编译成一个 single windows 可执行文件 而无需任何外部资源 (例如 "tessdata" 目录或配置文件).因为我不读任何单词或句子,所以我不需要任何词典或语言。
我现在的问题是,如果没有任何语言文件,我找不到初始化 API 的方法。每个例子都使用这样的东西:
tesseract::TessBaseAPI api;
if (api.Init(NULL, "eng")) {
// error handling
return -1;
}
// do stuff
我还发现我可以在没有语言参数的情况下使用 OEM_TESSERACT_ONLY
:
if(api.Init(NULL, NULL, tesseract::OcrEngineMode::OEM_TESSERACT_ONLY)) {
// ...
}
这个 应该 禁用 language/dictionary,但是 NULL
只是默认为 "eng"。似乎 tesseract 仍然需要一个语言文件来初始化,然后将其禁用。
到目前为止我发现的任何其他解决方案似乎也是如此:我总是需要 .traineddata 文件来初始化 api 并且可以
我现在的问题是: 有什么方法可以仅使用可执行文件而不使用其他资源文件在 C++ 中初始化 tesseract API?
没有。 Tesseract 总是需要一些语言(默认为 eng
)+ osd
(.traineddata
) 文件。没有语言数据文件 tesseract 是没用的。
您的 post 似乎做出了一些错误的假设(例如关于 OEM_TESSERACT_ONLY
),所以如果您描述了您尝试使用 tesseract 实现的目标,您可能会得到更好的建议。