أداء OMR واستخراج البيانات باستخدام C#

يسمح التعرف البصري على العلامة (OMR) بقراءة البيانات المميزة بنوع خاص من نموذج المستند والتقاطها. يمكن أن يكون نموذج المستند هذا اختبارًا أو مسحًا ، يتكون من مدخلات فقاعية أو مربعة يملأها المستخدمون. يمكننا بسهولة إجراء عمليات القراءة الضوئية على الصور الممسوحة ضوئيًا لنماذج الاستطلاع أو أوراق الاختبار وقراءة مدخلات المستخدم برمجيًا في تطبيقات .NET. في هذه المقالة ، سوف نتعلم كيفية أداء ريال عماني واستخراج البيانات باستخدام C#.

سيتم تناول الموضوعات التالية في هذه المقالة:

واجهة برمجة تطبيقات C# OMR لأداء OMR واستخراج البيانات

لإجراء عمليات OMR وتصدير البيانات من الصور ، سنستخدم Aspose.OMR for .NET API. يسمح بتصميم وإنشاء والتعرف على أوراق الإجابة والاختبارات وأوراق MCQ والاختبارات ونماذج التعليقات والاستطلاعات وأوراق الاقتراع. يرجى إما تنزيل DLL الخاصة بواجهة برمجة التطبيقات أو تثبيته باستخدام NuGet.

PM> Install-Package Aspose.OMR

أداء OMR واستخراج البيانات من الصورة

من أجل إجراء عملية القراءة الضوئية على إحدى الصور ، نحتاج إلى نموذج OMR المعد (.omr) والصورة (النماذج / الأوراق المملوءة بالمستخدم) لإجراء OMR عليها. يمكننا إجراء عملية القراءة الضوئية على صورة واستخراج البيانات باتباع الخطوات الواردة أدناه:

  1. أولاً ، قم بإنشاء مثيل للفئة OmrEngine.
  2. بعد ذلك ، قم باستدعاء الأسلوب GetTemplateProcessor() وتهيئة كائن فئة TemplateProcessor. يأخذ مسار ملف قالب OMR كوسيطة.
  3. بعد ذلك ، احصل على الكائن RecognitionResult عن طريق استدعاء طريقة RecognizeImage() باستخدام مسار الصورة كوسيطة.
  4. بعد ذلك ، احصل على نتائج التعرف على هيئة سلاسل CSV باستخدام طريقة GetCsv().
  5. أخيرًا ، احفظ نتيجة CSV كملف CSV على القرص المحلي.

يوضح نموذج التعليمات البرمجية التالي كيفية إجراء OMR على صورة واستخراج البيانات بتنسيق CSV باستخدام C#.

// مسار ملف قالب OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// مسار ملف الصورة
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// تهيئة محرك OMR
OmrEngine engine = new OmrEngine();

// احصل على معالج القالب
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// التعرف على الصورة
RecognitionResult result = templateProcessor.RecognizeImage(imagePath);

// احصل على نتائج بتنسيق CSV
string csvResult = result.GetCsv();

// احفظ ملف CSV
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);
أداء ريال عماني واستخراج البيانات من الصور

أداء ريال عماني واستخراج البيانات من الصور.

يمكن تنزيل نموذج OMR المستخدم في مثال الكود أعلاه من هنا.

أداء ريال عماني واستخراج البيانات من صور متعددة

يمكننا إجراء عمليات OMR على صور متعددة واستخراج البيانات في ملف CSV منفصل لكل صورة باتباع الخطوات المذكورة سابقًا. ومع ذلك ، نحتاج إلى تكرار الخطوات رقم 3 و 4 و 5 لجميع الصور واحدة تلو الأخرى.

يوضح نموذج التعليمات البرمجية التالي كيفية إجراء OMR على صور متعددة واستخراج البيانات بتنسيق CSV باستخدام C#.

// مسار ملف قالب OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// مسار ملف مجلد الصور
string imageFolderPath = @"D:\Files\OMR\";

// مسار دليل الإخراج
string outputPath = @"D:\Files\OMR\";

// الصور المراد معالجتها
string[] UserImages = new string[] { "Sheet1.jpg", "Sheet2.jpg" };

// تهيئة محرك OMR
OmrEngine engine = new OmrEngine();

// احصل على معالج القالب
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// معالجة الصور واحدة تلو الأخرى
for (int i = 0; i < UserImages.Length; i++)
{
    string imagePath = Path.Combine(imageFolderPath, UserImages[i]);
    
    // التعرف على الصورة
    RecognitionResult result = templateProcessor.RecognizeImage(imagePath);
    
    // احصل على نتائج بتنسيق CSV
    string csvResult = result.GetCsv();

    // احفظ ملف CSV
    File.WriteAllText(Path.Combine(outputPath, Path.GetFileNameWithoutExtension(UserImages[i]) + ".csv"), csvResult);
}

توفر واجهة برمجة التطبيقات أيضًا وظائف لاكتشاف والتعرف على أي رموز شريطية متوفرة على الصورة أثناء تشغيل تقنية القراءة الضوئية. إنها السمة الافتراضية لعملية التشغيل OMR. يمكننا إجراء عمليات القراءة الضوئية والتعرف على الباركود باتباع الخطوات المذكورة سابقًا.

احصل على نتائج بالريال العماني مع الحد الأدنى

يمكننا تطبيق العتبة أثناء إجراء عمليات القراءة الضوئية على الصور. يمكن أن تتراوح قيمة العتبة من 0 إلى 100 حسب المتطلبات. كلما زادت قيمة العتبة ، أصبحت واجهة برمجة التطبيقات أكثر صرامة فيما يتعلق بتمييز الإجابات. يرجى اتباع الخطوات المذكورة سابقًا لأداء OMR مع الحد الأدنى. ومع ذلك ، نحتاج فقط إلى استدعاء طريقة التحميل الزائد RecognizeImage (string، int32) في الخطوة رقم 3. فهي تأخذ مسار ملف الصورة وقيمة العتبة كوسائط.

يوضح نموذج التعليمات البرمجية التالي كيفية تنفيذ OMR بقيمة العتبة باستخدام C#.

// مسار ملف قالب OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// مسار ملف الصورة
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// قيمة العتبة
int CustomThreshold = 40;

// تهيئة محرك OMR
OmrEngine engine = new OmrEngine();

// احصل على معالج القالب
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// التعرف على الصورة
RecognitionResult result = templateProcessor.RecognizeImage(imagePath, CustomThreshold);

// احصل على نتائج بتنسيق CSV
string csvResult = result.GetCsv();

// احفظ ملف CSV
File.WriteAllText(@"D:\Files\OMR\Sheet1_threshold.csv", csvResult);

عملية OMR مع إعادة الحساب

في بعض الحالات ، قد نحتاج إلى إعادة حساب نتائج القراءة السريعة بقيم حد مختلفة. لهذا الغرض ، يمكننا تكوين API لإعادة الحساب تلقائيًا باستخدام طريقة TemplateProcessor.recalculate(). يسمح بمعالجة صورة عدة مرات عن طريق تغيير إعداد العتبة للحصول على النتيجة المرجوة. يمكننا إجراء عملية OMR مع إعادة الحساب باتباع الخطوات الواردة أدناه:

  1. أولاً ، قم بإنشاء مثيل للفئة OmrEngine.
  2. بعد ذلك ، قم باستدعاء الأسلوب GetTemplateProcessor() وتهيئة كائن فئة TemplateProcessor. يأخذ مسار ملف قالب OMR كوسيطة.
  3. ثم قم بتهيئة كائن Stopwatch وابدأ الموقت.
  4. بعد ذلك ، احصل على كائن RecognitionResult عن طريق استدعاء طريقة RecognizeImage() باستخدام مسار الصورة كوسيطة.
  5. ثم أوقف المؤقت وقم بتصدير نتائج التعرف كسلسلة CSV باستخدام الأسلوب GetCsv().
  6. بعد ذلك ، احفظ نتيجة CSV كملف CSV على القرص المحلي.
  7. ثم أعد تشغيل المؤقت باستخدام طريقة إعادة التشغيل().
  8. بعد ذلك ، قم باستدعاء طريقة Recalculate(). يأخذ الكائن RecognitionResult وقيمة العتبة كوسائط.
  9. بعد ذلك ، قم بإيقاف المؤقت وقم بتصدير نتائج التعرف كسلسلة CSV باستخدام أسلوب GetCsv().
  10. أخيرًا ، احفظ نتيجة CSV كملف CSV على القرص المحلي.

يوضح نموذج التعليمات البرمجية التالي كيفية إجراء OMR باستخدام أسلوب إعادة الحساب باستخدام C#.

// مسار ملف قالب OMR
string templatePath = @"D:\Files\OMR\Sheet.omr";

// مسار ملف الصورة
string imagePath = @"D:\Files\OMR\Sheet1.jpg";

// قيمة العتبة
int CustomThreshold = 40;

// تهيئة محرك OMR
OmrEngine engine = new OmrEngine();

// احصل على معالج القالب
TemplateProcessor templateProcessor = engine.GetTemplateProcessor(templatePath);

// مؤقت لقياس الأداء
Stopwatch sw = Stopwatch.StartNew();

// التعرف على الصورة
RecognitionResult result = templateProcessor.RecognizeImage(imagePath, CustomThreshold);

sw.Stop();

// احصل على نتائج بتنسيق CSV
string csvResult = result.GetCsv();

// احفظ ملف CSV
File.WriteAllText(@"D:\Files\OMR\Sheet1.csv", csvResult);

sw.Restart();

// إعادة الحساب
templateProcessor.إعادة الحساب(result, CustomThreshold);
sw.Stop();

// احصل على نتائج معاد حسابها في ملف CSV
csvResult = result.GetCsv();

// حفظ ملف CSV الناتج المعاد حسابه
File.WriteAllText(@"D:\Files\OMR\Sheet1_إعادة الحسابd.csv", csvResult);

احصل على رخصة مجانية

يمكنك الحصول على ترخيص مؤقت مجاني لتجربة المكتبة دون قيود التقييم.

استنتاج

في هذه المقالة ، تعلمنا كيفية:

  • إجراء عملية OMR على الصور واستخراج البيانات بتنسيق CSV باستخدام C# ؛
  • تطبيق إعداد العتبة أثناء أداء OMR على الصور ؛
  • إعادة حساب النتائج OMR في عملية السيارات برمجيًا.

بالإضافة إلى ذلك ، يمكنك معرفة المزيد حول Aspose.OMR for .NET API باستخدام التوثيق. في حالة وجود أي غموض ، فلا تتردد في الاتصال بنا على المنتدى.

أنظر أيضا