Ошибка компоновщика в распознавании текста (OCR) при использовании Tesseract и OpenCV? - PullRequest
0 голосов
/ 13 сентября 2018

Я написал код для распознавания текста в изображениях, используя Tesseract и OpenCV. Но пока я выполняю их, нет проблем с кодом, но он показывает некоторую ошибку компоновщика.Я использую tesseract4.0 с визуальными студиями.

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

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
    string outText;
    string imPath = "Images/newspaper2.jpeg";

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

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

    // Set Page segmentation mode to PSM_AUTO (3)
    ocr->SetPageSegMode(tesseract::PSM_AUTO);

    // Open input image using OpenCV
    Mat im = imread(imPath, IMREAD_COLOR);

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

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

    // print recognized text
    cout << outText << endl; // Destroy used object and release memory ocr->End();

    return EXIT_SUCCESS;
}

Моя ошибка выглядит следующим образом.

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2001 unresolved external symbol closesocket  opencv1 C:\Users\Muskan Agarwal\Dropbox\Personal\opencv1\opencv1\tesseract40.lib(svutil.cpp.obj)    1   
Error   LNK2001 unresolved external symbol connect  opencv1 C:\Users\Muskan Agarwal\Dropbox\Personal\opencv1\opencv1\tesseract40.lib(svutil.cpp.obj)    1   
Error   LNK2001 unresolved external symbol htons    opencv1 C:\Users\Muskan Agarwal\Dropbox\Personal\opencv1\opencv1\tesseract40.lib(svutil.cpp.obj)    1   
Error   LNK2001 unresolved external symbol recv opencv1 C:\Users\Muskan Agarwal\Dropbox\Personal\opencv1\opencv1\tesseract40.lib(svutil.cpp.obj)    1   
Error   LNK2001 unresolved external symbol select   opencv1 C:\Users\Muskan Agarwal\Dropbox\Personal\opencv1\opencv1\tesseract40.lib(svutil.cpp.obj)    1   
Error   LNK2001 unresolved external symbol send opencv1 C:\Users\Muskan Agarwal\Dropbox\Personal\opencv1\opencv1\tesseract40.lib(svutil.cpp.obj)    1   
Error   LNK2001 unresolved external symbol gethostbyname    opencv1 C:\Users\Muskan Agarwal\Dropbox\Personal\opencv1\opencv1\tesseract40.lib(svutil.cpp.obj)    1   
Error   LNK2001 unresolved external symbol socket   opencv1 C:\Users\Muskan Agarwal\Dropbox\Personal\opencv1\opencv1\tesseract40.lib(svutil.cpp.obj)    1   

Спасибо за помощь.

1 Ответ

0 голосов
/ 17 сентября 2018

Разобрался с решением вышеуказанной проблемы. На самом деле я пытался запустить 64-битный код и использовать 32-битную библиотеку. Так что произошла ошибка компоновки. Так что теперь снова соберите tesseract для 32 бит и используйте его, чтобы работать. Для справки вы можете посмотреть здесь https://github.com/tesseract-ocr/tesseract/issues/1490.

...