【问题标题】:Tesseract give wrong results c++Tesseract 给出错误的结果 c++
【发布时间】:2018-01-18 21:43:01
【问题描述】:

您好,我使用的是 tesseract 3.02.02,但对于非常清晰的图像,它会给出错误的结果。

示例图片:

代码:

tesseract::TessBaseAPI *myOCR = new tesseract::TessBaseAPI();
cout<< myOCR->Version() <<endl;
cout<< getLeptonicaVersion() <<endl;

if (myOCR->Init(NULL, "eng")) {
   qDebug()<< "Could not initialize tesseract";
}

myOCR->SetVariable("tessedit_char_whitelist","0123456789");
tesseract::PageSegMode pagesegmode = static_cast<tesseract::PageSegMode>(10); // treat the image as a single character
myOCR->SetPageSegMode(pagesegmode);

Mat imm = imread("/home/de/Desktop/0.png");
cvtColor(imm,imm,CV_BGR2GRAY);
threshold(imm, imm, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
imm = ~imm;
common::deleteBorderObjects(&imm);
imm = ~imm;

Pix *pixx = mat8ToPix(&imm);//convert Mat to pix

myOCR->SetImage(pixx);
const char *text1 = myOCR->GetUTF8Text();

结果是 1。

我认为图像很清晰。

这里有什么问题?是关于tesseract参数的吗?

【问题讨论】:

  • 每当我看到 tesseract 作为标签时,我都会兴奋地认为这是关于 Madeleine L'Engle。
  • @Richard 这是一个非常悲伤的故事
  • 查看这个关于 tesseract 的简短但有效的教程:youtu.be/2fmzooBKp8A

标签: c++ opencv character ocr tesseract


【解决方案1】:

尝试在我的机器上不进行额外处理。结果为 0。

    cvtColor(imm,imm,CV_BGR2GRAY);
    threshold(imm, imm, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);
    myOCR->SetImage(imm.data, imm.size().width, imm.size().height,
                    imm.channels(), (int) imm.step1());

    const char *text1 = myOCR->GetUTF8Text();

尝试在将图像输入 t​​esseract 之前查看图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2020-04-01
    • 1970-01-01
    • 2011-11-15
    相关资源
    最近更新 更多