בצע OMR וחילוץ נתונים מתמונה ב-C#

זיהוי סימנים אופטי (OMR) מאפשר קריאה ולכידה של נתונים המסומנים על סוג מיוחד של טופס מסמך. טופס מסמך זה יכול להיות בדיקה או סקר, המורכב מתשומות בועות או ריבועיות שמילאו משתמשים. אנו יכולים בקלות לבצע פעולות OMR בתמונות הסרוקות של טפסי סקר או דפי בדיקה כאלה ולקרוא את קלט המשתמש באופן תוכנתי ביישומי NET. במאמר זה נלמד כיצד לבצע OMR ולחלץ נתונים מתמונה ב-C#.

הנושאים הבאים יכוסו במאמר זה:

  1. C# OMR API לחילוץ נתונים מתמונה
  2. בצע OMR וחילוץ נתונים מתמונה
  3. [בצע OMR וחילוץ נתונים מתמונות מרובות](#ביצוע-OMR-ו-חלץ-נתונים מ-Multiple-Images)
  4. קבל תוצאות OMR עם סף
  5. מבצע OMR עם חישוב מחדש

C# OMR API לחילוץ נתונים מתמונה

לביצוע פעולות OMR וייצוא נתונים מתמונות, נשתמש ב-Aspose.OMR for .NET API. הוא מאפשר לעצב, ליצור ולזהות דפי תשובות, מבחנים, מאמרי MCQ, חידונים, טפסי משוב, סקרים ופתקי הצבעה.

אנא הורד את ה-DLL של ה-API או התקן אותו באמצעות NuGet.

PM> Install-Package Aspose.OMR

בצע OMR וחילוץ נתונים מתמונה באמצעות C#

על מנת לבצע פעולת 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 Engine
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 וחילוץ נתונים מתמונות.

ניתן להוריד את תבנית OMR המשמשת בדוגמה של הקוד לעיל מכאן.

חילוץ נתונים ממספר תמונות ב-C#

אנו יכולים לבצע פעולות 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 Engine
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);
}

ה-API מספק גם פונקציונליות לזיהוי וזיהוי ברקודים זמינים בתמונה במהלך פעולת OMR. זוהי תכונת ברירת המחדל של פעולת OMR. אנו יכולים לבצע פעולות OMR ולזהות ברקודים על ידי ביצוע השלבים שהוזכרו קודם לכן.

קבל תוצאות OMR עם Threshold ב-C#

אנו יכולים להחיל את הסף בזמן ביצוע פעולות OMR בתמונות. ערך הסף יכול להיות מ-0 עד 100 בהתאם לדרישות. ככל שערך הסף גבוה יותר, ה-API הופך קפדני יותר לגבי הדגשת התשובות. אנא בצע את השלבים שהוזכרו קודם לכן כדי לבצע 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 עם חישוב מחדש ב-C#

במקרים מסוימים, ייתכן שנצטרך לחשב מחדש את תוצאות OMR עם ערכי סף שונים. למטרה זו, אנו יכולים להגדיר את ה-API לחישוב אוטומטי מחדש באמצעות שיטת TemplateProcessor.recalculate(). זה מאפשר עיבוד תמונה מספר פעמים על ידי שינוי הגדרת הסף כדי לקבל את התוצאה הרצויה. אנו יכולים לבצע פעולת OMR עם חישוב מחדש על ידי ביצוע השלבים המפורטים להלן:

  1. ראשית, צור מופע של המחלקה OmrEngine.
  2. לאחר מכן, קרא למתודה GetTemplateProcessor() ואתחול אובייקט המחלקה TemplateProcessor. זה לוקח את נתיב הקובץ של תבנית OMR כארגומנט.
  3. לאחר מכן, אתחול אובייקט שעון העצר והפעל את הטיימר.
  4. לאחר מכן, השג את האובייקט RecognitionResult על ידי קריאה למתודה RecognizeImage() עם נתיב התמונה כארגומנט.
  5. לאחר מכן, עצור את הטיימר וייצא את תוצאות הזיהוי כמחרוזת CSV באמצעות השיטה GetCsv().
  6. לאחר מכן, שמור את תוצאת ה-CSV כקובץ CSV בדיסק המקומי.
  7. לאחר מכן, הפעל מחדש את הטיימר באמצעות שיטת Restart() .
  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 Engine
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 בתהליך רכב באופן פרוגרמטי.

מלבד חילוץ נתוני OMR מתמונות ב-C#, אתה יכול ללמוד עוד על Aspose.OMR עבור .NET API באמצעות תיעוד. בכל מקרה של אי בהירות, אנא אל תהסס לפנות אלינו ב[פורום התמיכה החינמי] שלנו22.

ראה גם