Java를 사용하여 OMR 수행 및 데이터 추출

OMR(Optical Mark Recognition)은 특별한 유형의 문서 형식에 사람이 표시한 데이터를 읽고 캡처할 수 있는 전자 프로세스입니다. 이 문서 양식은 사용자가 채운 거품 또는 정사각형 입력으로 구성된 테스트 또는 설문 조사가 될 수 있습니다. 이러한 설문 조사 양식, 설문지 또는 테스트 시트의 스캔 이미지에 대해 OMR 작업을 쉽게 수행하고 프로그래밍 방식으로 사용자 입력을 읽을 수 있습니다. 이 기사에서는 Java에서 OMR을 수행하고 이미지에서 데이터를 추출하는 방법을 배웁니다.

이 기사에서는 다음 주제를 다룹니다.

  1. 이미지에서 데이터를 추출하는 Java OMR API
  2. 이미지에서 데이터 추출
  3. OMR 수행 및 여러 이미지에서 데이터 추출
  4. 임계값이 있는 OMR 데이터 추출
  5. 재계산하여 OMR 데이터 추출

이미지에서 데이터를 추출하는 Java OMR API

OMR 작업을 수행하고 지원되는 이미지 형식에서 데이터를 추출하기 위해 Aspose.OMR for Java API를 사용할 것입니다. 답안지, 테스트, MCQ 논문, 퀴즈, 피드백 양식, 설문조사 및 투표용지를 디자인, 생성 및 인식할 수 있습니다.

API의 OmrEngine 클래스는 템플릿 생성 및 이미지 처리를 처리합니다. 이 클래스의 getTemplateProcessor(String templatePath) 메소드는 템플릿 및 이미지 처리를 위한 TemplateProcessor 인스턴스를 생성합니다. recognizeImage(String imagePath) 메서드를 사용하여 이미지를 인식할 수 있습니다. 모든 OMR 요소를 RecognitionResult 클래스 인스턴스로 반환합니다. 이 클래스의 getCsv() 메소드는 인식 결과와 함께 CSV 문자열을 생성합니다. recalculate(RecognitionResult result, int recognitionThreshold) 메서드는 미세 조정된 매개변수를 사용하여 인식 결과를 업데이트합니다.

API의 JAR을 다운로드하거나 Maven 기반 Java 애플리케이션에서 다음 pom.xml 구성을 추가하십시오.

<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. 그런 다음 이미지 경로를 인수로 사용하여 recognizeImage() 메서드를 호출하여 RecognitionResult 객체를 가져옵니다.
  4. 그런 다음 getCsv() 메서드를 사용하여 CSV 문자열로 인식 결과를 가져옵니다.
  5. 마지막으로 CSV 결과를 로컬 디스크에 CSV 파일로 저장합니다.

다음 코드 샘플은 Java를 사용하여 CSV 형식의 이미지에서 OMR 데이터를 추출하는 방법을 보여줍니다.

// 이 코드 예제는 이미지에서 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의 이미지에서 데이터 추출

Java의 이미지에서 OMR 및 추출 데이터를 수행합니다.

이 블로그 게시물에 사용된 OMR 템플릿을 다운로드하십시오.

OMR 수행 및 여러 이미지에서 데이터 추출

앞에서 언급한 단계에 따라 여러 이미지에 대해 OMR 작업을 수행하고 각 이미지에 대해 별도의 CSV 파일로 데이터를 추출할 수 있습니다. 그러나 모든 이미지에 대해 3, 4, 5단계를 하나씩 반복해야 합니다.

다음 코드 샘플은 Java를 사용하여 여러 이미지에서 OMR 데이터를 추출하는 방법을 보여줍니다.

// 이 코드 예제는 여러 이미지에 대해 OMR을 수행하고 데이터를 추출하는 방법을 보여줍니다.
// 작업 폴더 경로
String folderPath = "C:\\Files\\OMR\\";

// OMR 템플릿 파일 경로
String templatePath = folderPath + "Sheet.omr";

// 이미지 파일 경로
String[] UserImages = new String[] { "Sheet1.png", "Sheet2.png" };

// OMR 엔진 초기화
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);
}

Java에서 임계값이 있는 OMR 데이터 추출

요구 사항에 따라 임계값(0~100)으로 OMR 작업을 수행할 수 있습니다. 임계값 값이 높을수록 API가 답변을 강조 표시하는 데 더 엄격해집니다. 임계값으로 OMR을 수행하려면 앞서 언급한 단계를 따르십시오. 하지만 3단계에서 오버로드된 recognizeImage(string, int32) 메서드를 호출하기만 하면 됩니다. 이 메서드는 이미지 파일 경로와 임계값을 인수로 사용합니다.

다음 코드 샘플은 Java를 사용하여 임계값으로 OMR을 수행하는 방법을 보여줍니다.

// 이 코드 예제는 Rashhold로 OMR을 수행하고 이미지에서 데이터를 추출하는 방법을 보여줍니다.
// 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);

Java에서 재계산하여 OMR 데이터 추출

어떤 경우에는 다른 임계값으로 OMR 결과를 다시 계산해야 할 수도 있습니다. 이를 위해 TemplateProcessor.recalculate() 메서드를 사용하여 자동으로 다시 계산하도록 API를 구성할 수 있습니다. 원하는 결과를 얻기 위해 임계값 설정을 변경하여 이미지를 여러 번 처리할 수 있습니다. 다음 단계에 따라 재계산하여 OMR 연산을 수행할 수 있습니다.

  1. 먼저 OmrEngine 클래스의 인스턴스를 만듭니다.
  2. 다음으로 getTemplateProcessor() 메소드를 호출하고 TemplateProcessor 클래스 객체를 초기화한다. OMR 템플릿 파일 경로를 인수로 사용합니다.
  3. 그런 다음 이미지 경로를 인수로 사용하여 recognizeImage() 메서드를 호출하여 RecognitionResult 객체를 가져옵니다.
  4. 다음으로 getCsv() 메서드를 사용하여 인식 결과를 CSV 문자열로 내보냅니다.
  5. 그런 다음 CSV 결과를 로컬 디스크에 CSV 파일로 저장합니다.
  6. 다음으로 recalculate() 메서드를 호출합니다. RecognitionResult 개체와 임계값을 인수로 사용합니다.
  7. 그런 다음 getCsv() 메서드를 사용하여 인식 결과를 CSV 문자열로 내보냅니다.
  8. 마지막으로 CSV 결과를 로컬 디스크에 CSV 파일로 저장합니다.

다음 코드 샘플은 Java를 사용하여 재계산 방법으로 OMR을 수행하는 방법을 보여줍니다.

// 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.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을 수행하는 동안 임계값 설정을 적용합니다.
  • Java를 사용하여 자동차 프로세스에서 OMR 결과를 다시 계산합니다.

또한 Java의 이미지에서 데이터를 추출하고 문서를 사용하여 Java API용 Aspose.OMR에 대해 자세히 알아볼 수 있습니다. 모호한 점이 있는 경우 무료 지원 포럼에서 언제든지 문의해 주십시오.

또한보십시오