为什么适用于 C++ 的 Aspose.OMR?

创建和识别任何布局和复杂性的 OMR 表格。有了我们的图书馆,您不再需要手动检查和评分测试、试卷、调查、申请表和其他手工填写的统一文档。我们将为您做一切并返回可自动分析或导入到您选择的数据库、成绩册或 CRM 系统中的结果。单击下面的项目以了解有关我们的功能和优势的更多信息。

Illustration omr

无需硬件

使用喷墨或激光打印机、扫描仪、复印机甚至智能手机摄像头来代替专门的 OMR 硬件。

全面定制

通过添加受访者信息、唯一标识符、徽标、图像等来个性化 OMR 表单。

可靠的结果

精确的光学标记检测算法加上精细识别能力,可确保 100% 准确的结果。

一体

Aspose.OMR for C++ 既可以设计表单设计,又可以识别其填充的副本。

开发者友好

即使是新手开发人员也可以轻松使用我们的 API。创建基本的 OMR 应用程序仅需要 10 行代码。

实时代码示例

打印的答卷是任何笔试、评估或课堂评价的重要组成部分。这个简单的在线应用程序生成一个 4 列的气泡表,并说明了使用 Aspose.OMR for C++ 在您的计算机上实现它所需的代码。

问题数量

 

每个问题的气泡数

复制并粘贴此代码

更多示例 >
// Initialize Aspose.OMR engine
System::SharedPtr<Api::OmrEngine> engine = System::MakeObject<Api::OmrEngine>();
// Generate machine-readable form from the markup
System::SharedPtr<Generation::GenerationResult> result
     = engine->GenerateTemplate(u"template.txt");
// Save printable OMR form to an image file
result.Save("target", "omr-form");

平台独立性

Aspose.OMR for C++ 是一个独立的软件包,不需要专门的硬件或第三方软件。您可以在任何支持 C++ 代码的环境中开发应用程序。

Microsoft Windows
Linux
Docker

支持的文件格式

Aspose.OMR for C++ 几乎可以处理任何 文件 您可以通过扫描仪或相机获取。识别结果以最流行的数据交换格式返回,可以导入到任何流行的数据库或分析系统中。

构建表单

  • TXT
  • JPEG, PNG, BMP

扫描表格

  • Scans: JPEG, PNG, BMP
  • Photos: JPEG, PNG

识别表格

  • CSV
  • JSON

无限可能

光学标记识别技术为生活中需要手动数据收集和分析的不同方面提供了简单的解决方案。它完全自动化了繁琐且容易出错的手动表单识别,每分钟可处理数百张纸,准确率几乎为 100%。结果可以实时分析或存储在数据库中以供后续汇总和分析。

应用范围广泛,包括但不限于:

  • **教育:**答题纸、测试、测验、考试表格。
  • 政府: 选票、纳税表格、边境入境表格、人口普查、公众意见。
  • 医学: 检查、评估、患者信息表、健康保险索赔。
  • **金融:**贷款申请、客户信息更新、信用卡申请。
  • 还有很多…

无需任何设备

复杂的图像预处理和分析算法消除了对专用 OMR 硬件和专用配件的需求。您可以使用普通钢笔、铅笔或记号笔填写表格,并使用普通办公复印机甚至智能手机摄像头(而不是专用扫描仪)扫描它们,而不会影响识别准确性。我们的库使您能够以显着降低的成本开发具有硬件产品可靠性的 OMR 软件解决方案。请随意使用任何可用的设备:

  • 自动进纸扫描仪;
  • 预算办公室复印机;
  • 激光或喷墨打印机;
  • 便携式手持式扫描仪;
  • 紧凑型或单反相机;
  • 手机;
  • 自动对焦网络摄像头。

无需设计工具即可编写 OMR 表单

Aspose.OMR for C++ 提供了高度通用的工具,用于设计具有任何布局和复杂程度的机器可读表单。不需要外部编辑器或设计工具。通过高度适应性的 标记语言 ,用户可以以任何所需的方式组合大量的布局和内容元素。

如果您没有时间熟悉模板标记语法,请不用担心。您可以使用 在线表单设计器 从任何平台或设备以交互方式轻松创建自定义 OMR 表单。您可以添加任意数量的元素,根据您的具体需求调整它们的大小和位置。

Alumni questionnaire Customer satisfaction survey SAT form

可以通过添加文本、受访者姓名、唯一标识符和图像来进一步定制表格。您还可以通过添加徽标、口号等来为 OMR 表格打造品牌。尝试布局、问题格式和答案结构,同时确保标记识别的准确性一致。享受创意设计过程,告别复杂的设计过程,采用简单的形式创建方法。

查看代码示例并根据您的需要进行调整。

特性和功能

Aspose.OMR for C++ 是一种易于使用、多功能且经济高效的 API,用于设计、呈现和识别手填答题纸、调查、应用程序和类似表格。

Feature icon

所有纸张尺寸

支持所有流行的纸张尺寸和许多非标准纸张尺寸。

Feature icon

使用智能手机扫描

使用智能手机相机代替扫描仪。

Feature icon

无需设计工具

无需外部编辑器和设计工具即可快速创建 OMR 表单。

Feature icon

精度调整

微调识别参数,在任何条件下都能获得完美结果。

Feature icon

批量处理

使用单个命令即可识别文件夹中的所有图像。

Feature icon

品牌和定制

通过添加徽标、图像、页脚等来自定义 OMR 表单。

便于使用

您只需要几行代码即可创建答卷、调查或其他 OMR 表格,并识别完成的表格。
您只需要 15 分钟的业余时间和 C++ 基础知识。

安装

Aspose.OMR for C++ 作为轻量级 NuGet 包 或作为 [可下载文件]( https://releases.aspose . com/omr/cpp/) 具有最小的依赖性。该包可以直接从 Microsoft Visual Studio 添加到您的项目中。只需将其 安装 到您的项目中,您就可以使用所有 OMR 功能并以任何支持的格式保存识别结果。

您可以在安装后立即开始使用 Aspose.OMR for C++,但有一些限制。 临时许可证 消除了试用版的所有限制,有效期为 30 天。使用它开始构建功能齐全的 OMR 应用程序,并稍后做出最终决定 购买 Aspose.OMR for C++。

表格生成器

OMR 表单的结构和布局使用特殊符号在纯文本文件中指定。您可以使用任何文本编辑器(包括记事本)创建它。只需 4 行即可生成 150 个问题的机器可读答卷:

How to design an answer sheet

?answer_sheet=answers
  elements_count=150
  answers_count=5
  columns_count=3


完成表单结构和布局后,您只需要 3 行代码即可构建一个简单的实用程序,从中生成可打印的页面:

How to generate a printable form

// Initialize Aspose.OMR engine
System::SharedPtr<Api::OmrEngine> engine = System::MakeObject<Api::OmrEngine>();
// Generate machine-readable form from the markup
System::SharedPtr<Generation::GenerationResult> result = engine->GenerateTemplate(u"template.txt");
// Save printable OMR form to an image file
result.Save("target", "omr-form");

光学标记阅读器

借助 Aspose.OMR for C++,您可以用 5 行代码创建功能齐全的编程光学标记阅读器。您可以使用现有的办公室复印机甚至智能手机摄像头来代替昂贵的 OMR 扫描仪。受访者可以使用钢笔、铅笔或记号笔填写表格,并使用任何类型的标记。

How to recognize a completed form

// Initialize OMR engine
System::SharedPtr<Api::OmrEngine> engine = System::MakeObject<Api::OmrEngine>();
// Load recognition pattern file
System::SharedPtr<Api::TemplateProcessor> processor = engine->GetTemplateProcessor(u"omr-form.omr");
// Recognize completed survey
System::SharedPtr<Model::RecognitionResult> result = processor->RecognizeImage(u"IMG_20220401.jpg");
// Get results in CSV format
System::String resultCsv = result->GetCsv();