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 部分解决了这个问题。
我正在测试附加的相同图像以使用 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 部分解决了这个问题。