使用Qt 5.8 Mingw构建Tesseract OCR库

时间:2017-02-20 18:30:39

标签: c++ qt mingw ocr tesseract

我从here下载了MinGW的Tesseract库,并且已经编译了库并且包含了应该直接工作的示例,并且当我使用示例.pro文件时,所有内容似乎都很好我的Qt 5.8明和构建它我得到了这个错误

:-1: error: cannot find -llept
:-1: error: cannot find -ltesseract
collect2.exe:-1: error: error: ld returned 1 exit status

这里的.pro文件代码

QT          =

TARGET      = ApiExample
TEMPLATE    = app

OBJECTS_DIR += temp
MOC_DIR     += temp
UI_DIR      += temp
RCC_DIR     += temp

SOURCES += ApiExample.cpp
LIBS    += -llept -ltesseract

win32: {
    CONFIG  += console
    DESTDIR = ./bin
    INCLUDEPATH += ./include/
    LIBS += -lws2_32 -L./lib
    DEFINES += WINDOWS __BLOB_T_DEFINED
}

然后我尝试编辑.pro文件并删除此行

LIBS    += -llept -ltesseract

并添加此

LIBS    += -L$$PWD/bin\
    libtesseract-3 \
    liblept-3 \

我清理并构建结果,它成功构建,没有错误 我尝试在应用程序启动时立即运行崩溃得到此错误

APIExamople.exe has stopped working and two buttons Debug and close program

所以我尝试在bin文件夹中添加所有dll文件!是

LIBS    += -L$$PWD/bin\
        libtesseract-3 \
        liblept-3 \
        libgcc_s_dw2-1 \
        libgif-4 \
        libjbig-1 \
        libjpeg-8 \
        libpng15-15 \
        libstdc++-6 \
        libtiff-3 \
        libtiffxx-3 \
        libwebp-2 \
        libmingwm10 \
        libzlib1 \

开始构建运行并且再次崩溃 我将所有dll文件复制到调试目录尝试构建并在发布模式下运行所有​​相同的崩溃
我运行Qt调试,以查看我使用

的示例代码在该行上发现错误的位置
#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>
#include <iostream>

int main(int argc, char *argv[])
{
    const char* lang = "eng";
    const char* filename = "D:/b.jpg";

    tesseract::TessBaseAPI tess; // debug stopped here on this line
    tess.Init(NULL, lang, tesseract::OEM_DEFAULT);
    tess.SetPageSegMode(tesseract::PSM_AUTO);

    FILE* fin = fopen(filename, "rb");
    if (fin == NULL)
    {
        std::cout << "Cannot open " << filename << std::endl;
        return 0;
    }
    fclose(fin);

    STRING text;
    if (tess.ProcessPages(filename, NULL, 0, &text))
    {
        std::cout << text.string() << std::endl;

    }
}

停在 tesseract :: TessBaseAPI tess; 的路线上 我为MSVC使用另一个预构建库并在qt中链接它的库并且它编译和运行并且使用我现在用于MinGW的相同示例代码没有问题 我做错了什么让这次崩溃?
更新
我尝试从.pro文件中删除此部分

win32: {
    CONFIG  += console
    DESTDIR = ./bin
    INCLUDEPATH += ./include/
    LIBS += -lws2_32 -L./lib
    DEFINES += WINDOWS __BLOB_T_DEFINED
}

现在用所有.pro文件替换它

    QT          =

TARGET      = ApiExample
TEMPLATE    = app

OBJECTS_DIR += temp
MOC_DIR     += temp
UI_DIR      += temp
RCC_DIR     += temp

SOURCES += ApiExample.cpp
INCLUDEPATH += $$PWD/include
LIBS    += -L$$PWD/bin\
        libtesseract-3 \
        liblept-3 \
        libgcc_s_dw2-1 \
        libgif-4 \
        libjbig-1 \
        libjpeg-8 \
        libpng15-15 \
        libtiff-3 \
        libtiffxx-3 \
        libwebp-2 \
        libmingwm10 \
        libzlib1 \

结果崩溃对话框没有出现,但它崩溃并在Qt应用程序输出中给我这个错误

The program has unexpectedly finished.

当我没有在.exe目录中添加DLL文件时,我遇到此错误,但现在我添加它们,我得到了同样的错误
我需要任何提示来解决我的问题,我现在还在尝试
更新
我尝试使用QT 5.5.1编译它,但我在mingw32-make步骤中遇到了一些问题和错误,所以如果有人尝试使用MinGW编译它,你可以在这里添加链接到编译库直接使用吗?

0 个答案:

没有答案