To add code to an existing project in order to recognize pages:
Define the following global IDs in Ezfunc.h in the OCR_Ltocr directory:
#define IDM_RECOGNIZE 205
#define IDM_GET_STATUS 206
Edit EZFUNC.RC file in the OCR_Ltocr directory and add the following lines:
MAIN_MENU MENU
BEGIN
...
...
MENUITEM "Recognize Page" IDM_RECOGNIZE
MENUITEM "Engine Status" IDM_GET_STATUS
END
In Ezfunc.cpp in the MainWndProc procedure, add the following code to the switch statement (switch(LOWORD(wParam))) for WM_COMMAND:
case IDM_RECOGNIZE:
{
L_OcrLanguageManager languageManager = NULL;
L_OcrEngine_GetLanguageManager(hEngine, languageManager);
L_OcrLanguage langs[] = { L_OcrLanguage_EN };
nRet = L_OcrLanguageManager_EnableLanguages(languageManager, langs, _countof(langs));
if(nRet != SUCCESS)
{
wsprintf (achBuff, TEXT("Error %d enabling recognition language(s)"), nRet);
MessageBox(NULL, achBuff, TEXT("Error!"), MB_OK);
return 0;
}
nRet = L_OcrPage_Recognize(hPage, MyCallback, NULL);
if (nRet == SUCCESS)
MessageBox(NULL, TEXT("The engine finished recognizing OCR page successfully."), TEXT("Notice"), MB_OK);
else
{
wsprintf (achBuff, TEXT("Error %d while recognizing OCR page"), nRet);
MessageBox (NULL, achBuff, TEXT("Error"), MB_OK);
}
}
break;
case IDM_GET_STATUS:
{
L_OcrRecognizeStatistic statistics;
memset(&statistics, 0, sizeof(L_OcrRecognizeStatistic));
statistics.StructSize = sizeof(L_OcrRecognizeStatistic);
nRet = L_OcrPage_GetRecognizeStatistics(hPage, &statistics);
if (nRet == SUCCESS)
{
wsprintf(achBuff, TEXT("Total Recognized Characters = %d\nTotal Recognized Words = %d\nTotal Rejected Characters = %d\n "),
statistics.RecognizedCharacters,
statistics.RecognizedWords,
statistics.RejectedCharacters);
MessageBox(NULL, achBuff, TEXT("Status..."), MB_OK);
}
}
break;
Add below callback code above the function MainWndProc:
L_INT EXT_CALLBACK MyCallback(L_OcrProgressData* data, L_VOID* userData)
{
UNREFERENCED_PARAMETER(userData);
L_TCHAR szBuffer[1024] = {0};
L_TCHAR szOperation[100] = {0};
switch(data->Operation)
{
case L_OcrProgressOperation_AutoZone:
lstrcpy(szOperation, TEXT("Auto Zone"));
break;
case L_OcrProgressOperation_PreprocessImage:
lstrcpy(szOperation, TEXT("Pre-process Image"));
break;
case L_OcrProgressOperation_Recognize:
lstrcpy(szOperation, TEXT("Recognize"));
break;
case L_OcrProgressOperation_SaveDocumentPrepare:
lstrcpy(szOperation, TEXT("Save Document Prepare"));
break;
case L_OcrProgressOperation_SaveDocument:
lstrcpy(szOperation, TEXT("Save Document"));
break;
}
wsprintf(szBuffer, TEXT("Recognizing page # %d, Operation: %s, Percentage: %d\n"), data->CurrentPageIndex, szOperation, data->Percentage);
OutputDebugString(szBuffer);
return SUCCESS; // continue to recognize next page
}
Build SimpleLoad.exe.