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

Java API ליצירת תבניות OMR וביצוע פעולת OMR

Aspose.OMR עבור Java הוא API לזיהוי סימנים אופטי שיכול לבצע פעולות OMR ב-PNG, GIF, JPEG, TIFF, תמונות וכו’. ה-API תומך גם ביצירת תבניות OMR. אתה יכול להוריד את ה-API ישירות מהקטע הורדות או להתקין אותו באמצעות התצורה הבאה של Maven.

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

<dependency>
	<groupId>com.aspose</groupId>
	<artifactId>aspose-omr</artifactId>
	<version>19.12</version>
	<classifier>javadoc</classifier>
</dependency>

צור תמונת תבנית OMR וגיליון תשובות באמצעות Java

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

?text=Name__________________________________ Date____________

?grid=ID
	sections_count=8
#What is Aspose.OMR main function?
	() OCR () Capture human-marked data
	() There is no main function () Enhance images
#Can Aspose.OMR process not only scans, but also photos?
	() Yes, indeed! () No
#Aspose.OMR is available on any platform, because it is:
	() Cross-platform code () Cloud service
#Aspose.OMR works with any kind of OMR forms: tests, exams, questionnaires, surveys, etc.
	() Yes, indeed! () No
#Excellent recognition results can be achieved only for filled bubbles at least for:
	() 40% () 60% () 75% () 98%
#Do you have to mark up every question on the page?
	(Yes) Yes, that will help a lot! (No) No
#Rate your preference from 0 to 9 with "0" being preference towards performance
and "9" being preference towards flexibility.
	(0) (1) (2) (3) (4) (5) (6) (7) (8) (9)
#I found aspose omr to be a useful tool. (5 - strongly agree, 1 - strongly disagree)
	(5) (4) (3) (2) (1)

?text= Answer sheet section
?answer_sheet=MainQuestions
	elements_count=10
	columns_count=5

?text=Sign________________________________

כעת, לאחר שסימון הטקסט מוכן, נבצע את השלבים המפורטים להלן ליצירת תבנית OMR.

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

// נתיבי ספריית מקור ופלט
String sourceDirectory = "SourceDirectory\\OMR\\Generation\\";
String outputDirectory = "OutputDirectory\\";

// צור מופע של המחלקה OmrEngine
OmrEngine engine = new OmrEngine();

// צור תבנית באמצעות סימון הטקסט
GenerationResult res = engine.generateTemplate(sourceDirectory + "Grid.txt");

// בדוק במקרה של שגיאות
if (res.getErrorCode() != 0)
{
    System.out.println("ERROR CODE: " + res.getErrorCode());
}

// שמור את תוצאת הדור: תמונה ותבנית .omr
res.save(outputDirectory, "Grid");

הקוד לעיל יפיק קובץ תבנית OMR ותמונה של גיליון התשובות. להלן התמונה של גיליון התשובות שנוצר.

תמונה של גיליון התשובות שנוצר על ידי הקוד לדוגמה

תמונה של גיליון התשובות שנוצר על ידי הקוד לדוגמה

בצע פעולת OMR ב-Bubble Answer Sheets באמצעות Java

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

להלן השלבים לביצוע פעולת OMR בתמונות.

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

// נתיבי ספריית מקור ופלט
String sourceDirectory = "SourceDirectory\\OMR\\";
String outputDirectory = "OutputDirectory\\";

String TemplateName = "Sheet.omr";
String[] UserImages = new String[] { "Sheet1.jpg", "Sheet2.jpg" };
String[] UserImagesNoExt = new String[] { "Sheet1", "Sheet2" };

// צור מופע של המחלקה OmrEngine
OmrEngine engine = new OmrEngine();

// טען את קובץ התבנית
TemplateProcessor templateProcessor = engine.getTemplateProcessor(sourceDirectory + "Sheet.omr");
System.out.println("Template loaded.");

// עברו בלולאה בין התמונות
for (int i = 0; i < UserImages.length; i++) {

    // זיהוי תמונה וקבל תוצאה
    RecognitionResult result = templateProcessor.recognizeImage(sourceDirectory + UserImages[i]);

    // ייצא תוצאות כמחרוזת csv
    String csvResult = result.getCsv();

    // שמור CSV בתיקיית הפלט
    PrintWriter wr = new PrintWriter(new FileOutputStream(outputDirectory + UserImagesNoExt[i] + ".csv"), true);
    wr.println(csvResult);
}

להלן פלט ה-CSV עבור התמונה הראשונה שנוצרה על ידי הקוד לעיל.

Element Name,Value,
MainQuestions1,"A"
MainQuestions2,"B"
MainQuestions3,"D"
MainQuestions4,"C"
MainQuestions5,"C"
MainQuestions6,"A"
MainQuestions7,"B"
MainQuestions8,"B"
MainQuestions9,"C"
MainQuestions10,"B"
MainQuestions11,"D"
MainQuestions12,"A"
MainQuestions13,"C"
MainQuestions14,"B"
MainQuestions15,"D"
MainQuestions16,"A"
MainQuestions17,"C"
MainQuestions18,"B"
MainQuestions19,"A"
MainQuestions20,"A"
MainQuestions21,"A"
MainQuestions22,"C"
MainQuestions23,"D"
MainQuestions24,"B"
MainQuestions25,"A"
MainQuestions26,"C"
MainQuestions27,"B"
MainQuestions28,"D"
MainQuestions29,"C"
MainQuestions30,"A"
MainQuestions31,"C"
MainQuestions32,"B"
MainQuestions33,"D"
MainQuestions34,"A"
MainQuestions35,"C"
MainQuestions36,"B"
MainQuestions37,"D"
MainQuestions38,"C"
MainQuestions39,"B"
MainQuestions40,"A"
MainQuestions41,"D"
MainQuestions42,"C"
MainQuestions43,"B"
MainQuestions44,"A"
MainQuestions45,"C"
MainQuestions46,"B"
MainQuestions47,"D"
MainQuestions48,"C"
MainQuestions49,"A"
MainQuestions50,"C"
MainQuestions51,"B"
MainQuestions52,"D"
MainQuestions53,"B"
MainQuestions54,"C"
MainQuestions55,"B"
MainQuestions56,"A"
MainQuestions57,"C"
MainQuestions58,"B"
MainQuestions59,"D"
MainQuestions60,"B"
MainQuestions61,"A"
MainQuestions62,"C"
MainQuestions63,"B"
MainQuestions64,"D"
MainQuestions65,"C"
MainQuestions66,"B"
MainQuestions67,"A"
MainQuestions68,"C"
MainQuestions69,"B"
MainQuestions70,"D"
MainQuestions71,"C"
MainQuestions72,"B"
MainQuestions73,"B"
MainQuestions74,"A"
MainQuestions75,"C"
MainQuestions76,"B"
MainQuestions77,"D"
MainQuestions78,"D"
MainQuestions79,"C"
MainQuestions80,"B"
ID,"27860000" 

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

אתה יכול לנסות את ה-API ללא מגבלות הערכה על ידי בקשת [רישיון זמני בחינם].14

סיכום

במאמר זה, למדת כיצד ליצור תבניות OMR ותמונות גיליון תשובות באמצעות Java. יתר על כן, למדת כיצד לבצע פעולות OMR בתמונות ולקבל את התוצאה כ-CSV. Aspose.OMR עבור Java הוא ממשק API חזק עבור המשימות הקשורות ל-OMR שלך, שתוכל לחקור בפירוט על ידי ביקור בתיעוד הרשמי. אם יש לך שאלות כלשהן לגבי היבט כלשהו של ה-API, אל תהסס לפנות אלינו ב[פורום התמיכה החינמי] שלנו16.

ראה גם