Aspose.OMR 23.9.0

.NET 5.0 .NET Standard 2.0 .NET Framework 4.0
dotnet add package Aspose.OMR --version 23.9.0
NuGet\Install-Package Aspose.OMR -Version 23.9.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Aspose.OMR" Version="23.9.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Aspose.OMR --version 23.9.0
#r "nuget: Aspose.OMR, 23.9.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Aspose.OMR as a Cake Addin
#addin nuget:?package=Aspose.OMR&version=23.9.0

// Install Aspose.OMR as a Cake Tool
#tool nuget:?package=Aspose.OMR&version=23.9.0

Optical mark recognition (OMR) API for .NET

Version 23.9 Downloads

Overview | Documentation | API Reference | Online apps | Showcases | Blog | Free support | Temporary license

This package can be used to develop applications for on-premise operating systems and cloud platforms. You can build both 32-bit and 64-bit software, including ASP.NET, WCF, and WinForms.

Please note: our library implies the use of .NET programming languages, compatible with CLI infrastructure. If you require a corresponding native library for C++, you can download it from here.

API overview

Aspose.OMR for .NET can generate and recognize hand-filled answer sheets, surveys, applications, and similar machine-readable forms. With it, you can quickly develop on-premise and web-based .NET applications for optical mark recognition (OMR) that work without specialized hardware. Respondents can fill out your forms with a pen or pencil and use any type of marks - we guarantee reliable results.

  • Complete OMR workflow - from designing a form to recognizing filled hardcopies.
  • Use your existing office copier or a smartphone camera instead of an expensive OMR scanner.
  • Add and recognize QR codes and barcodes.
  • Recognition of multi-page forms.
  • Supports right-to-left (RTL) languages and Eastern Arabic numerals.
  • No external editors and design tools are required.
  • Supports all popular paper sizes as well as a number of non-standard ones.
  • Full compatibility with other Aspose products - build solutions of any complexity using familiar concepts with minimal code.

Markup languages

Aspose.OMR for .NET offers several ways to design OMR forms of any layout and complexity. They all work equally well and produce the same results - just choose the approach that you are most comfortable with.

Supported file formats

Aspose.OMR for .NET can generate machine-readable forms in all popular formats. The format is intellectually selected based on the provided extension:

  • PDF
  • JPEG
  • PNG
  • TIFF
  • GIF
  • BMP

Aspose.OMR for .NET can read just about any image that you get from a scanner or camera:

  • PDF
  • JPEG
  • PNG
  • TIFF
  • GIF
  • BMP

Recognition results are returned in the most popular document and data exchange formats:

  • JSON
  • XML
  • Comma-separated values (CSV)

Get started

You can get familiar with Aspose.OMR for .NET by creating 2 minimal console applications for creating and recognizing machine-readable forms.

Generating OMR form

  1. Create a new C# project in Visual Studio. You can use a very basic project template, such as Console App.

  2. Install this NuGet package to the project.

  3. Create a simple questionnaire in a plain-text file that uses a special notation. Save the file to bin\Debug directory of the project under the name template.txt.

     ?text=Hello, World!
     #How are you doing today?
     	() Pretty good, thanks! () I won't respond until I see my lawyer.
  4. Create an instance of Aspose.OMR.Api.OmrEngine class:

    Aspose.OMR.Api.OmrEngine omrEngine = new Aspose.OMR.Api.OmrEngine();
  5. Generate a form from the template source file:

    Aspose.OMR.Generation.GenerationResult generationResult = omrEngine.GenerateTemplate("template.txt");
  6. Save the result:

    generationResult.Save("", "Hello.OMR");

Full code:

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.GenerateTemplate("template.txt");
			generationResult.Save("", "Hello.OMR");

Now run the program. You should get 2 files in bin\Debug directory of the project:

  • Hello.OMR.png
    A printable form in PNG format. Since we have not provided a license, there will be a watermark on the page.
  • Hello.OMR.omr
    A recognition pattern used by Aspose.OMR recognition engine. This file is required for recognizing filled forms, make sure you do not accidentally delete it!

Reading filled form

  1. Create a new C# project in Visual Studio. You can use a very basic project template, such as Console App.
  2. Install this NuGet package to the project.
  3. Print the generated form (Hello.OMR.png).
  4. Mark an answer bubble.
  5. Take a photo of the filled form (the entire sheet with all crop marks) with your smartphone and upload the photo to bin\Debug directory of the project.
  6. Copy the previously generated recognition pattern (Hello.OMR.omr) into bin\Debug directory of the project.
  7. Create an instance of Aspose.OMR.Api.OmrEngine class:
    Aspose.OMR.Api.OmrEngine omrEngine = new Aspose.OMR.Api.OmrEngine();
  8. Load the recognition pattern from Hello.OMR.omr file:
    Aspose.OMR.Api.TemplateProcessor templateProcessor = omrEngine.GetTemplateProcessor("Hello.OMR.omr");
  9. Recognize the photo of the filled form:
    Aspose.OMR.Model.RecognitionResult recognitionResult = templateProcessor.RecognizeImage("IMG_20220401.jpg");
  10. Convert the recognition result to comma-separated values (CSV) format and output it to the console:
    string result = recognitionResult.GetCsv();

Full code:

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.RecognizeImage("IMG_20220401.jpg");
			string result = recognitionResult.GetCsv();

Now run the program. You should see results of the recognition in the console output:

Element Name,Value,
Question1,"{Answer bubble letter}"

Learn more

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net40 is compatible.  net403 was computed.  net45 was computed.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Aspose.OMR:

Package Downloads

Aspose.Total for .NET is the most complete package of all .NET file format APIs offered by Aspose. It empowers developers to create, edit, render, print and convert between a wide range of popular document formats within any .NET, C#, ASP.NET and VB.NET applications.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
23.9.0 603 9/14/2023
23.8.0 3,984 8/31/2023
23.7.0 4,079 7/7/2023
23.6.1 3,859 6/30/2023
23.6.0 331 6/19/2023
23.5.0 2,204 5/23/2023
23.4.0 2,872 4/21/2023
23.3.1 6,478 3/28/2023
23.3.0 907 3/2/2023
23.2.0 5,043 2/22/2023
23.1.0 8,083 1/25/2023
22.12.1 4,366 12/23/2022
22.12.0 514 12/23/2022
22.11.1 5,920 11/23/2022
22.11.0 571 11/12/2022
22.10.0 554 11/1/2022
22.9.0 11,574 9/21/2022
22.8.0 14,883 8/19/2022
22.7.0 15,971 7/30/2022
22.6.0 9,399 6/18/2022
22.5.0 8,313 5/22/2022
22.4.0 9,177 4/19/2022
22.3.0 13,712 3/28/2022
22.2.0 6,609 2/28/2022
22.1.1 3,043 1/29/2022
22.1.0 481 1/29/2022
21.12.0 4,170 12/25/2021
21.11.0 5,975 11/29/2021
21.10.0 4,227 10/18/2021
21.9.0 363 10/6/2021
21.8.0 14,307 8/24/2021
21.7.0 5,132 7/24/2021
21.6.0 5,412 6/30/2021
21.5.0 4,007 6/1/2021
21.4.0 10,967 5/1/2021
21.3.0 5,286 4/1/2021
21.2.1 6,926 2/27/2021
21.2.0 2,816 2/25/2021
20.6.0 11,558 6/30/2020
20.4.0 10,516 4/30/2020
20.3.0 2,026 3/26/2020
19.9.0 6,584 9/30/2019
19.8.0 580 8/31/2019
19.7.0 677 7/31/2019
19.4.0 801 4/30/2019