与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 错误(预期类型说明符)

Error with Tesseract-OCR relating tesseract::TessBaseApi() (expected type-specifier)

我使用 openCV 2.4.9 和 tesseract 3.04 编写了一个程序,两者都使用 C API.

由于 openCV 的 C API 已弃用,我决定修改它以使用两个库的 C++ API。

C 中的这部分代码(有效):

    #include <cv.h>
    #include <tesseract/capi.h>

void    foo (struct _IplImage  *imgptr)
{
    struct TessBaseAPI  *handle_ocr;
    handle_ocr  = TessBaseAPICreate();
    // Do something
}

应该等同于 C++ 中的这段代码(无法编译):

    #include <opencv2/opencv.hpp>
    #include <tesseract/baseapi.h>
    #include <leptonica/allheaders.h>

void    foo (class cv::Mat  *imgptr)
{
    class tesseract::TessBaseAPI    *handle_ocr;
    handle_ocr  = new tesseract::TessBaseApi();
    // Do something
}

g++ 6(在 debian stretch 上)给出以下错误:

error: expected type-specifier
  handle_ocr = new tesseract::TessBaseApi();
                   ^~~~~~~~~

这是什么意思?解决方案是什么?

编辑: 整个源文件:

/******************************************************************************
 ******* headers **************************************************************
 ******************************************************************************/
 /* Standard C ----------------------------------------------------------------*/
        /* snprintf() */
    #include <cstdio>

/* Packages ------------------------------------------------------------------*/
        /* opencv */
    #include <opencv2/opencv.hpp>
        /* OCR Tesseract */
    #include <tesseract/baseapi.h>
    #include <leptonica/allheaders.h>

/* Module --------------------------------------------------------------------*/
        /* img_ocr_text & OCR_TEXT_MAX */
    #include "some_other_file.hpp"

    #include "this_file.hpp"


/******************************************************************************
 ******* func *****************************************************************
 ******************************************************************************/
void    foo (class cv::Mat  *imgptr)
{
    class tesseract::TessBaseAPI    *handle_ocr;

    /* Language */
    char    *lang_str   = "eng";

    /* Config file */
    char    *conf_str   = "/home/user/ocr/price";

    /* init OCR */
    handle_ocr  = new tesseract::TessBaseApi();
    handle_ocr->Init(NULL, lang_str, tesseract::OEM_TESSERACT_CUBE_COMBINED);
    if (conf) {
        /* Configure OCR (whitelist chars) */
        handle_ocr->ReadConfigFile(conf_str);
    }

    /* scan image for text */
    handle_ocr->SetImage(imgptr->data,
                imgptr->size().width, imgptr->size().height,
                imgptr->channels(), imgptr->step1());
    char    *txt;
    txt = handle_ocr->GetUTF8Text();

    /* Copy text to global variable */
    snprintf(img_ocr_text, OCR_TEXT_MAX, "%s", txt);

    /* cleanup */
    delete []   txt;
    handle_ocr->Clear();
    handle_ocr->End();
}


/******************************************************************************
 ******* end of file **********************************************************
 ******************************************************************************/

替换为:

handle_ocr  = new tesseract::TessBaseApi();

有了这个:

handle_ocr  = new tesseract::TessBaseAPI();

upper/lower 个案例有误。