【问题标题】:Using Tesseract & Opencv Program for OCR then face some errors使用 Tesseract 和 Opencv 程序进行 OCR 会遇到一些错误
【发布时间】:2020-01-03 16:58:33
【问题描述】:

当我运行 exe 时,会在 tesseract 和 opencv ocr 中遇到一些错误。 当我运行程序时如何解决我的问题然后显示这个错误任何建议?

errors 是:

D:\OCR\Install-0penCV-with-Tesseract-Windows\OCVTessExample\x64\Debug>OCVTessExample.exe
4.1.0
Error in pixCreateHeader: width must be > 9
Error in pixCreateNoInit: pixd not made
Error in pixCreate: pixd not made
Error in pixGetData: pix not defined
Error in pixGetl: pix not defined
Error in pixGetDimensions: pix not defined
Error in pixGetColormap: pix not defined
Error in pixCopy: pixs not defined
Error in pixGetDepth: pix not defined
Error in pixGetWpl: pix not defined
Error in pixGetYRes: pix not defined
Error in pixClone: pixs not defined
Please call SetImage before attempting recognition.

版本是:

我的代码:

// Create Tesseract object
tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI();

cout << ocr->Version() << endl;

// Initialize tesseract to use English (eng) and the LSTM OCR engine. 
ocr->Init(NULL, "eng", tesseract::OEM_LSTM_ONLY);
//ocr->Init("tessdata", "eng", tesseract::OEM_LSTM_ONLY);

// Set Page segmentation mode to PSM_AUTO (3)
ocr->SetPageSegMode(tesseract::PSM_AUTO);
// Open input image using OpenCV
Mat im = cv::imread("img.png", IMREAD_COLOR);

//cv::imwrite("img.png", im);
//im = cv::imread("img.png");

// Set image data
ocr->SetImage(im.data, 2024, 1080, 3, im.step);

// Run Tesseract OCR on image
outText = string(ocr->GetUTF8Text());

// print recognized text
cout << outText << endl;

return EXIT_SUCCESS

【问题讨论】:

    标签: opencv visual-c++ ocr tesseract


    【解决方案1】:

    这是 tesseract&opencv (test-opencv.cpp) 的简单最小示例:

    #include <tesseract/baseapi.h>
    #include <leptonica/allheaders.h>
    #include <opencv2/opencv.hpp>
    
    int main() {
        char *outText;
    
        tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
        if (api->Init(".", "eng")) {
            fprintf(stderr, "Could not initialize tesseract.\n");
            exit(1);
        }
    
        cv::Mat im = cv::imread("img.png", cv::IMREAD_COLOR);
        api->SetImage(im.data, im.cols, im.rows, 3, im.step);
        outText = api->GetUTF8Text();
        printf("OCR output:\n%s", outText);
        api->End();
        delete [] outText;
        return 0;
    }
    

    我在 linux 上测试并编译:

    g++ -O3 -std=c++11 test-opencv.cpp `pkg-config --cflags --libs lept tesseract opencv` -o test-opencv
    

    所以需要自己调整visual-c++编译参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2015-09-16
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多