彩票走势图

光学控件Aspose.OMR教程(3):使用 C# 执行 OMR 和提取数据

翻译|使用教程|编辑:胡涛|2022-05-06 15:37:14.870|阅读 175 次

概述:在本文中,我们将学习如何使用 C# 执行 OMR 和提取数据,欢迎查阅!

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

光学标记识别 (OMR) 允许读取和捕获标记在特殊类型文档表单上的数据。该文档表单可以是测试或调查,由用户填写的气泡或方形输入组成。我们可以轻松地对此类调查表或测试表的扫描图像执行 OMR 操作,并在 .NET 应用程序中以编程方式读取用户输入。在本文中,我们将学习如何使用 C# 执行 OMR 和提取数据。

Aspose.OMR 最新下载

(一) 用于执行 OMR 和提取数据的 C# OMR API

为了执行 OMR 操作和从图像中导出数据,我们将使用 Aspose.OMR for .NET API。它允许设计、创建和识别答题纸、测试、MCQ 试卷、测验、反馈表、调查和选票。

PM> Install-Package Aspose.OMR

(二) 执行 OMR 并从图像中提取数据

为了对图像执行 OMR 操作,我们需要准备好的 OMR 模板 (.omr) 和图像(用户填写的表格/表格)来执行 OMR。我们可以按照以下步骤对图像执行 OMR 操作并提取数据:

  1. 首先,创建OmrEngine类的实例。
  2. 接下来,调用GetTemplateProcessor()方法并初始化TemplateProcessor类对象。它将 OMR 模板文件路径作为参数。
  3. 然后,通过以图像路径为参数调用RecognizeImage()方法获取RecognitionResult对象。
  4. 之后,使用GetCsv()方法将识别结果作为 CSV 字符串获取。
  5. 最后,将 CSV 结果保存为本地磁盘上的 CSV 文件。

以下代码示例展示 了如何使用 C# 对图像执行 OMR 并以 CSV 格式提取数据。

// OMR Template file path
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Image file path
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// Initialize OMR Engine
OmrEngine engine = new OmrEngine();

// Get template processor
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// Recognize image
RecognitionResult result = templateProcessor.RecognizeImage(imagePath);

// Get results in CSV
string csvResult = result.GetCsv();

// Save CSV file
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);

执行 OMR 并从图像中提取数据

(三) 执行 OMR 并从多个图像中提取数据

我们可以对多个图像执行 OMR 操作,并按照前面提到的步骤将数据提取到每个图像的单独 CSV 文件中。但是,我们需要对所有图像一张一张地重复步骤 #3、4 和 5。

以下代码示例展示 了如何使用 C# 对多个图像执行 OMR 并以 CSV 格式提取数据。

// OMR Template file path
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Images folder file path
string imageFolderPath = @"D:\Files\OMR\";

// Output directory path
string outputPath = @"D:\Files\OMR\";

// Images to be processed
string[] UserImages = new string[] { "Sheet1.jpg", "Sheet2.jpg" };

// Initialize OMR Engine
OmrEngine engine = new OmrEngine();

// Get template processor
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// Process images one by one
for (int i = 0; i < UserImages.Length; i++)
}
string imagePath = Path.Combine(imageFolderPath, UserImages[i]);

// Recognize image
RecognitionResult result = templateProcessor.RecognizeImage(imagePath);

// Get results in CSV
string csvResult = result.GetCsv();

// Save CSV file
File.WriteAllText(Path.Combine(outputPath, Path.GetFileNameWithoutExtension(UserImages[i]) + ".csv"), csvResult);
}

该 API 还提供了在 OMR 操作期间检测和识别图像上可用的任何条形码的功能。这是 OMR 操作的默认功能。我们可以按照前面提到的步骤进行 OMR 操作并识别条形码。

(四) 获取带阈值的 OMR 结果

我们可以在对图像执行 OMR 操作时应用阈值。根据需要,阈值的值可以从 0 到 100。阈值越高,API 对突出显示答案就越严格。请按照前面提到的步骤使用阈值执行 OMR。但是,我们只需要在第 3 步中调用重载的RecognizeImage(string, int32)方法。它将图像文件路径和阈值作为参数。

以下代码示例显示 了如何使用 C# 执行具有阈值的 OMR。

// OMR Template file path
string templatePath = @"D:\Files\OMR\Sheet.omr";

// Image file path
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// Threshold value
int CustomThreshold = 40;

// Initialize OMR Engine
OmrEngine engine = new OmrEngine();

// Get template processor
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// Recognize image
RecognitionResult result = templateProcessor.RecognizeImage(imagePath, CustomThreshold);

// Get results in CSV
string csvResult = result.GetCsv();

// Save CSV file
File.WriteAllText(@"D:\Files\OMR\Sheet1_threshold.csv", csvResult);
(五) 带重新计算的 OMR 操作

在某些情况下,我们可能需要使用不同的阈值重新计算 OMR 结果。为此,我们可以将 API 配置为使用 TemplateProcessor.recalculate() 方法自动重新计算。它允许通过更改阈值设置来多次处理图像以获得所需的结果。我们可以按照以下给出的步骤执行带有重新计算的 OMR 操作:

  • 首先,创建OmrEngine类的实例。
  • 接下来,调用GetTemplateProcessor()方法并初始化TemplateProcessor类对象。它将 OMR 模板文件路径作为参数。
  • 然后,初始化 Stopwatch 对象并启动计时器。
  • 接下来,通过使用图像路径作为参数调用RecognizeImage()方法来获取RecognitionResult对象。
  • 然后,停止计时器并使用GetCsv()方法将识别结果导出为 CSV 字符串。
  • 接下来,将 CSV 结果保存为本地磁盘上的 CSV 文件。
  • 然后,使用 Restart() 方法重新启动计时器。
  • 接下来,调用Recalculate()方法。它将 RecognitionResult 对象和阈值作为参数。
  • 之后,停止计时器并使用GetCsv()方法将识别结果导出为 CSV 字符串。
  • 最后,将 CSV 结果保存为本地磁盘上的 CSV 文件。
    以下代码示例显示 如何使用 C# 使用重新计算方法执行 OMR。
    // OMR Template file path
    string templatePath = @"D:\Files\OMR\Sheet.omr";
    
    // Image file path
    string imagePath = @"D:\Files\OMR\Sheet1.jpg";
    
    // Threshold value
    int CustomThreshold = 40;
    
    // Initialize OMR Engine
    OmrEngine engine = new OmrEngine();
    
    // Get template processor
    TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);
    
    // Timer for performance measure
    Stopwatch sw = Stopwatch.StartNew();
    
    // Recognize image
    RecognitionResult result = templateProcessor.RecognizeImage(imagePath, CustomThreshold);
    
    sw.Stop();
    
    // Get results in CSV
    string csvResult = result.GetCsv();
    
    // Save CSV file
    File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);
    
    sw.Restart();
    
    // Recalculate
    templateProcessor.Recalculate(result, CustomThreshold);
    sw.Stop();
    
    // Get recalculated results in CSV
    csvResult = result.GetCsv();
    
    // Save recalculated resultant CSV file
    File.WriteAllText(@"D:\Files\OMR\Sheet1_Recalculated.csv", csvResult);

    欢迎下载|体验更多Aspose产品 

    获取更多信息请咨询 或 加入Aspose技术交流群(761297826

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP