OCR C++ Tesseract监控识别进度(多线程)

OCR C++ Tesseract监控识别进度(多线程) 这个程序使用C标准多线程库监控Tesseract OCR的识别进度。输入图片程序运行后会在CMD里打印识别结果第一行打印识别进度在up的电脑上只从1%加载到61%,就开始打印输出结果了。代码#include tesseract/baseapi.h #include tesseract/ocrclass.h #include leptonica/allheaders.h #include thread void monitorProgress(ETEXT_DESC *monitor, int page); void ocrProcess(tesseract::TessBaseAPI *api, ETEXT_DESC *monitor); void monitorProgress(ETEXT_DESC *monitor, int page) { while (1) { printf( \r%3d%%, monitor[page].progress); fflush (stdout); if (monitor[page].progress100) break; } } void ocrProcess(tesseract::TessBaseAPI *api, ETEXT_DESC *monitor) { api-Recognize(monitor); } int main() { tesseract::TessBaseAPI *api new tesseract::TessBaseAPI(); ETEXT_DESC *monitor new ETEXT_DESC(); if (api-Init(/tesseract/tessdata_best, eng)) { fprintf(stderr, Could not initialize tesseract.\n); return 1; } api-SetPageSegMode(tesseract::PSM_AUTO); Pix *image pixRead(/tesseract-ocr/test/testing/phototest.tif); if (!image) { fprintf(stderr, Leptonica cant process input file!\n); return 2; } api-SetImage(image); int page 0; std::thread t1(ocrProcess, api, monitor); std::thread t2(monitorProgress, monitor, page); t1.join(); t2.join(); pixDestroy(image); char *outText api-GetUTF8Text(); printf(\n%s, outText); if (outText) delete [] outText; api-End(); delete api; return 0; }