OmrEngine Class
Summary
Provides a high level OMR forms functionality to create forms objects and process forms fields.
Syntax
public:
ref class OmrEngine
Example
OMR Example Workflow
The following example is a snippet of a larger example that demonstrates a basic workflow using LEADTOOLS OMR:
1. Create and initialize a new OmrEngine
2. Load the RasterImage
3. Create an ITemplateForm object from the rasterimage
4. Create a few zones and add them to the template
5. Save the template to a file on disk
6. Apply OMR to the answer key
7. Apply OMR to the individual forms
8. Analyze the documents and print the results
9. Shut down the OcrEngine associated with this OmrEngine
You can also download the complete example in Visual Studio 2017.
using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;
using Leadtools.Forms.Processing.Omr;
using Leadtools.Forms.Processing.Omr.Fields;
using Leadtools.Ocr;
// Main Workflow Example Source
static void Main(string[] args)
{
if (SetLicense() == false)
{
Console.WriteLine("Either the license is not set, or OMR functionality is not supported.");
Console.WriteLine("Application will exit.");
return;
}
// create and initialize a new OmrEngine
OmrEngine engine = OmrEngineExamples.CreateOmrEngine();
// load a rasterimage that the template will use as a source
string inputImagePath = Path.Combine(LEAD_VARS.ImagesDir, @"Forms\OMR Processing\Exam\exam.tif");
RasterImage templateImage = engine.EnginesObject.RasterCodecs.Load(inputImagePath);
// create an ITemplateForm object from the rasterimage
ITemplateForm template = OmrEngineExamples.CreateNewTemplate(templateImage, engine);
// create a few zones and add them to the template
OmrFieldExamples.AddZonesToTemplate(template);
// save our constructed template to a file on disk
ITemplateFormExamples.SaveTemplateToDisk(template);
// apply OMR to the answer key
IRecognitionForm answers = IRecognitionFormExamples.RecognizeForm(template, engine);
// apply OMR to the individual forms
List<IRecognitionForm> recognizedForms = IRecognitionFormExamples.RecognizeMultipleForms(template, engine);
// analyze the documents and print the results
OmrEngineExamples.PerformAnalysis(recognizedForms, answers);
// shut down the OcrEngine associated with this OmrEngine
engine.EnginesObject.OcrEngine.Shutdown();
}
private static bool SetLicense()
{
string licenseFile = @"C:\LEADTOOLS 20\Support\Common\License\LEADTOOLS.LIC";
string key = System.IO.File.ReadAllText(@"C:\LEADTOOLS 20\Support\Common\License\LEADTOOLS.LIC.key");
try
{
RasterSupport.SetLicense(licenseFile, key);
}
catch (Exception)
{
return false;
}
return !RasterSupport.IsLocked(RasterSupportType.Omr);
}
// OMR Engine Example Source
public static OmrEngine CreateOmrEngine()
{
OmrEngine omrEngine = new OmrEngine();
// the OmrEngine requires an OcrEngine to be associated with it and for that engine to be started
IOcrEngine engine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD, false);
engine.Startup(null, null, null, null);
omrEngine.EnginesObject.OcrEngine = engine;
omrEngine.EnginesObject.BarcodeEngine = new BarcodeEngine();
// the OmrEngine also has a property for a RasterCodecs object we can use for convenience
RasterCodecs codecs = new RasterCodecs();
codecs.Options.Load.Resolution = 300;
codecs.Options.Load.XResolution = 300;
codecs.Options.Load.YResolution = 300;
codecs.Options.RasterizeDocument.Load.Resolution = 300;
codecs.Options.RasterizeDocument.Load.XResolution = 300;
codecs.Options.RasterizeDocument.Load.YResolution = 300;
omrEngine.EnginesObject.RasterCodecs = codecs;
return omrEngine;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}