This tutorial shows how to set up OCR and ICR processing to convert images with handwritten text to a searchable PDF in a Windows C DLL application using the LEADTOOLS SDK.
Overview | |
---|---|
Summary | This tutorial covers how to recognize handwritten text from images in a Windows C DLL Application. |
Completion Time | 30 minutes |
Visual Studio Project | Download tutorial project (19 KB) |
Platform | Windows C DLL Application |
IDE | Visual Studio 2017, 2019, 2022 |
Development License | Download LEADTOOLS |
Try it in another language |
Get familiar with the basic steps of creating a project and working with LEADTOOLS OCR technologies by reviewing the Add References and Set a License and Convert Images to Searchable PDF with OCR tutorials, before working on the Recognize Handwritten Text From Images With ICR - Windows C DLL tutorial.
Abbreviation for Optical Character Recognition; alternatively, defined as Optical Character Reader. For further details on LEADTOOLS support for this technology, refer to OCR.
Abbreviation for Intelligent Character Recognition. ICR is advanced OCR used to recognize handwritten text (e.g., handwritten text recognition in color and bitonal images).
Start with a copy of the project created in the Convert Images to Searchable PDF with OCR tutorial. If the project is not available, create it by following the steps in that tutorial.
To utilize LEADTOOLS OCR functionality, add the required header and library files. Open the pre-compiled header file (either pch.h
or stdafx.h
, depending on the version of Visual Studio used) and ensure the below lines are added.
#include "c:\LEADTOOLS23\Include\ltocr.h"
#pragma comment (lib, "C:\\LEADTOOLS23\\Lib\\CDLL\\x64\\Ltocr_x.lib") // OCR support
Note
For a complete list of DLLs that are required for specific application features, refer to Files to be Included with your Application - C API.
The License unlocks the features needed for the project. It must be set before any toolkit functionality is called. For details, including tutorials for different platforms, refer to Setting a Runtime License.
There are two types of runtime licenses:
Note
Adding LEADTOOLS references and setting a license are covered in more detail in the Add References and Set a License tutorial.
With the project created, the references added, the license set, and the load image code added, coding can begin.
The project already implements OCR but needs to be modified to support ICR . The main modification is to specify the type for OCR zones as ICR before recognizing the text.
In the Solution Explorer, open the project's CPP file. Navigate to the OcrAndSaveResult
function and add the following line of code before the L_OcrPage_Recognize
function call.
SetIcrZone(ocrPage); // Add this line
nRet = L_OcrPage_Recognize(ocrPage, NULL, NULL);
Create a new function named SetIcrZone(L_OcrPage handwrittenPage)
, which can be placed above the OcrAndSaveResult
function. Add the code below to set the L_OcrZoneType
to ICR .
void SetIcrZone(L_OcrPage handwrittenPage)
{
L_OcrZone ocrZone = { 0 };
ocrZone.StructSize = sizeof ocrZone;
L_RECT r = { 0, 0, BITMAPWIDTH(&LEADBmp),BITMAPHEIGHT(&LEADBmp) };
ocrZone.Bounds = r;
ocrZone.ZoneType = L_OcrZoneType_Icr;
ocrZone.BackColor = RGB(255, 255, 255);
L_OcrPage_InsertZone(handwrittenPage, 0, &ocrZone);
}
Note
If the page already has zones, the following code can be used to change their type to ICR
// Optionally use this function instead of SetIcrZone() if page already has zones
void ModifyExistingZonesToIcr(L_OcrPage handwrittenPage)
{
L_UINT uZones = 0;
L_OcrPage_GetZoneCount(handwrittenPage, &uZones);
for (int nZone = 0; nZone < uZones; nZone++)
{
L_OcrZone ocrZone = { 0 };
ocrZone.StructSize = sizeof ocrZone;
L_OcrPage_GetZoneAt(handwrittenPage, nZone, &ocrZone);
ocrZone.ZoneType = L_OcrZoneType_Icr;
L_OcrPage_SetZoneAt(handwrittenPage, nZone, &ocrZone);
}
}
Run the project by pressing F5, or by selecting Debug -> Start Debugging.
If the steps were followed correctly, the application should run and enable the user to select File > Open to load the file on which ICR recognition will be performed.
To test the project, this scanned image can be used. Select Ocr > Recognize and Export Results to have the application run ICR on the input file and output to a searchable PDF file here: C:\Temp\output.pdf
Here is the output from the original scanned document: Output PDF
This tutorial covered how to recognize hand written text by setting the L_OcrZoneType
to ICR .