# include“ltocr.h”
L_LTOCR_APIL_INTEXT_FUNCTIONL_OcrEngine_GetAutoRecognizeManager(引擎、autoRecognizeManager)
返回一个句柄到OCR自动识别管理器。
OCR引擎的句柄。
指针L_OcrAutoRecognizeManager要更新的句柄。
价值 | 意义 |
---|---|
成功 | 活动很成功。 |
< 1 | 发生错误。指返回代码. |
该函数返回OCR引擎自动识别管理器的句柄,允许您执行一次“发射并忘记”OCR操作。
的L_OcrAutoRecognizeManager提供使用一次调用将单个或多页图像文件转换为OCR文档的方法。当引擎的默认设置提供了所需的最终文档,并且不需要进行微调时,可能需要这样做。
的L_OcrAutoRecognizeManager还提供回调支持来监控各种OCR操作,记录和跟踪,以及允许用户在任何时候中止。
必需的dll和库
静态无效LogMessage (常量wchar_t*消息,…)
{
常量无符号intbufferSize = 1024 * 4;
wchar_t缓冲(bufferSize);
如果(message != NULL)
{
va_list美联社;
va_start(美联社消息);
Vswprintf_s (buffer, message, ap);
va_end(美联社);
}
其他的
{
wcscpy_s(缓冲区,L"");
}
_tprintf(缓冲);
}
静态MyAutoRecognizeTraceWriteLineCallback(L_OcrAutoRecognizeJob作业,L_OcrTraceCategory类别,常量L_TCHAR* message, L_VOID* /*userData*/)
{
静态常量L_TCHAR* categoryNames[] =
{
L_TEXT (“信息”),
L_TEXT (“警告”),
L_TEXT (“错误”)
};
L_OcrAutoRecognizeJobData jobData = {0};
jobData。StructSize =运算符(L_OcrAutoRecognizeJobData);
L_OcrAutoRecognizeJob_GetJobData(工作,&jobData);
LogMessage(左"工作:%s %s线程:0x%08X - %s\n", jobData。JobName, categoryNames[category], GetCurrentThreadId(), message);
}
L_INT L_OcrEngine_GetAutoRecognizeManagerExample ()
{
//要处理的文件
L_TCHAR *imageFiles[] = {MAKE_IMAGE_PATH(L_TEXT(“OCR1.tif”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR2.tif”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR3.tif”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR4.tif”}));
//输出文件
L_TCHAR *documentFiles[] = {MAKE_IMAGE_PATH(L_TEXT(“OCR1.pdf”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR2.pdf”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR3.pdf”)),
MAKE_IMAGE_PATH (L_TEXT (“OCR4.pdf”}));
L_INT retCode = -1;
L_OcrEngine ocrEngine = NULL;
L_OcrAutoRecognizeManager autoRecognizeManager = NULL;
L_OcrAutoRecognizeManagerOptions autoRecognizeOptions = {0};
L_OcrDocumentManager = NULL;
std:: cout < <“创建引擎实例…\n”;
//创建引擎实例
retCode = L_OcrEngineManager_CreateEngine(L_OcrEngineType_Advantage, &ocrEngine);
如果(retCode != SUCCESS)
返回retCode;
//使用默认参数启动引擎
std:: cout < <“启动引擎……\n”;
L_OcrEngine_Startup(ocrEngine, NULL, OCR_ADVANTAGE_RUNTIME_DIR);
//获取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;
//启用Trace回调
autoRecognizeOptions。TraceCallback = MyAutoRecognizeTraceWriteLineCallback;
//给经理我们更新的设置
L_OcrAutoRecognizeManager_SetOptions (autoRecognizeManager &autoRecognizeOptions);
//使用图像/文本选项创建pdf文件
L_OcrEngine_GetDocumentManager (ocrEngine &ocrDocumentManager);
DOCWRTPDFOPTIONS pdfOptions;
pdfOptions.Options.uStructSize =运算符(DOCWRTPDFOPTIONS);
L_OcrDocumentManager_GetFormatOptions(ocrDocumentManager, DOCUMENTFORMAT_PDF, &pdfOptions.Options);
//设置我们想要的PDF选项
pdfOptions。bImageOverText =真正的;
pdfOptions。PdfProfile = DOCWRTPDFPROFILE_PDF;
//给引擎我们更新的PDF选项
L_OcrDocumentManager_SetFormatOptions(ocrDocumentManager, DOCUMENTFORMAT_PDF, &pdfOptions.Options);
//循环所有TIF文件并转换为PDF
为(int指数= 0;index < _countof(imageFiles);指数+ +)
{
// OCR每个文件
std::wcout << L“处理”<< imageFiles[index] << std::endl;
L_OcrAutoRecognizeManager_Run(autoRecognizeManager, imageFiles[index], documentFiles[index], DOCUMENTFORMAT_PDF, NULL);
std:: wcout < <“拯救”:<< documentFiles[index] << std::endl;
}
/ /清理
L_OcrEngine_Destroy (ocrEngine);
返回成功;
}