בצע OMR וחילוץ נתונים באמצעות Java

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

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

  1. Java OMR API לחילוץ נתונים מתמונה
  2. חלץ נתונים מתמונה
  3. בצע OMR וחילוץ נתונים ממספר תמונות
  4. חלץ נתוני OMR עם Threshold
  5. חלץ נתוני OMR עם חישוב מחדש

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

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

המחלקה OmrEngine של ה-API מטפלת ביצירת התבנית ועיבוד התמונה. השיטה getTemplateProcessor(String templatePath) של מחלקה זו יוצרת את המופע TemplateProcessor לעיבוד תבניות ותמונות. אנו יכולים לזהות תמונה באמצעות השיטה recognizeImage(String imagePath). הוא מחזיר את כל רכיבי OMR כמופע מחלקה RecognitionResult. השיטה getCsv() של מחלקה זו מייצרת מחרוזת CSV עם תוצאות זיהוי. השיטה recalculate(RecognitionResult result, int recognitionThreshold) מעדכנת את תוצאת הזיהוי באמצעות פרמטרים מכווננים.

אנא הורד את ה-JAR של ה-API או הוסף את תצורת pom.xml הבאה ביישום Java מבוסס Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
     <groupId>com.aspose</groupId>
     <artifactId>aspose-omr</artifactId>
     <version>19.12</version>
</dependency>

חילוץ נתונים מתמונה ב-Java

אנו זקוקים לתבנית OMR המוכנה (.omr) יחד עם התמונה של טפסים/גליונות שמילאו המשתמש כדי לבצע את פעולת OMR. אנו יכולים לבצע פעולת OMR בתמונה ולחלץ נתונים על ידי ביצוע השלבים המפורטים להלן:

  1. ראשית, צור מופע של המחלקה OmrEngine.
  2. לאחר מכן, קרא למתודה getTemplateProcessor() ואתחול אובייקט המחלקה TemplateProcessor. זה לוקח את נתיב הקובץ של תבנית OMR כארגומנט.
  3. לאחר מכן, קבל את האובייקט RecognitionResult על-ידי קריאה למתודה recognitionImage() עם נתיב התמונה כארגומנט.
  4. לאחר מכן, קבל תוצאות זיהוי כמחרוזות CSV באמצעות שיטת getCsv() .
  5. לבסוף, שמור את תוצאת ה-CSV כקובץ CSV בדיסק המקומי.

דוגמת הקוד הבאה מראה כיצד לחלץ נתוני OMR מתמונה בפורמט CSV באמצעות Java.

// דוגמה זו מדגימה כיצד לבצע OMR בתמונה ולחלץ נתונים
// נתיב קובץ תבנית OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// נתיב קובץ תמונה
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// אתחול מנוע OMR
OmrEngine engine = new OmrEngine();

// קבל מעבד תבניות
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// זיהוי תמונה
RecognitionResult result = templateProcessor.recognizeImage(imagePath);

// קבל תוצאות ב-CSV
String csvResult = result.getCsv();

// שמור קובץ CSV
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true);
wr.println(csvResult);
חלץ-נתונים-מתמונה-ב-Java

בצע OMR וחילוץ נתונים מתמונה ב-Java.

אנא הורד את תבנית OMR המשמשת בפוסט זה בבלוג.

בצע OMR וחילוץ נתונים ממספר תמונות

אנו יכולים לבצע פעולות OMR על מספר תמונות ולחלץ נתונים בקובץ CSV נפרד עבור כל תמונה על ידי ביצוע השלבים שהוזכרו קודם לכן. עם זאת, עלינו לחזור על שלבים מס’ 3, 4 ו-5 עבור כל התמונות אחת אחת.

דגימת הקוד הבאה מראה כיצד לחלץ נתוני OMR ממספר תמונות באמצעות Java.

// דוגמה זו מדגימה כיצד לבצע OMR במספר תמונות ולחלץ נתונים
// נתיב תיקיית עבודה
String folderPath = "C:\\Files\\OMR\\";

// נתיב קובץ תבנית OMR
String templatePath = folderPath + "Sheet.omr";

// נתיב קובץ תמונה
String[] UserImages = new String[] { "Sheet1.png", "Sheet2.png" };

// אתחול OMR Engine
OmrEngine engine = new OmrEngine();

// קבל מעבד תבניות
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// עבדו תמונות אחת אחת בלולאה
for (int i = 0; i < UserImages.length; i++)
{
    String image = UserImages[i];
    String imagePath = folderPath + image;

    // זיהוי תמונה
    RecognitionResult result = templateProcessor.recognizeImage(imagePath);

    // קבל תוצאות ב-CSV
    String csvResult = result.getCsv();

    // שמור קובץ CSV
    PrintWriter wr = new PrintWriter(new FileOutputStream(folderPath + "Sheet_" + i + ".csv"), true);
    wr.println(csvResult);
    System.out.println(csvResult);
}

חלץ נתוני OMR עם Threshold ב-Java

אנו יכולים לבצע פעולות OMR עם ערך סף (0 עד 100) בהתאם לדרישות. ככל שהערך של הסף גבוה יותר הופך את ה-API למחמיר יותר בהדגשת התשובות. אנא בצע את השלבים שהוזכרו קודם לכן כדי לבצע OMR עם הסף. עם זאת, אנחנו רק צריכים לקרוא לשיטת overloaded identifierImage(string, int32) בשלב מס’ 3. היא לוקחת את נתיב קובץ התמונה ואת ערך הסף כארגומנטים.

דגימת הקוד הבאה מראה כיצד לבצע OMR עם ערך סף באמצעות Java.

// דוגמה זו מדגימה כיצד לבצע OMR עם therashold ולחלץ נתונים מתמונה
// נתיב קובץ תבנית OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// נתיב קובץ תמונה
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// ערך סף
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
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_threshold.csv"), true);
wr.println(csvResult);
System.out.println(csvResult);

חלץ נתוני OMR עם חישוב מחדש ב-Java

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

  1. ראשית, צור מופע של המחלקה OmrEngine.
  2. לאחר מכן, קרא למתודה getTemplateProcessor() ואתחול אובייקט המחלקה TemplateProcessor. זה לוקח את נתיב הקובץ של תבנית OMR כארגומנט.
  3. לאחר מכן, קבל את האובייקט RecognitionResult על-ידי קריאה למתודה recognitionImage() עם נתיב התמונה כארגומנט.
  4. לאחר מכן, ייצא תוצאות זיהוי כמחרוזת CSV באמצעות שיטת getCsv() .
  5. לאחר מכן, שמור את תוצאת ה-CSV כקובץ CSV בדיסק המקומי.
  6. לאחר מכן, קרא לשיטת recalculate() . הוא לוקח את האובייקט RecognitionResult ואת ערך הסף כארגומנטים.
  7. לאחר מכן, ייצא תוצאות זיהוי כמחרוזת CSV באמצעות שיטת getCsv() .
  8. לבסוף, שמור את תוצאת ה-CSV כקובץ CSV בדיסק המקומי.

דגימת הקוד הבאה מראה כיצד לבצע OMR בשיטת החישוב מחדש באמצעות Java.

// נתיב קובץ תבנית OMR
String templatePath = "C:\\Files\\OMR\\Sheet.omr";

// נתיב קובץ תמונה
String imagePath = "C:\\Files\\OMR\\Sheet1.png";

// ערך סף
int CustomThreshold = 40;

// אתחול OMR Engine
OmrEngine engine = new OmrEngine();

// קבל מעבד תבניות
TemplateProcessor templateProcessor = engine.getTemplateProcessor(templatePath);

// זיהוי תמונה
RecognitionResult result = templateProcessor.recognizeImage(imagePath, CustomThreshold);

// קבל תוצאות ב-CSV
String csvResult = result.getCsv();

// שמור קובץ CSV
PrintWriter wr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1.csv"), true);
wr.println(csvResult);

// חישוב מחדש
// תוכל להחיל כאן ערך סף חדש
templateProcessor.recalculate(result, CustomThreshold);

// קבל תוצאות מחושבות מחדש ב-CSV
csvResult = result.getCsv();

// שמור קובץ CSV שנוצר מחושב מחדש
PrintWriter finalWr = new PrintWriter(new FileOutputStream("C:\\Files\\OMR\\Sheet1_recalculated.csv"), true);
finalWr.println(csvResult);

קבל רישיון חינם

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

סיכום

במאמר זה למדנו כיצד:

  • לבצע פעולת OMR על תמונות;
  • לחלץ נתונים בפורמט CSV באופן פרוגרמטי;
  • החל הגדרת סף בזמן ביצוע OMR על תמונות;
  • חישוב מחדש של תוצאות OMR בתהליך רכב באמצעות Java.

חוץ מזה, חילוץ נתונים מתמונה ב-Java, אתה יכול ללמוד עוד על Aspose.OMR עבור Java API באמצעות תיעוד. בכל מקרה של אי בהירות, אנא אל תהסס לפנות אלינו בפורום התמיכה החינמי שלנו.

ראה גם