Working with Recognition Results Using LEADTOOLS OCR Module - OmniPage Engine

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.

Help Version 21.0.2021.1.7
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS OCR Module - OmniPage Engine C API Help