←Select platform

IOcrSettingManager Interface

Summary

Manages the underlying engine-specific settings of this IOcrEngine.

Syntax
C#
VB
Objective-C
C++
Java
public interface IOcrSettingManager 
Public Interface IOcrSettingManager  
@interface LTOcrSettingManager : NSObject 
public class OcrSettingManager 
public interface class IOcrSettingManager  

Remarks

Access the instance of the IOcrSettingManager used by an IOcrEngine through the IOcrEngine.SettingManager property.

IOcrSettingManager allows you to do the following:

  • Get and set the underlying engine-specific settings. IOcrEngine is a wrapper for different OCR engines. These engines contain additional specific features and functionalities that can be queried and updated using the IOcrSettingManager interface.
  • Load and save the engine settings. Once you set up the OCR engine, re-use these settings by saving the engine state into memory or to an XML file on disk. You can later reload these settings and use them in the same or a different instance of IOcrEngine.

Use the different methods of the IOcrSettingManager interface to get and set the engine-specific settings. Each setting has a unique name (a string value). Get all of the settings available to the current OCR engine through the GetSettingNames method. The GetSettingDescriptor method returns a description of the setting (its type, friendly name and value range). You can then use the various get and set methods to query and change the values of specific settings. For example, if the setting type is OcrSettingValueType.Integer, you can use the GetIntegerValue to get the current value of the setting and the SetIntegerValue to change its value. Refer to the example below for a complete demo.

This interface also contains methods to load and save the engine state to a .NET stream or an XML file on disk. The following table lists all the states saved:

Part Members
IOcrSettingManager (accessed through IOcrEngine.SettingManager All the settings as obtained through IOcrSettingManager.GetSettingNames
IOcrLanguageManager (accessed through IOcrEngine.LanguageManager The value of IOcrLanguageManager.GetEnabledLanguages
IOcrSpellCheckManager (accessed through IOcrEngine.SpellCheckManager The values of IOcrSpellCheckManager.SpellCheckEngine and IOcrSpellCheckManager.SpellLanguage.
IOcrDocumentManager (accessed through IOcrEngine.DocumentManager The values of IOcrDocumentManager.EngineFormat, IOcrDocumentManager.RejectionSymbol and IOcrDocumentManager.MissingSymbol.
IOcrZoneManager (accessed through IOcrEngine.ZoneManager The values of IOcrZoneManager.OmrOptions.FrameDetectionMethod, IOcrZoneManager.OmrOptions.Sensitivity and the state characters of IOcrZoneManager.OmrOptions.GetStateRecognitionCharacter.

You must call the IOcrEngine.Startup method before you can use the IOcrEngine.SettingManager property.

Note: The IOcrEngine.LanguageManager and IOcrEngine.SpellCheckManager state is also saved when the engine settings are saved. For more information, refer to IOcrSettingManager.Save.

For a list of supported engine-specific settings and their meanings, refer to OCR engine-specific Settings.

Example

This example will start the LEADTOOLS OCR Module - LEAD Engine. Shows the values of all the settings and change a few of them.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Ocr; 
using Leadtools.Document.Writer; 
 
public void OcrSettingManagerExample() 
{ 
   // Create an instance of the engine 
   using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD, false)) 
   { 
      // Start the engine using default parameters 
      ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir); 
 
      IOcrSettingManager settingManager = ocrEngine.SettingManager; 
 
      // Dump all the settings supported by this engine to a text file on disk 
      DumpAllSettings(settingManager); 
 
      // Image file to OCR 
      string tifFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif"); 
 
      // File formats to save 
      DocumentFormat[] formats = { DocumentFormat.Text, DocumentFormat.Pdf }; 
 
      foreach (DocumentFormat format in formats) 
      { 
         // Generate the output file name 
         string outFileName = Path.ChangeExtension(tifFileName, DocumentWriter.GetFormatFileExtension(format)); 
 
         Console.WriteLine("Format: {0}\nOutput file: {1}", format, outFileName); 
 
         int detectFontStyles = 0; 
         bool recognizeFontAttributes = false; 
 
         if (format == DocumentFormat.Text) 
         { 
            // This is 'text' format, we dont need to recognize fonts attributes such as bold and italic 
            // This will make the recognition process faster 
 
            Console.WriteLine("Turning off font attributes"); 
 
            // Save the old settings 
            detectFontStyles = settingManager.GetEnumValue("Recognition.Fonts.DetectFontStyles"); 
            recognizeFontAttributes = settingManager.GetBooleanValue("Recognition.Fonts.RecognizeFontAttributes"); 
 
            // Turn them off now 
            settingManager.SetEnumValue("Recognition.Fonts.DetectFontStyles", "None"); 
            settingManager.SetBooleanValue("Recognition.Fonts.RecognizeFontAttributes", false); 
         } 
 
         // Show the settings we are using 
         Console.WriteLine("Recognizing using these font attributes settings:"); 
         Console.WriteLine("Recognition.Fonts.DetectFontStyles: {0}", settingManager.GetEnumValueAsString("Recognition.Fonts.DetectFontStyles")); 
         Console.WriteLine("Recognition.Fonts.RecognizeFontAttributes: {0}", settingManager.GetBooleanValue("Recognition.Fonts.RecognizeFontAttributes")); 
 
 
         // Recognize and save the file to the output format 
         using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument()) 
         { 
            // Add a page to the document 
            IOcrPage ocrPage = ocrDocument.Pages.AddPage(tifFileName, null); 
 
            // Recognize the page 
            // Note, Recognize can be called without calling AutoZone or manually adding zones. The engine will 
            // check and automatically auto-zones the page 
            ocrPage.Recognize(null); 
 
            // Save the document we have as PDF 
            ocrDocument.Save(outFileName, format, null); 
         } 
 
         // Re-set the original settings 
         if (format == DocumentFormat.Text) 
         { 
            Console.WriteLine("Resetting original settings"); 
            settingManager.SetEnumValue("Recognition.Fonts.DetectFontStyles", detectFontStyles); 
            settingManager.SetBooleanValue("Recognition.Fonts.RecognizeFontAttributes", recognizeFontAttributes); 
         } 
      } 
 
      // Shutdown the engine 
      // Note: calling Dispose will also automatically shutdown the engine if it has been started 
      ocrEngine.Shutdown(); 
   } 
} 
 
private static void DumpAllSettings(IOcrSettingManager settingManager) 
{ 
   // Write all the settings into a disk file 
   string settingsFileName = Path.Combine(LEAD_VARS.ImagesDir, "Settings.txt"); 
   using (StreamWriter writer = File.CreateText(settingsFileName)) 
   { 
      writer.WriteLine("Settings"); 
      string[] settingNames = settingManager.GetSettingNames(); 
 
      foreach (string settingName in settingNames) 
      { 
         IOcrSettingDescriptor sd = settingManager.GetSettingDescriptor(settingName); 
 
         writer.WriteLine("  Name:           {0}", sd.Name); 
         writer.WriteLine("  ValueType:      {0}", sd.ValueType); 
         writer.WriteLine("  FriendlyName:   {0}", sd.FriendlyName); 
 
         switch (sd.ValueType) 
         { 
            case OcrSettingValueType.BeginCategory: 
               writer.WriteLine("-------------------------------------"); 
               break; 
 
            case OcrSettingValueType.Integer: 
               writer.WriteLine("    Units: {0}", sd.Units); 
               writer.WriteLine("    IntegerMinimumValue: {0}", sd.IntegerMinimumValue); 
               writer.WriteLine("    IntegerMaximumValue: {0}", sd.IntegerMaximumValue); 
               break; 
 
            case OcrSettingValueType.Enum: 
               writer.WriteLine("    EnumIsFlags: {0}", sd.EnumIsFlags); 
               writer.WriteLine("    EnumMemberFriendlyNames"); 
               { 
                  int[] values = sd.GetEnumMemberValues(); 
                  string[] names = sd.GetEnumMemberFriendlyNames(); 
                  for (int i = 0; i < values.Length; i++) 
                  { 
                     writer.WriteLine("      {0} : {1}", names[i], values[i]); 
                  } 
               } 
               break; 
 
            case OcrSettingValueType.Double: 
               writer.WriteLine("    Units: {0}", sd.Units); 
               writer.WriteLine("    DoubleMinimumValue: {0}", sd.DoubleMinimumValue); 
               writer.WriteLine("    DoubleMaximumValue: {0}", sd.DoubleMaximumValue); 
               break; 
 
            case OcrSettingValueType.Boolean: 
               break; 
 
            case OcrSettingValueType.Character: 
               break; 
 
            case OcrSettingValueType.String: 
               writer.WriteLine("    StringMaximumLength:   {0}", sd.StringMaximumLength); 
               writer.WriteLine("    StringNullAllowed:     {0}", sd.StringNullAllowed); 
               break; 
 
            case OcrSettingValueType.Rectangle: 
               break; 
 
            case OcrSettingValueType.EndCategory: 
               break; 
 
            default: 
               break; 
         } 
      } 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
   public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS 20\Bin\Common\OcrLEADRuntime"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.Ocr 
Imports Leadtools.Document.Writer 
 
Public Sub OcrSettingManagerExample() 
   ' Create an instance of the engine 
   Using ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD, False) 
      ' Start the engine using default parameters 
      ocrEngine.Startup(Nothing, Nothing, Nothing, LEAD_VARS.OcrLEADRuntimeDir) 
 
      Dim settingManager As IOcrSettingManager = ocrEngine.SettingManager 
 
      ' Dump all the settings supported by this engine to a text file on disk 
      DumpAllSettings(settingManager) 
 
      ' Image file to OCR 
      Dim tifFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif") 
 
      ' File formats to save 
      Dim formats As DocumentFormat() = {DocumentFormat.Text, DocumentFormat.Pdf} 
 
      For Each format As DocumentFormat In formats 
         ' Generate the output file name 
         Dim outFileName As String = Path.ChangeExtension(tifFileName, DocumentWriter.GetFormatFileExtension(format)) 
 
         Console.WriteLine("Format: {0}" & vbLf & "Output file: {1}", format, outFileName) 
 
         Dim detectFontStyles As Integer = 0 
         Dim recognizeFontAttributes As Boolean = False 
 
         If format = DocumentFormat.Text Then 
            ' This is 'text' format, we dont need to recognize fonts attributes such as bold and italic 
            ' This will make the recognition process faster 
 
            Console.WriteLine("Turning off font attributes") 
 
            ' Save the old settings 
            detectFontStyles = settingManager.GetEnumValue("Recognition.Fonts.DetectFontStyles") 
            recognizeFontAttributes = settingManager.GetBooleanValue("Recognition.Fonts.RecognizeFontAttributes") 
 
            ' Turn them off now 
            settingManager.SetEnumValue("Recognition.Fonts.DetectFontStyles", "None") 
            settingManager.SetBooleanValue("Recognition.Fonts.RecognizeFontAttributes", False) 
         End If 
 
         ' Show the settings we are using 
         Console.WriteLine("Recognizing using these font attributes settings:") 
         Console.WriteLine("Recognition.Fonts.DetectFontStyles: {0}", 
                           settingManager.GetEnumValueAsString("Recognition.Fonts.DetectFontStyles")) 
         Console.WriteLine("Recognition.Fonts.RecognizeFontAttributes: {0}", 
                           settingManager.GetBooleanValue("Recognition.Fonts.RecognizeFontAttributes")) 
 
 
         ' Recognize and save the file to the output format 
         Using ocrDocument As IOcrDocument = ocrEngine.DocumentManager.CreateDocument() 
            ' Add a page to the document 
            Dim ocrPage As IOcrPage = ocrDocument.Pages.AddPage(tifFileName, Nothing) 
 
            ' Recognize the page 
            ' Note, Recognize can be called without calling AutoZone or manually adding zones. The engine will 
            ' check and automatically auto-zones the page 
            ocrPage.Recognize(Nothing) 
 
            ' Save the document we have as PDF 
            ocrDocument.Save(outFileName, format, Nothing) 
         End Using 
 
         ' Re-set the original settings 
         If format = DocumentFormat.Text Then 
            Console.WriteLine("Resetting original settings") 
            settingManager.SetEnumValue("Recognition.Fonts.DetectFontStyles", detectFontStyles) 
            settingManager.SetBooleanValue("Recognition.Fonts.RecognizeFontAttributes", recognizeFontAttributes) 
         End If 
      Next 
 
      ' Shutdown the engine 
      ' Note: calling Dispose will also automatically shutdown the engine if it has been started 
      ocrEngine.Shutdown() 
   End Using 
End Sub 
 
Private Shared Sub DumpAllSettings(settingManager As IOcrSettingManager) 
   ' Write all the settings into a disk file 
   Dim settingsFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Settings.txt") 
   Using writer As StreamWriter = File.CreateText(settingsFileName) 
      writer.WriteLine("Settings") 
      Dim settingNames As String() = settingManager.GetSettingNames() 
 
      For Each settingName As String In settingNames 
         Dim sd As IOcrSettingDescriptor = settingManager.GetSettingDescriptor(settingName) 
 
         writer.WriteLine("  Name:           {0}", sd.Name) 
         writer.WriteLine("  ValueType:      {0}", sd.ValueType) 
         writer.WriteLine("  FriendlyName:   {0}", sd.FriendlyName) 
 
         Select Case sd.ValueType 
            Case OcrSettingValueType.BeginCategory 
               writer.WriteLine("-------------------------------------") 
               Exit Select 
 
            Case OcrSettingValueType.[Integer] 
               writer.WriteLine("    Units: {0}", sd.Units) 
               writer.WriteLine("    IntegerMinimumValue: {0}", sd.IntegerMinimumValue) 
               writer.WriteLine("    IntegerMaximumValue: {0}", sd.IntegerMaximumValue) 
               Exit Select 
 
            Case OcrSettingValueType.[Enum] 
               writer.WriteLine("    EnumIsFlags: {0}", sd.EnumIsFlags) 
               writer.WriteLine("    EnumMemberFriendlyNames") 
               If True Then 
                  Dim values As Integer() = sd.GetEnumMemberValues() 
                  Dim names As String() = sd.GetEnumMemberFriendlyNames() 
                  For i As Integer = 0 To values.Length - 1 
                     writer.WriteLine("      {0} : {1}", names(i), values(i)) 
                  Next 
               End If 
               Exit Select 
 
            Case OcrSettingValueType.[Double] 
               writer.WriteLine("    Units: {0}", sd.Units) 
               writer.WriteLine("    DoubleMinimumValue: {0}", sd.DoubleMinimumValue) 
               writer.WriteLine("    DoubleMaximumValue: {0}", sd.DoubleMaximumValue) 
               Exit Select 
 
            Case OcrSettingValueType.[Boolean] 
               Exit Select 
 
            Case OcrSettingValueType.Character 
               Exit Select 
 
            Case OcrSettingValueType.[String] 
               writer.WriteLine("    StringMaximumLength:   {0}", sd.StringMaximumLength) 
               writer.WriteLine("    StringNullAllowed:     {0}", sd.StringNullAllowed) 
               Exit Select 
 
            Case OcrSettingValueType.Rectangle 
               Exit Select 
 
            Case OcrSettingValueType.EndCategory 
               Exit Select 
            Case Else 
 
               Exit Select 
         End Select 
      Next 
   End Using 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
   Public Const OcrLEADRuntimeDir As String = "C:\LEADTOOLS 20\Bin\Common\OcrLEADRuntime" 
End Class 

Requirements

Target Platforms

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

Leadtools.Ocr Assembly