Aspose.OMR for C++
C++ 库,用于创建 OMR 表单并识别数据
为 C++ 开发者提供的前沿光学标记识别(OMR)解决方案,可在 C++ 应用中创建 OMR 模板/表单并识别扫描图像和照片。
什么是 Aspose.OMR for C++?
Aspose.OMR for C++ 是一个功能强大且灵活的 C++ OMR API,旨在简化 C++ 应用程序中的光学标记识别任务。它非常适合构建调查系统、考试处理工具或自定义 OMR 应用的开发者,该 SDK 提供无缝集成,并配备深入的文档、示例代码和跨平台支持。凭借处理多选题、网格题和基于文本的题型的能力,它在准确读取扫描图像和照片方面表现出色。开发者可以将识别结果导出为 CSV 格式,轻松分析来自测试、表单或问卷的数据显示在各种平台上,而无需担心兼容性问题。
无论您是开发自定义 C++ OMR 软件,还是在寻找可靠的 C++ OMR SDK,Aspose.OMR 都是一个全面的解决方案。它支持复选框检测、网格字段和灵活的 OMR 模板等高级功能。该库还能与其他 Aspose API 平滑集成,使开发者能够通过额外的文件格式或文档自动化功能来增强其应用程序。从使用 C++ 进行高精度 OMR 图像分析到构建可扩展的表单处理系统,Aspose.OMR for C++ 使开发者能够快速、可靠地创建高效且功能丰富的 OMR 解决方案。
开始使用 Aspose.OMR for C++
推荐的 Aspose.OMR for C++ 安装方式是通过 NuGet。请使用以下命令以顺利完成安装。
通过 C++ API 生成 OMR 模板/表单
Aspose.OMR for C++ API 促进模板创建,这是 OMR 系统的关键环节。使用 C++ OMR API,软件开发人员可以为不同类型的表单设计模板,确保在扫描过程中准确提取数据。该 API 可用于自定义纸张尺寸、方向、字体、颜色以及适用于所有模板页面的其他布局设置等。此功能简化了 OMR 能力在调查、考试和评估等各类领域的集成。下面的示例展示了如何在 C++ 应用程序中生成可打印并交付给受访者的表单图像。
如何在 C++ 应用程序中生成表单图像?
//Generate the form for ANSI Letter paper size
System::SharedPtr engine = System::MakeObject();
// Generate the form for ANSI Letter paper size (8.5 by 11 inches)
System::SharedPtr settings = System::MakeObject();
settings->setPaperSize(Api::PaperSize::Letter);
System::SharedPtr result = engine->GenerateTemplate(markupPath, nullptr, settings);
通过 C++ API 识别 OMR 表单
Aspose.OMR for C++ 配备了先进的 OMR 功能,使软件开发人员能够轻松设计和处理复杂表单。使用 API 识别光学标记识别(OMR)表单是一个直接的过程,涉及几个关键步骤。安装后,用户需要加载与要识别的表单对应的 OMR 模板。随后加载 OMR 表单的扫描图像,并使用已加载的模板进行处理,检索识别的数据并在需要时保存。以下示例展示了如何在 C++ 应用程序中识别并提取 OMR 表单的数据。
如何使用 C++ API 识别并提取 OMR 表单中的数据?
#include
omr::AsposeOmrApi api;
api.LoadTemplate("path/to/your/template.omr");
// Load and Process the Image
api.LoadImage("path/to/your/scanned/image.jpg");
api.Process();
// Access Recognized Data
omr::OmrPageReader reader = api.GetOmrPageReader();
std::vector pages = reader.ExtractPages();
omr::OmrPage page = pages[0]; // Assuming there's only one page in the form
// Access and handle recognized data
// Example: Extracting data from the grid
omr::Grid grid = page.GetGrids()[0]; // Assuming there's only one grid on the page
std::vector> data = grid.ExtractData();
// Finalize and Cleanup
api.Finalize();
高速且高效的 OMR 扫描
效率至关重要,尤其是在处理大量扫描文档时。Aspose.OMR for C++ 在高速扫描方面表现出色,能够快速且准确地从 OMR 纸张中提取数据。此功能对于时间紧迫的考试或调查等应用尤为有价值。API 支持广泛的 OMR 元素,包括复选框、网格和文本区域。这种全面的支持使开发人员能够处理多种文档类型,成为需要 OMR 功能的应用的多用途选择。
多页文档处理
Aspose.OMR for C++ 在多页文档处理方面表现出色,允许开发者无缝处理大量数据集。这一能力在涉及大量参与者的调查或考试等应用中尤为有价值。使用 OMR C++ API 处理多页文档涉及一系列步骤,以加载、处理并提取每页的数据。例如加载 OMR 模板、处理多页文档的每一页并保存数据。
如何通过 C++ API 加载并处理多页文档的每一页?
#include
// Load the OMR template
omr::AsposeOmrApi api;
api.LoadTemplate("path/to/your/template.omr");
//process each page of the multi-page document.
const int pageCount = 5; // Change this to the total number of pages in your document
for (int currentPage = 1; currentPage <= pageCount; ++currentPage) {
std::string imagePath = "path/to/your/scanned/image" + std::to_string(currentPage) + ".jpg";
api.LoadImage(imagePath);
api.Process();
// Access and handle recognized data for each page
omr::OmrPageReader reader = api.GetOmrPageReader();
std::vector pages = reader.ExtractPages();
omr::OmrPage page = pages[0]; // Assuming there's only one page in each image
// Access and handle recognized data
// Example: Extracting data from the grid
omr::Grid grid = page.GetGrids()[0]; // Assuming there's only one grid on the page
std::vector> data = grid.ExtractData();
// Further processing or storage of the data can be done here
// Cleanup for the next iteration
api.Finalize();
}
// release resources.
api.Finalize();