Working with Recognition Results Using OCR Professional
To add code to an existing project in order to work with recognition results:
1. |
Start with the program you created in Recognize Pages. |
2. |
Define the following global IDs in Ezfunc.h in the OCR_Ltdoc2 directory: |
#define IDM_GET_OUTPUTFORMAT 207
#define IDM_SAVE_RESULTS 208
3. |
Edit EZFUNC.RC file in the OCR_Ltdoc2 directory and add the following lines: |
MAIN_MENU MENU
BEGIN
...
...
MENUITEM "Get Output Formats" IDM_GET_OUTPUTFORMAT
MENUITEM "Save Results" IDM_SAVE_RESULTS
END
4. |
In the MainWndProc procedure, add the following code to the switch statement for WM_COMMAND: |
case IDM_GET_OUTPUTFORMAT:
{
nRet = L_Doc2EnumOutputFileFormats(hDoc, EnumOutputFileFormatsCB, NULL);
if (nRet != SUCCESS)
{
wsprintf (achBuff, TEXT("Error %d enumerating available file formats"), nRet);
MessageBox (NULL, achBuff, TEXT("Error"), MB_OK);
}
}
break;
case IDM_SAVE_RESULTS:
{
RESULTOPTIONS2 ResOpts;
memset(&ResOpts, 0, sizeof(RESULTOPTIONS2));
nRet = L_Doc2GetRecognitionResultOptions(hDoc, &ResOpts, sizeof(RESULTOPTIONS2));
if (nRet == SUCCESS)
{
ResOpts.Format = DOC2_WORD_2000;
ResOpts.FormatLevel = DOC2_FORMAT_LEVEL_AUTO;
L_Doc2SetRecognitionResultOptions(hDoc, &ResOpts);
nRet = L_Doc2SaveResultsToFile (hDoc, TEXT("c:\\test.doc"));
if (nRet != SUCCESS)
{
wsprintf (achBuff, TEXT("Error %d in saving recognition results to a file"), nRet);
MessageBox (NULL, achBuff, TEXT("Error"), MB_OK);
}
}
}
break;
5. |
Add the following function at the end of the code in EZFUNC.CPP in OCR_Ltdoc2 directory. |
L_INT EXT_CALLBACK EnumOutputFileFormatsCB(DOC2_FORMATTYPE Format, L_VOID * pUserData)
{
UNREFERENCED_PARAMETER(pUserData);
TEXTFORMATINFO2 FormatInfo;
L_INT nRet;
L_TCHAR szBuffer[1024];
memset(&FormatInfo, 0, sizeof(TEXTFORMATINFO2));
nRet = L_Doc2GetTextFormatInfo(hDoc, Format, &FormatInfo, sizeof(TEXTFORMATINFO2));
if (nRet == SUCCESS)
{
wsprintf(szBuffer, TEXT("Format Name = %s\nFormat DLL Name = %s\nFormat Ext Name = %s\n"),
(FormatInfo.pszName)
? FormatInfo.pszName : TEXT(" "),
(FormatInfo.pszDLLName)
? FormatInfo.pszDLLName : TEXT(" "),
(FormatInfo.pszExtName)
? FormatInfo.pszExtName : TEXT(" "));
MessageBox(NULL, szBuffer, TEXT("Format Info"), MB_OK);
if (FormatInfo.pszName)
GlobalFreePtr(FormatInfo.pszName);
if (FormatInfo.pszDLLName)
GlobalFreePtr(FormatInfo.pszDLLName);
if (FormatInfo.pszExtName)
GlobalFreePtr(FormatInfo.pszExtName);
}
return SUCCESS;
}
6. |
Also, add the following statement before the MainWndProc function |
L_INT EXT_CALLBACK EnumOutputFileFormatsCB(DOC2_FORMATTYPE Format, L_VOID * pUserData);
7. |
Build SimpleLoad.exe. |
8. |
Run SimpleLoad.exe. |