Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
In this article, you will learn how to build a bare minimum application for creating and recognizing a simple questionnaire with Aspose.OMR for .NET.
While our OMR application requires minimal coding, the underlying process is a bit more complex than the typical Hello World. Let’s look at the necessary steps to be taken.
Aspose.OMR for .NET not only performs recognition, but also allows you to design OMR forms of any layout and complexity.
The structure and layout of the questionnaire (template source) is defined in a plain-text file that uses a special notation. You can create it with any text editor, including Notepad.
?text=Hello, World!
font_style=bold
font_size=24
align=center
#How are you doing today?
() Pretty good, thanks! () I won't respond until I see my lawyer.
In this article, we won’t delve into the full syntax of the template. Let’s just take a look at its key building blocks:
?text=
keyword is rendered as a simple paragraph. You can optionally format it by adding layout attributes (font, style, and the like) on the lines immediately following the text. Each attribute definition must be preceded by a tab character.#
). The hash itself is not rendered.Save the template source somewhere on you disk under the name template.txt. You will need it on the next step.
Once you have finished with the questionnaire structure and layout, let’s build a simple utility that generates a printable form from it.
Aspose.OMR.Api.OmrEngine omrEngine = new Aspose.OMR.Api.OmrEngine();
Aspose.OMR.Generation.GenerationResult generationResult = omrEngine.Generate("template.txt");
generationResult.Save("", "Hello.OMR");
Full listing:
namespace HelloOMR
{
internal class Program
{
static void Main(string[] args)
{
Aspose.OMR.Api.OmrEngine omrEngine = new Aspose.OMR.Api.OmrEngine();
Aspose.OMR.Generation.GenerationResult generationResult = omrEngine.Generate("template.txt");
generationResult.Save("", "Hello.OMR");
}
}
}
Now run the program. If the template is correct, you should get 2 files in bin\Debug directory of the project:
Let’s take a break from the computer and get back to the good old pen and paper.
Now we are ready for what OMR stands for – optical mark recognition.
Aspose.OMR.Api.OmrEngine omrEngine = new Aspose.OMR.Api.OmrEngine();
Aspose.OMR.Api.TemplateProcessor templateProcessor = omrEngine.GetTemplateProcessor("Hello.OMR.omr");
Aspose.OMR.Model.RecognitionResult recognitionResult = templateProcessor.Recognize("IMG_20220401.jpg");
string result = recognitionResult.GetCsv();
Console.WriteLine(result);
Full listing:
using System;
namespace HelloOMR
{
internal class Program
{
static void Main(string[] args)
{
Aspose.OMR.Api.OmrEngine omrEngine = new Aspose.OMR.Api.OmrEngine();
Aspose.OMR.Api.TemplateProcessor templateProcessor = omrEngine.GetTemplateProcessor("Hello.OMR.omr");
Aspose.OMR.Model.RecognitionResult recognitionResult = templateProcessor.Recognize("IMG_20220401.jpg");
string result = recognitionResult.GetCsv();
Console.WriteLine(result);
Console.ReadLine();
}
}
}
Now run the program. You should see results of the recognition in the console output:
Element Name,Value,
Question1,"A"
Congratulations! You have taken the first steps in optical mark recognition technology. Read the Developer reference and API reference for details on developing advanced OMR forms and applications with Aspose.OMR for .NET.
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.