Aspose.OMR是一种光学标记识别API,用于识别各种类型的答题纸,包括测试,评估,调查,测验,MCQ论文,反馈表格-包括气泡作为输入的任何类型的文档。API支持创建和读取OMR表单,并以流行的图像格式处理照片和扫描,并提供各种格式的输出。

光学标记识别,缩写为OMR,通常用于评估问卷,调查和其他信息收集标准。因此,光学标记识别系统在科学研究或商业研究中起着重要作用。

本文让我们学习如何在.NET应用程序中使用C#语言创建和检查OMR问答纸。我们将简要探讨以下方法:(点击下载Aspose.OMR)

  • 使用C#创建OMR问题表模板,图像和PDF文件
  • 使用C#对多选气泡答题纸图像执行OMR

使用C#创建OMR问题表模板,图像和PDF文件

在这里,我们将样本问题存储在TXT文件中,稍后OMR引擎将使用它们来创建OMR问题纸模板,图像和PDF文件。此外,以下是我们将用作OMR引擎输入的文本标记:

现在,我们将使用C#代码按照以下步骤创建OMR多选题表:

  1. 初始化OMR引擎
  2. 使用文本标记调用GenerateTemplate方法
  3. 保存OMR输出问题表

以下代码段基于这些步骤,这些步骤显示了如何使用C#创建OMR问题表模板,图像和PDF文件:

// initialize OMR engine
OmrEngine engine = new OmrEngine();// call template generation providing path to the txt file with markup
GenerationResult res = engine.GenerateTemplate(Path.Combine(testFolderPath, "Grid.txt"));// check in case of errors
if (res.ErrorCode != 0)
{Console.WriteLine("ERROR CODE: " + res.ErrorCode);
}// you can use either of the following approaches
// save generation result: PDF and .omr template
res.SaveAsPdf(testFolderPath , "Grid");
// save generation result: image and .omr template
res.Save(testFolderPath, "Grid");

因此,我们已经创建了OMR试卷,如下截图所示。您可以通过打印生成的PDF文件或图像按您的要求分发文件。

使用C#对多项选择题气泡答题纸图像执行OMR

最后,您将在生成的气泡答题纸上收集响应,然后捕获图像,或扫描它们以使用C#执行OMR。在此示例中,让我们考虑以下示例图像。用于.NET API的Aspose.OMR将创建一个逗号分隔(CSV)文件作为执行OMR的输出。

让我们按照以下步骤使用C#执行OMR:

  1. 指定模板文件路径
  2. 指定扫描的图像文件路径
  3. 初始化TemplateProcessor
  4. 使用RecognizeImage方法识别图像
  5. 将CSV输出写入TXT文件

下面的代码段显示了如何在C#中的多选气泡答题纸图像上执行OMR:

string TemplateName = @"Sheet.omr";
string[] UserImages = new string[] { "Sheet1.jpg" };// input and output preparation
string testFolderPath = dataDir;
string templatePath = Path.Combine(testFolderPath, TemplateName);// actual OMR API calls
OmrEngine engine = new OmrEngine();
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);
Console.WriteLine("Template loaded.");for (int i = 0; i < UserImages.Length; i++) { string imagePath = Path.Combine(testFolderPath, UserImages[i]); string csvResult = templateProcessor.RecognizeImage(imagePath).GetCsv(); File.WriteAllText(Path.Combine(outputPath, Path.GetFileNameWithoutExtension(UserImages[i]) + ".csv"), csvResult); Console.WriteLine("Result exported. Path: " + Path.Combine(testFolderPath, Path.GetFileNameWithoutExtension(UserImages[i]) + ".csv")); }

以下屏幕截图显示了使用Aspose.OMR for .NET API生成输出CSV文件的效率和准确性。现在可以根据系统设计进一步处理此CSV信息。


如果您有任何疑问或需求,请随时加入Aspose技术交流群(642018183),我们很高兴为您提供查询和咨询。

示例:教你在.NET应用程序中创建OMR工作表扫描仪软件相关推荐

  1. C#:在EXCEL文件中创建新工作表

    ExcelFile.CreateEmptySheet("new");

  2. 手把手教你开发微信小程序中的插件

    继上次 手把手教你实现微信小程序中的自定义组件 已经有一段时间了(不了解的小伙伴建议去看看,因为插件很多内容跟组件相似),今年3月13日,小程序新增了 小程序**「插件」 功能,以及开发者工具新增 「 ...

  3. 如何使用Angular Router在Angular 9应用程序中创建导航

    This article will demonstrate the proper way to create page navigation leveraging routing features p ...

  4. 如何在程序中创建快捷方式

    通过手工操作建立这些菜单项或快捷方式并不复杂,在一般Windows使用手册中都有介绍,相信大家都很熟悉,在此不再赘述.笔者在有关资料的基础上,通过实践摸索,找到了在应用程序中完成上述工作的方法.这正是 ...

  5. 在Win32程序中创建OpenGL渲染环境

    在Win32程序中创建OpenGL渲染环境 创建opengl渲染环境步骤: 选定像素格式 //WinMain()HDC dc = GetDC(hwnd);PIXELFORMATDESCRIPTOR p ...

  6. Java实现pdf转tex_使用Free Spire.PDF在Java程序中创建和转换PDF文件

    在这篇文章中,我将举例说明如何创建一个包含标题,段落,图像,编号列表和表格的简单的PDF文件,以及如何使用Free Spire.PDF将PDF转换为其他文件格式. 概述 Free Spire.PDF ...

  7. 在Java程序中创建和转换PDF文件

    点击上方关注 "终端研发部" 设为"星标",和你一起掌握更多数据库知识 作者: Codingqi123 来源: jianshu.com/p/db15232987 ...

  8. ABAP中创建动态内表的三种方法(转载)

    BAP中创建动态内表的三种方法 第一种: 如果我们需要的动态内表字段或者动态工作区和数据字典中的类型一致,可以直接使用CREATE DATA生成,当然也可以是自定义类型. 比如要产生和数据表MARA结 ...

  9. sqlyog怎么查找表_VBA代码解决方案第58讲:在VBA中查找指定工作表的实用方法

    大家好,我们今日继续讲解VBA代码解决方案的第58讲内容:在VBA中查找指定工作表的方法.在上一个例子中,我们通过一个自定义函数解决了删除工作表的方法.其实实现目的的方法有很多种,不必要必须有某种办法 ...

最新文章

  1. Citrix VDI实战攻略之五:vDisk配置
  2. 好奇怪呀后面加什么标点_加标点
  3. strut2以及路径的一些问题
  4. Windows Workflow RC HOL学习笔记(六):创建一个基本的活动
  5. 力扣(LeetCode)31
  6. weekly paper read
  7. python基础教程: 自定义函数
  8. windows平台下caffe可视化配置
  9. VMware:为中国中小企业建立“外部云计算”
  10. apache isis_使用Apache Isis快速进行SEMAT应用程序开发
  11. 盛辉智能机器人安全吗_人工智能真的安全吗?快看这些已经发出的警告
  12. 翰文付费打印后还有水印吗_免费开通小程序商城?!有支付功能吗?
  13. 从今天起,TensorFlow 1.9开始支持树莓派了
  14. 随手记android面试题,synchorinzed的一个面试题
  15. windows中的凭据管理
  16. 超硬核!小白读了这篇文章,就能在算法圈混了
  17. Linux交作业显示Eqw,SGE作业基本用法
  18. mysql 规则引擎_为什么使用规则引擎?
  19. 【数据结构】节点和结点,到底怎么区分?
  20. git cherry-pick branch 与 git rebase branch 的区别

热门文章

  1. cs python课程 加州大学_【北美名校CS课程整理系列】6. 强化学习与决策控制
  2. Android开发之评论回复功能
  3. 错觉图片生成实验 - 平行的线
  4. vue 按钮点击打开新页面_vue路由打开新窗口
  5. MATLAB新年烟花祝MATLABer新年快乐
  6. 计算机专用电噪声,笔记本电脑出现电啸声(coil whine)电流噪声的解决方法
  7. 晨星谈基金· 什么是指数基金
  8. 服务器7379如何用u盘装系统,小编教你怎么用U盘安装win7系统
  9. ORA-00600: internal error code, arguments: [KGL-heap-size-exceeded]
  10. sortable使用小知识(vue)-- 使用sortable拖拽插件在初始化循环标签的状态下,如何获取拖拽的数据