本教程展示如何使用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结构体。