本教程展示如何使用LEADTOOLS SDK在Windows C DLL应用程序中加载、显示和保存OCR区域。
概述 | |
---|---|
总结 | 本教程介绍如何在Windows C DLL应用程序中加载和保存OCR区域 |
完成时间 | 30分钟 |
Visual Studio项目 | 下载教程项目(19kb) |
平台 | Windows C DLL应用程序 |
IDE | Visual Studio 2017, 2019 |
开发许可 | 下载LEADTOOLS |
用另一种语言试试 |
|
通过回顾章节,熟悉创建项目和使用LEADTOOLS OCR技术的基本步骤添加引用和设置License而且将图像转换为可搜索的PDF与OCR教程,在工作之前加载和保存OCR区域- Windows C DLL教程。
中创建的项目的副本开始将图像转换为可搜索的PDF与OCR教程。如果项目不可用,请按照该教程中的步骤创建它。
要利用LEADTOOLS OCR功能,请添加所需的头文件和库文件。打开预编译的头文件(或pch.h
或stdafx.h
,取决于所使用的Visual Studio版本),并确保添加了以下行。
# include“c: \ LEADTOOLS22 \ \ ltocr.h包括”
#pragma comment (lib,“C: \ \ LEADTOOLS22 \ \ Lib \ \ CDLL \ \ x64 \ \ Ltocr_x.lib”)// OCR支持
请注意
有关特定应用程序功能所需的dll的完整列表,请参阅包含在应用程序中的文件- C API.
许可证解锁项目所需的特性。它必须在调用任何工具箱功能之前设置。有关详细信息,包括针对不同平台的教程,请参阅设置运行时License.
有两种类型的运行时许可证:
请注意
中更详细地介绍了添加LEADTOOLS引用和设置许可添加引用和设置License教程。
随着项目的创建、引用的添加、许可证的设置和加载图像代码的添加,编码就可以开始了。
在解决方案资源管理器,双击资源文件(.rc)。
添加一个新的产业园区菜单旁边的下拉菜单光学字符识别菜单。将下表中的三个菜单项添加到新增的菜单项中区菜单。
菜单项文本 | 项ID |
---|---|
份区 | ID_ZONES_DISPLAYZONES |
装区域 | ID_ZONES_LOADZONES |
并保存区 | ID_ZONES_SAVEZONES |
导航到指向
函数在项目的CPP文件中。在ID_FILE_OPEN
的调用L_OcrPage_FromBitmap
函数并添加调用L_OcrPage_AutoZone
下面,如下所示。
//在下面一行:
L_OcrPage_FromBitmap(ocrEngine, &ocrPage, &LEADBmp, L_OcrBitmapSharingMode_None, NULL, NULL);
//添加如下一行:
L_OcrPage_AutoZone(ocrPage, NULL, NULL);
下开关(wmId)
语句的下面WM_COMMAND
案例,添加以下代码创建一个新案例。这个新案例将粉刷OCR区域在OcrPage
对观众来说。
开关(wmId)
{
情况下ID_ZONES_DISPLAYZONES:
{
如果(ocrPage !)
{
对话框(hWnd,文本(“无法搜索OCR区域;没有添加页面”),文本(“LEADTOOLS演示”), MB_ICONERROR);
打破;
}
L_UINT uZones = 0;
L_OcrPage_GetZoneCount (ocrPage &uZones);
如果(0 == uZones)
{
对话框(hWnd,文本(“没有OCR区域可以绘制。”),文本(“LEADTOOLS演示”), MB_ICONERROR);
打破;
}
HDC HDC = GetDC(hWnd);
SelectObject (hdc GetStockObject (NULL_BRUSH));
为(L_UINT uZone = 0;uZone < uZones;uZone + +)
{
L_OcrZone ocrZone = {0};
ocrZone。StructSize =运算符ocrZone;
L_OcrPage_GetZoneAt(ocrPage, uZone, &ocrZone);
intleft = ocrZone.Bounds.left;
inttop = ocrZone.Bounds.top;
intright = ocrZone.Bounds.right;
int底部= ocrZone.Bounds.bottom;
TCHAR szZoneNo [32];
wsprintf (szZoneNo文本(“区域编号%d”), uZone);
TextOut(hdc, left, top, szZoneNo, lstrlen(szZoneNo));
矩形(hdc,左,上,右,下);
}
ReleaseDC (hWnd, hdc);
对话框(hWnd,文本(画在窗户上的区域。按OK清除它们”),文本(“LEADTOOLS演示”), MB_ICONINFORMATION);
InvalidateRect(hWnd, NULL, TRUE);
}
打破;
//保留其余的代码
在指向
函数,在开关(wmId)
语句,添加如下所示的两个新用例及其代码。这段代码将允许用户加载和保存OCR区域。
开关(wmId)
{
情况下ID_ZONES_LOADZONES:
{
如果(ocrPage !)
{
对话框(hWnd,文本(“无法加载OCR区域;没有添加页面”),文本(“LEADTOOLS演示”), MB_ICONERROR);
打破;
}
TCHAR szZoneFileName[260] = TEXT("");//文件名称
如果= GetZoneLoadingName(hWnd, szZoneFileName, ARRAYSIZE(szZoneFileName)))
打破;
L_OcrPage_LoadZonesFile(ocrPage, szZoneFileName, 1);
}
打破;
情况下ID_ZONES_SAVEZONES:
{
如果(ocrPage !)
{
对话框(hWnd,文本(“无法保存OCR区域;没有添加页面”),文本(“LEADTOOLS演示”), MB_ICONERROR);
打破;
}
TCHAR szZoneFileName[260] = TEXT("");//文件名称
如果= GetZoneSavingName(hWnd, szZoneFileName, ARRAYSIZE(szZoneFileName)))
打破;
L_OcrPage_SaveZonesFile(ocrPage, szZoneFileName, 1, NULL);
}
打破;
//保留其余的代码
创建两个新函数,命名为gettzonesavingname (HWND HWND, TCHAR* pszFileName, DWORD nLen)
而且gettzoneloadingname (HWND HWND, TCHAR* pszFileName, DWORD nLen)
,并把它们放在指向
函数。添加下面的代码以获取用于加载和保存OCR区域的有效区域文件名。
L_INT GetZoneSavingName(HWND HWND, tsar * pszFileName, DWORD nLen)
{
OPENFILENAME OPENFILENAME = {0};
OpenFileName。lStructSize =运算符(OPENFILENAME);
OpenFileName。hwndOwner = hwnd;
OpenFileName。lpstrFilter = TEXT("分区文件(*.ozf)\0*.ozf\0All\0*.*\0");
OpenFileName。lpstrFile = pszFileName;
OpenFileName。nMaxFile = nLen;
OpenFileName。lpstrFileTitle = NULL;
OpenFileName。lpstrDefExt = TEXT(“ozf”);
OpenFileName。nMaxFileTitle = 0;
OpenFileName。lpstrInitialDir = NULL;
OpenFileName。Flags = OFN_OVERWRITEPROMPT;
//显示文件保存对话框
如果(! GetSaveFileName (&OpenFileName))
返回失败;
返回成功;
}
L_INT GetZoneLoadingName(HWND HWND, TCHAR* pszFileName, DWORD nLen)
{
OPENFILENAME OPENFILENAME = {0};
OpenFileName。lStructSize =运算符(OpenFileName);
OpenFileName。hwndOwner = hwnd;
OpenFileName。lpstrFile = pszFileName;
OpenFileName。nMaxFile = nLen;
OpenFileName。lpstrFilter = TEXT("分区文件(*.ozf)\0*.ozf\0All\0*.*\0");
OpenFileName。nFilterIndex = 1;
OpenFileName。lpstrFileTitle = NULL;
OpenFileName。nMaxFileTitle = 0;
OpenFileName。lpstrInitialDir = NULL;
OpenFileName。Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
//显示File Open对话框
如果(! GetOpenFileName (&OpenFileName))
返回失败;
返回成功;
}
按下运行项目F5,或选择Debug ->开始调试.
如果正确地执行了这些步骤,应用程序将运行。按照下面的说明进行测试。
点击File ->打开,然后选择要在查看器中加载的图像。
点击区域->显示区域,以油漆区聚集而成L_OcrPage_AutoZone(ocrPage, NULL, NULL);
函数,或从加载OZF文件。
点击区域->负载区域,然后选择包含你要载入的OCR区域的OZF文件。
点击区域->保存区域,将当前的OCR区域保存到OZF文件中。
本教程演示如何加载和保存OCR区域,以及如何在屏幕上显示它们的位置。我们还介绍了如何使用L_OcrPage
而且L_OcrZone
结构体。