Use this function to set a callback to get notified when a job is about to start or when a job is completed or aborted.
#include "ltocr.h"
L_LTOCR_API L_INT EXT_FUNCTION L_OcrAutoRecognizeManager_SetRunJobCallback(autoRecognizeManager, callback, userData)
Handle to the OCR engine auto recognize manager.
Pointer to L_OcrAutoRecognizeRunJobCallback function to get notified when a job is about to start or when a job is completed or aborted.
Optional user data to pass to the callback function.
| Value | Meaning |
|---|---|
| SUCCESS | The function was successful. |
| < 1 | An error occurred. Refer to Return Codes. |
Use this function to set a callback to get notified when a job is about to start or when a job is completed or aborted.
This callback occurs when a job is about to start or when a job is completed or aborted. For more information about the kind of information you will get during this callback, refer to L_OcrAutoRecognizeRunJobCallbackData.
const L_TCHAR* _ocrOperationNames[] ={L"LoadImage",L"SaveImage",L"PreprocessImage",L"AutoZone",L"Recognize",L"SaveDocumentPrepare",L"SaveDocument",L"SaveDocumentConvertImage",L"Formatting",L"RecognizeOMR",};L_VOID ShowJobErrors(L_OcrAutoRecognizeJob ocrJob){// Show the errorsL_OcrAutoRecognizeManagerJobError* errors = NULL;L_UINT errorCount = 0;L_OcrAutoRecognizeJob_GetErrors(ocrJob, &errors, &errorCount);std::wcout << L"Errors:" << std::endl;for(L_UINT i = 0; i < errorCount; i++){const L_OcrAutoRecognizeManagerJobError* error = &errors[i];std::wcout << L" page: " << error->ImagePageNumber << L" Operation: " << _ocrOperationNames[error->Operation] << L" code: " << error->ErrorCode << std::endl;}L_OcrMemory_Free(errors);}L_INT EXT_CALLBACK MyRunJobCB(const L_OcrAutoRecognizeRunJobCallbackData* data, L_VOID* /*userData*/){std::wcout << L"MyRunJobCallback fired...\nStatus: " << data->Status << std::endl;if(data->IsCompleted)std::wcout << L"Job completed" << std::endl;elsestd::wcout << L"Job still in progress" << std::endl;if(data->Status != SUCCESS)ShowJobErrors(data->Job);return SUCCESS;}L_INT L_OcrAutoRecognizeManager_SetRunJobCallbackExample(){L_INT retCode = -1;L_OcrEngine ocrEngine = NULL;L_OcrAutoRecognizeManager autoRecognizeManager = NULL;L_OcrAutoRecognizeManagerOptions autoRecognizeOptions = { 0 };L_OcrAutoRecognizeJob autoRecognizeJob = NULL;// Create an instance of the engineretCode = L_OcrEngineManager_CreateEngine(L_OcrEngineType_LEAD, &ocrEngine);if(retCode != SUCCESS)return retCode;// Start the engine using default parametersretCode =L_OcrEngine_Startup(ocrEngine, NULL, OCR_LEAD_RUNTIME_DIR);if(retCode != SUCCESS)return retCode;// Get the AutoRecognizeManagerL_OcrEngine_GetAutoRecognizeManager(ocrEngine, &autoRecognizeManager);// Set the options we wantautoRecognizeOptions.StructSize = sizeof(L_OcrAutoRecognizeManagerOptions);L_OcrAutoRecognizeManager_GetOptions(autoRecognizeManager, &autoRecognizeOptions);// Use maximum CPUs/cores of current machine to speed up recognitionautoRecognizeOptions.UseThreads = true;// Deskew and auto-orient all pages before recognitionautoRecognizeOptions.PreprocessPageCommands = L_OcrAutoPreprocessPageCommands_Deskew | L_OcrAutoPreprocessPageCommands_Rotate;// Give the manager our updated settingsL_OcrAutoRecognizeManager_SetOptions(autoRecognizeManager, &autoRecognizeOptions);L_OcrAutoRecognizeJobData jobData;jobData.StructSize = sizeof(L_OcrAutoRecognizeJobData);wcscpy_s(jobData.ImageFileName, MAKE_IMAGE_PATH(L_TEXT("OCR1.tif")));wcscpy_s(jobData.DocumentFileName, MAKE_IMAGE_PATH(L_TEXT("OCR1.pdf")));jobData.Format = DOCUMENTFORMAT_PDF;wcscpy_s(jobData.JobName, L"MyJob");jobData.FirstPageNumber = 1;jobData.LastPageNumber = -1;jobData.UserData = NULL;wcscpy_s(jobData.ZonesFileName, L_TEXT(""));L_OcrAutoRecognizeManager_CreateJob(autoRecognizeManager, &autoRecognizeJob, &jobData);L_OcrAutoRecognizeRunJobCallback runJobCallback;L_OcrAutoRecognizeManager_GetRunJobCallback(autoRecognizeManager, &runJobCallback, NULL);if(runJobCallback == NULL){// Add our callback handlerL_OcrAutoRecognizeManager_SetRunJobCallback(autoRecognizeManager, &MyRunJobCB, NULL);}// Run the jobretCode = L_OcrAutoRecognizeManager_RunJob(autoRecognizeManager, autoRecognizeJob);//CLEANUPL_OcrAutoRecognizeJob_Destroy(autoRecognizeJob);L_OcrEngine_Destroy(ocrEngine);return retCode;}