【问题标题】:Initialize tesseract without any external resources (languages/dictionaries)在没有任何外部资源(语言/字典)的情况下初始化 tesseract
【发布时间】:2020-04-25 07:16:19
【问题描述】:

我目前正在编写一个应该从 JPEG 图像中读取十六进制数据的 C++ 程序。我必须将它编译成一个 单个 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)) {
    // ...
}

应该禁用语言/字典,但NULL 只是默认为“eng”。似乎 tesseract 仍然希望初始化一个语言文件,然后将其禁用。

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

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

【问题讨论】:

    标签: c++ ocr tesseract


    【解决方案1】:

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

    您的帖子似乎做出了几个错误的假设(例如关于OEM_TESSERACT_ONLY),所以也许如果您描述您尝试使用 tesseract 实现的目标,您可以获得更好的建议。

    【讨论】:

    • 感谢您的回答。就像我说的,我有一些 JPEG 文件,上面印有十六进制数据,我想通过 OCR 读取它们。如果 tesseract 总是需要这些资源,我可能会使用另一个 OCR 库,或者只是将文件嵌入 exe 并将它们提取到临时目录。
    • 如果没有经过训练的数据(经过训练的 OCR 模型,也就是 tesseract 的语言数据),您将无法运行任何 OCR。将所有信息放在一个文件中很快就会成为进一步发展的瓶颈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多