Tesseract 解码结果对于 64 位 Windows OS 和 32 位 Ubuntu Linux OS 是不同的

Tesseract decoding result is different for 64bit Windows OS and 32bit Ubuntu Linux OS

我正在测试附加的相同图像以使用 tesseract 解码数字。我在 64 位 Windows OS 和 32 位 Ubuntu OS 中进行了测试。 Windows OS 中的测试结果给了我一个正确的结果。 Windows 结果是 43750,但是 32 位 Ubuntu 给了我 43730。 我使用相同的代码如下所示

        tesseract::TessBaseAPI tess;
        tess.Init("/usr/share/tesseract-ocr/tessdata/", "eng", tesseract::OEM_DEFAULT);
        tess.SetVariable("tessedit_char_whitelist", "0123456789");
        tess.SetPageSegMode(tesseract::PSM_AUTO);
        //tess.SetImage((uchar*)extText.data, extText.cols, extText.rows, 1, extText.cols);
        // Get the text
        //readtxt = tess.GetUTF8Text();//GetUTF8Text();
        const char* image = "image.jpg";
        FILE *fin = fopen("image.jpg", "rb");
        if(fin == NULL){
            return FILE_ERROR;
        }
        fclose(fin);
        STRING text_out;
        if(!tess.ProcessPages(image, NULL, 0, &text_out)){
            return PROCESS_ERROR;
        }
        readtxt = text_out.string();
        return SUCCESS;

我使用 sudo apt-get install tesseract-ocr tesseract-ocr-eng libtesseract-dev libleptonica-dev 命令安装在 Ubuntu 中。

对于 Windows PC,我从所有源代码构建的所有内容,版本是 Tesseract-3.02。

我从 Windows PC 上替换了 tessdata 文件夹并将其放入 /usr/share/tesseract-ocr。但是结果还是不一样。

我唯一能想到的就是64位和32位的区别。 Windows 64 位的 PC 进程 OS 和 Linux OS 32 位的进程 OS (Linux 系统处理器是 64 位,但我安装了 32 位 Ubuntu OS)。这是正确的,因为 64 位和 32 位的差异,结果是不同的?

谢谢

你得到不同结果的主要原因是你使用了不同版本的 Tesseract:3.02 和 3.03。尽管版本号差异看似很小,但识别算法存在显着差异。

这是 Tesseract 更新日志:https://github.com/tesseract-ocr/tesseract/blob/master/ChangeLog

此外,经过训练的数据也很重要。自己训练 Tesseract 可能有助于改善结果。我也遇到了 5 被误解为 3 的问题,我通过为字体训练 Tesseract 部分解决了这个问题。