转换图像到可搜索的PDF与OCR - Windows C DLL

本教程演示如何设置OCR处理,使用Windows C DLL应用程序中的LEADTOOLS SDK将任何支持的文件转换为可搜索的PDF。

概述
总结 本教程演示如何在Windows C DLL应用程序中加载、识别并将OCR数据保存到PDF中。
完成时间 30分钟
Visual Studio项目 下载教程项目(19kb)
平台 Windows C DLL应用程序
IDE Visual Studio 2017, 2019
开发许可 下载LEADTOOLS
用另一种语言试试

所需的知识

来熟悉创建项目和加载图像的基本步骤添加引用和设置License而且加载,显示和保存图像教程,在工作之前转换图像到可搜索的PDF与OCR - Windows C DLL教程。

创建项目并添加LEADTOOLS引用

中创建的64位Windows API项目的副本开始加载,显示和保存图像教程。如果项目不可用,请按照该教程中的步骤创建它。

为了利用LEADTOOLS OCR功能,需要额外的头文件和DLL文件。打开预编译的头文件(或pch.hstdafx.h,取决于所使用的Visual Studio的版本)并添加以下行:

# include“C: \ LEADTOOLS22 \ \ ltocr.h包括”#pragma comment (lib,“C: \ \ LEADTOOLS22 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltocr_x.lib”//支持OCR

设置License文件

许可证解锁项目所需的特性。它必须在调用任何工具包函数之前设置。有关详细信息,包括不同平台的教程,请参阅设置运行时License

有两种类型的运行时许可证:

添加OCR码

创建了项目、添加了引用、设置了许可证并添加了加载文件代码之后,就可以开始编码了。

添加一个包含新项目的新菜单:

请注意

有关如何在Visual Studio 2019中添加菜单项的详细信息,请参见加载,显示和保存图像教程。

有关特定工具包功能或文件格式需要哪些dll的完整列表,请参阅与您的应用程序包含的文件

有关LEADTOOLS OCR模块文件的详细信息,请参见LEAD引擎运行时重分发表

打开项目的CPP文件,并将以下声明添加到顶部的Global Variables部分。

// OCR全局变量:L_OcrEngine ocrEngine = NULL;L_OcrDocument;L_OcrPage ocrPage = NULL;L_OcrDocumentManager;

InitInstance函数,并在LEADTOOLS集许可代码下面添加以下初始化代码:

如果((SUCCESS != L_OcrEngineManager_CreateEngine(L_OcrEngineType_LEAD, &ocrEngine))|| (SUCCESS != L_OcrEngine_Startup(ocrEngine, NULL, TEXT)“C: \ \ LEADTOOLS22 \ \ Bin \ \共同\ \ OcrLEADRuntime”)))|| (SUCCESS != L_OcrEngine_GetDocumentManager(ocrEngine, &ocrDocumentManager)))对话框(NULL,文本("初始化OCR错误..\nAborting"),文本(“LEADTOOLS演示”), MB_ICONERROR);返回虚假的;

导航到指向函数和修改下面的代码ID_FILE_OPEN的情况。的调用下面立即添加以下代码L_LoadBitmap ()功能:

如果(LEADBmp.Flags.Allocated)如果(ocrDocument)L_OcrDocument_Destroy (ocrDocument);ocrDocument = NULL;ocrPage = NULL;L_OcrDocumentManager_CreateDocument(ocrDocumentManager, &ocrDocument, L_OcrCreateDocumentOptions_AutoDeleteFile, NULL);L_OcrPage_FromBitmap(ocrEngine, &ocrPage, &LEADBmp, L_OcrBitmapSharingMode_None, NULL, NULL);

接下来,修改WM_DESTROY实例代码,并在调用之前添加以下行PostQuitMessage ()

如果(ocrDocument)L_OcrDocument_Destroy (ocrDocument);如果(ocrEngine)L_OcrEngine_Destroy (ocrEngine);

指向开关(wmId)语句的下面WM_COMMANDCase,添加一个新的Case:

开关(wmId)情况下ID_OCR_RECOGNIZEANDEXPORTRESULTS:如果(LEADBmp.Flags.Allocated !)对话框(hWnd,文本("无法执行OCR。未加载图像"),文本(“LEADTOOLS演示”), MB_ICONERROR);打破OcrAndSaveResult (hWnd);打破//保持代码的其余部分不变

创建一个名为OcrAndSaveResult把它放在指向函数。将以下代码添加到新函数中。

无效OcrAndSaveResult (HWND HWND)如果(!ocrEngine || !ocrDocument || !对话框(hwnd,文本(OCR引擎未正确初始化),文本(“LEADTOOLS OCR演示”), MB_OK);返回L_OcrLanguageManager languageManager = NULL;L_OcrLanguage languages [] = {L_OcrLanguage_EN};常量TCHAR* outputFile = TEXT(“C: \ \ Temp \ \ output.pdf”);L_OcrEngine_GetLanguageManager (ocrEngine &languageManager);L_OcrLanguageManager_EnableLanguages(languageManager, langs, _countof(langs));//尝试识别文档中的文本l_ocrpage_recognition (ocrPage, NULL, NULL);//将创建的OCR页面添加到基于文件的OCR文档中L_OcrDocument_AddPage (ocrDocument ocrPage);TCHAR消息[1024];如果(L_OcrDocument_Save(ocrDocument, outputFile, DOCUMENTFORMAT_PDF, NULL, NULL) == SUCCESS)输出说明wsprintf(消息、文本("OCR成功,结果已保存到%s"), outputFile);其他的wsprintf(消息、文本(“OCR失败”));消息框(hwnd, message, TEXT)“LEADTOOLS OCR演示”), MB_OK);

运行项目

通过按运行项目F5或者通过选择Debug ->开始调试

如果正确地执行了步骤,应用程序应该会运行,并允许用户进行选择File ->打开以载入将进行OCR识别的文件。对于这个例子,这个扫描文档将会被使用。选择Ocr ->识别和导出结果让应用程序在输入文件上运行OCR并输出到一个可搜索的PDF文件:C: \ Temp \ output.pdf

以下是原始扫描文档的预期输出:输出PDF

总结

本教程介绍了如何创建一个c++ Windows API OCR应用程序,该应用程序接受输入文件并将其导出为可搜索的PDF。

另请参阅

net
iOS
188金宝搏的网址客服|支持|联系我们|知识产权公告
©1991 - 2022领先技术公司版权所有