使用 Tesseract 和 OpenCV 的文本识别 (OCR) 中的链接器错误?
Linker error in Text Recognition (OCR) using Tesseract and OpenCV?
我已经编写了使用 Tesseract 和 OpenCV.But 来识别图像中的文本的代码,而我正在执行它们的代码没有问题,但它显示了一些链接器错误。我在视觉工作室中使用 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
感谢您的帮助。
找到上述问题的解决方案。实际上我试图 运行 一个 64 位代码并使用一个 32 位库。所以出现了链接错误。所以现在再次为 32 位构建 tesseract 并使用它会起作用。作为参考,您可以在此处查看 https://github.com/tesseract-ocr/tesseract/issues/1490.
我已经编写了使用 Tesseract 和 OpenCV.But 来识别图像中的文本的代码,而我正在执行它们的代码没有问题,但它显示了一些链接器错误。我在视觉工作室中使用 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
感谢您的帮助。
找到上述问题的解决方案。实际上我试图 运行 一个 64 位代码并使用一个 32 位库。所以出现了链接错误。所以现在再次为 32 位构建 tesseract 并使用它会起作用。作为参考,您可以在此处查看 https://github.com/tesseract-ocr/tesseract/issues/1490.