|   |           Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.5.7 | 
Take the following steps to start a project and to add some code that creates a set of master forms and uses them to recognize a filled form:
[C#]
            using Leadtools;
            using Leadtools.Codecs;
            using Leadtools.Forms;
            using Leadtools.Forms.Ocr;
            using Leadtools.Forms.Recognition;
            using Leadtools.Forms.Recognition.Ocr;
            using System.IO; 
            
        [Visual Basic]
            Imports Leadtools
            Imports Leadtools.Codecs
            Imports Leadtools.Forms
            Imports Leadtools.Forms.Ocr 
            Imports Leadtools.Forms.Recognition
            Imports Leadtools.Forms.Recognition.Ocr
            Imports System.IO
            
    [C#]
            //Create the recognition engine
            FormRecognitionEngine recognitionEngine = new FormRecognitionEngine();
            RasterCodecs codecs;
            //Create the OCR Engine to use in the recognition
            IOcrEngine formsOCREngine;
            
        [Visual Basic]
            'Create the recognition engine
            Dim recognitionEngine As FormRecognitionEngine = New FormRecognitionEngine()
            Dim codecs As RasterCodecs
            'Create the OCR Engine to use in the recognition
            Dim formsOCREngine As IOcrEngine
            
    [C#]
            try
             {
                string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
                
                // Unlock the Forms support
                string MY_FORMSDEVELOPER_KEY = "xyz123abc";
                RasterSupport.SetLicense(MY_LICENSE_FILE, MY_FORMSDEVELOPER_KEY);
                
                // Unlock the OCR Advantage support
                string MY_OCRPLSDEVELOPER_KEY = "abc123xyz";
                RasterSupport.SetLicense(MY_LICENSE_FILE, MY_OCRPLSDEVELOPER_KEY);
                
                // Unlock the Document support
                string MY_DOCDEVELOPER_KEY = "123xyzabc";
                RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DOCDEVELOPER_KEY);
                
                codecs = new RasterCodecs();
                //Create a LEADTOOLS OCR Advantage Engine and start it
                formsOCREngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false);
                formsOCREngine.Startup(codecs, null, null, @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime");
                //Add an OCRObjectManager to the recognition engines
                //ObjectManager collection
                OcrObjectsManager ocrObjectsManager = new OcrObjectsManager(formsOCREngine);
                ocrObjectsManager.Engine = formsOCREngine;
                recognitionEngine.ObjectsManagers.Add(ocrObjectsManager);
             }
             catch (Exception ex)
             {
                MessageBox.Show(ex.Message);
             } 
             
            
        [Visual Basic]
            Try
               Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
               
               ' Unlock the Forms support
               Dim MY_FORMSDEVELOPER_KEY As String = "xyz123abc"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_FORMSDEVELOPER_KEY)
               
               ' Unlock the OCR Advantage support
               Dim MY_OCRPLSDEVELOPER_KEY As String = "abc123xyz"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_OCRPLSDEVELOPER_KEY)
               
               ' Unlock the Document support
               Dim MY_DOCDEVELOPER_KEY As String = "123xyzabc"
               RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DOCDEVELOPER_KEY)
               codecs = New RasterCodecs()
               'Create a LEADTOOLS OCR Advantage OCR Engine and start it
               formsOCREngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, False)
               formsOCREngine.Startup(codecs, Nothing, Nothing, "C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime")
               'Add an OCRObjectManager to the recognition engines
               'ObjectManager collection
               Dim ocrObjectsManager As OcrObjectsManager = New OcrObjectsManager(formsOCREngine)
               ocrObjectsManager.Engine = formsOCREngine
               recognitionEngine.ObjectsManagers.Add(ocrObjectsManager)
            Catch ex As Exception
               MessageBox.Show(ex.Message)
            End Try
            
    [C#]
            try
            {
               //Get master form filenames
               //You may need to update the below path to point to the "Leadtools Images\Forms\MasterForm Sets\OCR" directory.
               string [] masterFileNames = Directory.GetFiles(@"C:\Users\Public\Documents\LEADTOOLS Images\Forms\MasterForm Sets\OCR",
                                                                  "*.tif",
                                                                  SearchOption.AllDirectories);
               foreach (string masterFileName in masterFileNames)
               {
                  string formName = Path.GetFileNameWithoutExtension(masterFileName);
                  //Load the master form image
                  RasterImage image = codecs.Load(masterFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, -1);
                  //Create a new master form
                  FormRecognitionAttributes masterFormAttributes = recognitionEngine.CreateMasterForm(formName, Guid.Empty, null);
                  for (int i = 0; i < image.PageCount; i++)
                  {
                     image.Page = i + 1;
                     //Add the master form page to the recognition engine
                     recognitionEngine.AddMasterFormPage(masterFormAttributes, image, null);
                  }
                  //Close the master form and save it's attributes
                  recognitionEngine.CloseMasterForm(masterFormAttributes);
                  File.WriteAllBytes(formName + ".bin", masterFormAttributes.GetData());
               }
               MessageBox.Show("Master Form Processing Complete", "Complete");
            }
            catch(Exception ex)
            {
               MessageBox.Show(ex.Message);
            }
            
        [Visual Basic]
             
            Try
               'Get master form filenames
               'You may need to update the below path to point to the "Leadtools Images\Forms\MasterForm Sets\OCR" directory.
               Dim masterFileNames As String() = Directory.GetFiles("C:\Users\Public\Documents\LEADTOOLS Images\Forms\MasterForm Sets\OCR",
                                                                        "*.tif",
                                                                        SearchOption.AllDirectories)
               For Each masterFileName As String In masterFileNames
                  Dim formName As String = Path.GetFileNameWithoutExtension(masterFileName)
                  'Load the master form image 
                  Dim image As RasterImage = codecs.Load(masterFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, -1)
                  'Create a new master form
                  Dim masterFormAttributes As FormRecognitionAttributes = recognitionEngine.CreateMasterForm(formName, Guid.Empty, Nothing)
                  Dim i As Integer = 0
                  Do While i < image.PageCount
                     image.Page = i + 1
                     'Add the master form page to the recognition engine
                     recognitionEngine.AddMasterFormPage(masterFormAttributes, image, Nothing)
                     i += 1
                  Loop
                  'Close the master form and save it's attributes
                  recognitionEngine.CloseMasterForm(masterFormAttributes)
                  File.WriteAllBytes(formName & ".bin", masterFormAttributes.GetData())
               Next masterFileName
               MessageBox.Show("Master Form Processing Complete", "Complete")
            Catch ex As Exception 
               MessageBox.Show(ex.Message)
            End Try
            
    [C#]
            try
            {
               //For this tutorial, we will use the sample W9 sample filled form.
               //You may need to update the below path to point to "\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif".
               string formToRecognize = @"C:\Users\Public\Documents\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif";
               RasterImage image = codecs.Load(formToRecognize, 0, CodecsLoadByteOrder.BgrOrGray, 1, -1);
               //Load the image to recognize
               FormRecognitionAttributes filledFormAttributes = recognitionEngine.CreateForm(null);
               for (int i = 0; i < image.PageCount; i++)
               {
                  image.Page = i + 1;
                  //Add each page of the filled form to the recognition engine
                  recognitionEngine.AddFormPage(filledFormAttributes, image, null);
               }
               recognitionEngine.CloseForm(filledFormAttributes);
               string resultMessage = "The form could not be recognized";
               //Compare the attributes of each master form to the attributes of the filled form
               string[] masterFileNames = Directory.GetFiles(Application.StartupPath, "*.bin");
               foreach (string masterFileName in masterFileNames)
               {
                  FormRecognitionAttributes masterFormAttributes = new FormRecognitionAttributes();
                  masterFormAttributes.SetData(File.ReadAllBytes(masterFileName));
                  FormRecognitionResult recognitionResult = recognitionEngine.CompareForm(masterFormAttributes, filledFormAttributes, null);
                  //In this example, we consider a confidence equal to or greater
                  //than 90 to be a match
                  if(recognitionResult.Confidence >= 80)
                  {
                     resultMessage = String.Format("This form has been recognized as a {0}", Path.GetFileNameWithoutExtension(masterFileName));
                     break;
                  }
               }
               MessageBox.Show(resultMessage, "Recognition Results");
            }
            catch (Exception ex)
            {
               MessageBox.Show(ex.Message);
            }
            
        [Visual Basic]
            Try
               'For this tutorial, we will use the sample W9 sample filled form.
               'You may need to update the below path to point to "\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif".
               Dim formToRecognize As String = "C:\Users\Public\Documents\LEADTOOLS Images\Forms\Images\W9_OCR_Filled.tif"
               Dim image As RasterImage = codecs.Load(formToRecognize, 0, CodecsLoadByteOrder.BgrOrGray, 1, -1)
               'Load the image to recognize
               Dim filledFormAttributes As FormRecognitionAttributes = recognitionEngine.CreateForm(Nothing)
               Dim i As Integer = 0
               Do While i < image.PageCount image.Page = i + 1
                  'Add each page of the filled form to the recognition engine
                  recognitionEngine.AddFormPage(filledFormAttributes, image, Nothing)
                  i += 1
               Loop
               recognitionEngine.CloseForm(filledFormAttributes)
               Dim resultMessage As String = "The form could not be recognized"
               'Compare the attributes of each master form to the attributes of the filled form
               Dim masterFileNames As String() = Directory.GetFiles(Application.StartupPath, "*.bin")
               For Each masterFileName As String In masterFileNames
                  Dim masterFormAttributes As FormRecognitionAttributes = New FormRecognitionAttributes()
                  masterFormAttributes.SetData(File.ReadAllBytes(masterFileName))
                  Dim recognitionResult As FormRecognitionResult = recognitionEngine.CompareForm(masterFormAttributes, filledFormAttributes, Nothing)
                  'In this example, we consider a confidence equal to or greater than 90 to be a match
                  If recognitionResult.Confidence >= 80 Then
                     resultMessage = String.Format("This form has been recognized as a {0}", Path.GetFileNameWithoutExtension(masterFileName))
                     Exit For 
                  End If
               Next masterFileName 
               MessageBox.Show(resultMessage, "Recognition Results")
            Catch ex As Exception
                  MessageBox.Show(ex.Message)
            End Try 
            
    [C#]
             if (formsOCREngine != null && formsOCREngine.IsStarted)
                formsOCREngine.Shutdown();
             
            
        [Visual Basic]
            If Not formsOCREngine Is Nothing AndAlso formsOCREngine.IsStarted
               Then formsOCREngine.Shutdown()
            End If 
            
    NOTE: If you encounter an "Invalid File Format" or "Feature Not Supported" exception, please refer to the topic Invalid File Format/Feature Not Supported.