# include“ltocr.h”
L_LTOCR_APIL_INTEXT_FUNCTIONL_OcrAutoRecognizeManager_SetRunJobCallback(autoRecognizeManager, callback, userData)
使用此函数可设置一个回调函数,以便在作业即将开始或作业完成或中止时获得通知。
OCR引擎自动识别管理器的处理。
指针L_OcrAutoRecognizeRunJobCallback函数在作业即将开始或作业完成或中止时获得通知。
传递给回调函数的可选用户数据。
价值 | 意义 |
---|---|
成功 | 活动很成功。 |
< 1 | 发生错误。指返回代码. |
使用此函数可设置一个回调函数,以便在作业即将开始或作业完成或中止时获得通知。
此回调在作业即将启动或作业完成或中止时发生。有关在此回调期间将获得的信息类型的详细信息,请参阅L_OcrAutoRecognizeRunJobCallbackData.
必需的dll和库
常量L_TCHAR* _ocoperationnames [] =
{
l“LoadImage”,
l“SaveImage”,
l“PreprocessImage”,
l“AutoZone”,
l“识别”,
l“SaveDocumentPrepare”,
l“SaveDocument”,
l“SaveDocumentConvertImage”,
l“格式”,
l“RecognizeOMR”,
};
(L_OcrAutoRecognizeJob)
{
//显示错误
L_OcrAutoRecognizeManagerJobError* errors = NULL;
L_UINT errorCount = 0;
L_OcrAutoRecognizeJob_GetErrors(ocrJob, &errors, &errorCount);
std::wcout << L错误:“< < std:: endl;
为(L_UINT i = 0;i < errorCount;我+ +)
{
常量L_OcrAutoRecognizeManagerJobError* error = &errors[i];
std::wcout << L“页面:”<< error->ImagePageNumber << L“操作:”<< _ocoperationnames [error->Operation] << L“代码:”<< error->ErrorCode << std::endl;
}
L_OcrMemory_Free(错误);
}
MyRunJobCB(常量L_OcrAutoRecognizeRunJobCallbackData* data, L_VOID* /*userData*/
{
std::wcout << L“MyRunJobCallback解雇了…\ nStatus:“<< data->Status << std::endl;
如果(数据- > IsCompleted)
std::wcout << L“完成工作”< < std:: endl;
其他的
std::wcout << L“工作仍在进行中”< < std:: endl;
如果(data->Status != SUCCESS)
ShowJobErrors(数据- >工作);
返回成功;
}
L_INT L_OcrAutoRecognizeManager_SetRunJobCallbackExample ()
{
L_INT retCode = -1;
L_OcrEngine ocrEngine = NULL;
L_OcrAutoRecognizeManager autoRecognizeManager = NULL;
L_OcrAutoRecognizeManagerOptions autoRecognizeOptions = {0};
L_OcrAutoRecognizeJob = NULL;
//创建引擎实例
retCode = L_OcrEngineManager_CreateEngine(L_OcrEngineType_Advantage, &ocrEngine);
如果(retCode != SUCCESS)
返回retCode;
//使用默认参数启动引擎
retCode =L_OcrEngine_Startup(ocrEngine, NULL, OCR_ADVANTAGE_RUNTIME_DIR);
如果(retCode != SUCCESS)
返回retCode;
//获取AutoRecognizeManager
L_OcrEngine_GetAutoRecognizeManager (ocrEngine &autoRecognizeManager);
//设置我们需要的选项
autoRecognizeOptions。StructSize =运算符(L_OcrAutoRecognizeManagerOptions);
L_OcrAutoRecognizeManager_GetOptions (autoRecognizeManager &autoRecognizeOptions);
//使用当前机器的最大cpu /核数来加速识别
autoRecognizeOptions。UseThreads =真正的;
//在识别之前,将所有页面倾斜并自动定向
autoRecognizeOptions。PreprocessPageCommands = L_OcrAutoPreprocessPageCommands_Deskew | L_OcrAutoPreprocessPageCommands_Rotate;
//给经理我们更新的设置
L_OcrAutoRecognizeManager_SetOptions (autoRecognizeManager &autoRecognizeOptions);
L_OcrAutoRecognizeJobData jobData;
jobData。StructSize =运算符(L_OcrAutoRecognizeJobData);
wcscpy_s (jobData。ImageFileName MAKE_IMAGE_PATH (L_TEXT (“OCR1.tif”)));
wcscpy_s (jobData。文档FileName, MAKE_IMAGE_PATH(L_TEXT(“OCR1.pdf”)));
jobData。格式= 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);
如果(runJobCallback == NULL)
{
//添加回调处理程序
L_OcrAutoRecognizeManager_SetRunJobCallback(autoRecognizeManager, & myrunjobbcb, NULL);
}
//运行作业
retCode = L_OcrAutoRecognizeManager_RunJob(autoRecognizeManager, autoRecognizeJob);
/ /清理
L_OcrAutoRecognizeJob_Destroy (autoRecognizeJob);
L_OcrEngine_Destroy (ocrEngine);
返回retCode;
}