一、tesseract编译
选中使用tesseract实现OCR,使用vs2007进行编译,在编译过程中各种报错,后使用vcpkg进行编译,耗费比较长的时间后,成功编译了windows64位的版本。不想自己编译的,需要的可以点击下载。
二、qt项目导入
将编译好的包,解压后,在项目中导入
win32:CONFIG(release, debug|release): LIBS += -LD:/soft/tesseract/tesseract_x64-windows/lib/ -ltesseract53
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/soft/tesseract/tesseract_x64-windows/debug/lib/ -ltesseract53d
INCLUDEPATH += D:/soft/tesseract/tesseract_x64-windows/include
DEPENDPATH += D:/soft/tesseract/tesseract_x64-windows/include
将编译包的bin下的动态库拷贝到程序运行目录(debug目录下的bin下的动态库拷贝到debug的运行目录)
三、编码实现
QString outText;
String imPath = "F:\\tupian2\\SCAN0000.JPG";
tesseract::TessBaseAPI *ocr = new tesseract::TessBaseAPI();
ocr->Init("D:\\soft\\tesseract\\tessdata", "chi_sim", tesseract::OcrEngineMode::OEM_LSTM_ONLY);
ocr->SetPageSegMode(tesseract::PSM_AUTO);
Mat im = cv::imread(imPath, IMREAD_COLOR);
ocr->SetImage(im.data, im.cols, im.rows, 3, im.step);
outText = QString(ocr->GetUTF8Text());
qDebug() << outText;
// Destroy used object and release memory
ocr->End();
四、运行结果
Estimating resolution as 629
Detected 23 diacritics
"中 华 人 民 共 和 国 国 家 标 准\n\nGB/T 33870 一 2017\n\n干 部 人 事 档 案 数 字 化 技 术 规 范\n\nTechnical specification for digitalization of cadre personnel archivyes\n\n2017-07-01 发 布 2017-07-01 实 施\nT l n 0 a\n中 国 国 家 标 准 化 管 理 委 员 会\n\n"