Aspose.OMR
24.12.0
dotnet add package Aspose.OMR --version 24.12.0
NuGet\Install-Package Aspose.OMR -Version 24.12.0
<PackageReference Include="Aspose.OMR" Version="24.12.0" />
paket add Aspose.OMR --version 24.12.0
#r "nuget: Aspose.OMR, 24.12.0"
// Install Aspose.OMR as a Cake Addin #addin nuget:?package=Aspose.OMR&version=24.12.0 // Install Aspose.OMR as a Cake Tool #tool nuget:?package=Aspose.OMR&version=24.12.0
Optical mark recognition (OMR) API for .NET
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:
- JPEG
- PNG
- TIFF
- GIF
- BMP
Aspose.OMR for .NET can read just about any image that you get from a scanner or camera:
- 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
Create a new C# project in Visual Studio. You can use a very basic project template, such as Console App.
Install this NuGet package to the project.
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! 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.
Create an instance of Aspose.OMR.Api.OmrEngine class:
Aspose.OMR.Api.OmrEngine omrEngine = new Aspose.OMR.Api.OmrEngine();
Generate a form from the template source file:
Aspose.OMR.Generation.GenerationResult generationResult = omrEngine.GenerateTemplate("template.txt");
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
- Create a new C# project in Visual Studio. You can use a very basic project template, such as Console App.
- Install this NuGet package to the project.
- Print the generated form (Hello.OMR.png).
- Mark an answer bubble.
- 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.
- Copy the previously generated recognition pattern (Hello.OMR.omr) into bin\Debug directory of the project.
- Create an instance of Aspose.OMR.Api.OmrEngine class:
Aspose.OMR.Api.OmrEngine omrEngine = new Aspose.OMR.Api.OmrEngine();
- Load the recognition pattern from Hello.OMR.omr file:
Aspose.OMR.Api.TemplateProcessor templateProcessor = omrEngine.GetTemplateProcessor("Hello.OMR.omr");
- Recognize the photo of the filled form:
Aspose.OMR.Model.RecognitionResult recognitionResult = templateProcessor.RecognizeImage("IMG_20220401.jpg");
- Convert the recognition result to comma-separated values (CSV) format and output it to the console:
string result = recognitionResult.GetCsv(); Console.WriteLine(result);
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();
Console.WriteLine(result);
Console.ReadLine();
}
}
}
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 | Versions 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. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.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. |
-
.NETFramework 4.0
- No dependencies.
-
.NETStandard 2.0
- Microsoft.Extensions.DependencyModel (>= 2.0.4)
- System.Diagnostics.PerformanceCounter (>= 4.5.0)
- System.Drawing.Common (>= 5.0.2)
- System.Security.Cryptography.Pkcs (>= 4.7.0)
- System.Security.Permissions (>= 4.5.0)
- System.Text.Encoding.CodePages (>= 6.0.0)
-
net5.0
- Microsoft.Extensions.DependencyModel (>= 2.0.4)
- System.Diagnostics.PerformanceCounter (>= 4.5.0)
- System.Drawing.Common (>= 5.0.2)
- System.Security.Cryptography.Pkcs (>= 4.7.0)
- System.Security.Permissions (>= 4.5.0)
- System.Text.Encoding.CodePages (>= 6.0.0)
-
net6.0
- Microsoft.Extensions.DependencyModel (>= 2.0.4)
- System.Diagnostics.PerformanceCounter (>= 4.5.0)
- System.Drawing.Common (>= 5.0.2)
- System.Security.Cryptography.Pkcs (>= 4.7.0)
- System.Security.Permissions (>= 4.5.0)
- System.Text.Encoding.CodePages (>= 6.0.0)
-
net7.0
- Microsoft.Extensions.DependencyModel (>= 2.0.4)
- System.Diagnostics.PerformanceCounter (>= 4.5.0)
- System.Drawing.Common (>= 7.0.0)
- System.Security.Cryptography.Pkcs (>= 4.7.0)
- System.Security.Permissions (>= 4.5.0)
- System.Text.Encoding.CodePages (>= 6.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Aspose.OMR:
Package | Downloads |
---|---|
Aspose.Total
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. |
|
Aspose.OMR.Handwriting
This extension to Aspose.OMR for .NET adds support for handwritten text input to machine-readable OMR forms. Free-form text text recognition allows to create more dynamic and adaptive forms that can capture a wide range of responses without the need for an exhaustive list of predefined answers. While the handwritten text recognition might not be as accurate as standard optical mark recognition, it is more intuitive, user-friendly, and versatile in a number of applications: - Creating more compact and space-efficient forms, making efficient use of limited page space. - Rapidly creating surveys and quizzes without the need for extensive categorization of information into predefined choices. - Appealing to a broader audience, by allowing respondents to write their answers rather than selecting close-ended options. - Automatically digitizing free-form responses into machine-readable text without the need for additional OCR libraries. Important: at the moment, the library only supports Latin letters (A-Z) and Western Arabic numerals (0-9). Changelog: - Added a new element that allows users to enter handwritten text in a free-form manner. Check for details in our online documentation (https://docs.aspose.com/omr/net/) or ask your questions at the free support forum (https://forum.aspose.com/c/omr/). |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
24.12.0 | 881 | 12/12/2024 |
24.11.0 | 4,549 | 11/29/2024 |
24.10.0 | 7,239 | 10/31/2024 |
24.9.0 | 6,555 | 9/12/2024 |
24.7.0 | 9,363 | 7/30/2024 |
24.6.0 | 7,402 | 6/18/2024 |
24.4.0 | 12,746 | 4/26/2024 |
24.3.0 | 6,529 | 3/7/2024 |
24.2.1 | 10,212 | 2/22/2024 |
24.2.0 | 1,745 | 2/1/2024 |
24.1.0 | 12,568 | 1/20/2024 |
23.12.0 | 11,232 | 12/20/2023 |
23.11.0 | 12,070 | 11/17/2023 |
23.10.0 | 10,584 | 10/26/2023 |
23.9.0 | 17,049 | 9/14/2023 |
23.8.0 | 17,938 | 8/31/2023 |
23.7.0 | 13,179 | 7/7/2023 |
23.6.1 | 12,629 | 6/30/2023 |
23.6.0 | 699 | 6/19/2023 |
23.5.0 | 7,572 | 5/23/2023 |
23.4.0 | 7,879 | 4/21/2023 |
23.3.1 | 11,273 | 3/28/2023 |
23.3.0 | 1,222 | 3/2/2023 |
23.2.0 | 9,697 | 2/22/2023 |
23.1.0 | 26,862 | 1/25/2023 |
22.12.1 | 9,701 | 12/23/2022 |
22.12.0 | 804 | 12/23/2022 |
22.11.1 | 9,631 | 11/23/2022 |
22.11.0 | 794 | 11/12/2022 |
22.10.0 | 772 | 11/1/2022 |
22.9.0 | 19,819 | 9/21/2022 |
22.8.0 | 23,199 | 8/19/2022 |
22.7.0 | 21,911 | 7/30/2022 |
22.6.0 | 13,329 | 6/18/2022 |
22.5.0 | 12,281 | 5/22/2022 |
22.4.0 | 16,097 | 4/19/2022 |
22.3.0 | 18,673 | 3/28/2022 |
22.2.0 | 10,228 | 2/28/2022 |
22.1.1 | 5,034 | 1/29/2022 |
22.1.0 | 596 | 1/29/2022 |
21.12.0 | 4,657 | 12/25/2021 |
21.11.0 | 9,019 | 11/29/2021 |
21.10.0 | 6,335 | 10/18/2021 |
21.9.0 | 471 | 10/6/2021 |
21.8.0 | 21,172 | 8/24/2021 |
21.7.0 | 8,039 | 7/24/2021 |
21.6.0 | 7,652 | 6/30/2021 |
21.5.0 | 4,086 | 6/1/2021 |
21.4.0 | 14,437 | 5/1/2021 |
21.3.0 | 7,615 | 4/1/2021 |
21.2.1 | 10,721 | 2/27/2021 |
21.2.0 | 2,937 | 2/25/2021 |
20.6.0 | 14,350 | 6/30/2020 |
20.4.0 | 10,857 | 4/30/2020 |
20.3.0 | 2,265 | 3/26/2020 |
19.9.0 | 7,873 | 9/30/2019 |
19.8.0 | 653 | 8/31/2019 |
19.7.0 | 730 | 7/31/2019 |
19.4.0 | 870 | 4/30/2019 |