C#을 사용하여 OMR 수행 및 데이터 추출

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

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

OMR을 수행하고 데이터를 추출하는 C# OMR API

OMR 작업을 수행하고 이미지에서 데이터를 내보내기 위해 Aspose.OMR for .NET API를 사용합니다. 답안지, 테스트, MCQ 논문, 퀴즈, 피드백 양식, 설문조사 및 투표용지를 디자인, 생성 및 인식할 수 있습니다. API의 DLL을 다운로드하거나 NuGet을 사용하여 설치하십시오.

PM> Install-Package Aspose.OMR

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

이미지에 대해 OMR 작업을 수행하려면 준비된 OMR 템플릿(.omr)과 OMR을 수행할 이미지(사용자가 채운 양식/시트)가 필요합니다. 다음 단계에 따라 이미지에 OMR 작업을 수행하고 데이터를 추출할 수 있습니다.

  1. 먼저 OmrEngine 클래스의 인스턴스를 만듭니다.
  2. 다음으로 GetTemplateProcessor() 메서드를 호출하고 TemplateProcessor 클래스 객체를 초기화합니다. OMR 템플릿 파일 경로를 인수로 사용합니다.
  3. 그런 다음 이미지 경로를 인수로 사용하여 RecognizeImage() 메서드를 호출하여 RecognitionResult 객체를 가져옵니다.
  4. 그 후 GetCsv() 메소드를 사용하여 CSV 문자열로 인식 결과를 가져옵니다.
  5. 마지막으로 CSV 결과를 로컬 디스크에 CSV 파일로 저장합니다.

다음 코드 샘플은 이미지에 대해 OMR을 수행하고 C#을 사용하여 CSV 형식으로 데이터를 추출하는 방법을 보여줍니다.

// 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을 수행하고 이미지에서 데이터를 추출합니다.

위의 코드 예제에서 사용된 OMR 템플릿은 여기에서 다운로드할 수 있습니다.

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

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

다음 코드 샘플은 여러 이미지에 대해 OMR을 수행하고 C#을 사용하여 CSV 형식으로 데이터를 추출하는 방법을 보여줍니다.

// 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);
}

API는 OMR 작동 중에 이미지에서 사용할 수 있는 바코드를 감지하고 인식하는 기능도 제공합니다. 이것은 OMR 작업의 기본 기능입니다. 앞에서 언급한 단계에 따라 OMR 작업을 수행하고 바코드를 인식할 수 있습니다.

임계값이 있는 OMR 결과 가져오기

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

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

// 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 연산

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

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

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

// 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 작업을 수행하고 C#을 사용하여 CSV 형식으로 데이터를 추출합니다.
  • 이미지에 OMR을 수행하는 동안 임계값 설정을 적용합니다.
  • 프로그래밍 방식으로 자동차 프로세스에서 OMR 결과를 다시 계산합니다.

또한 문서를 사용하여 .NET API용 Aspose.OMR에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼을 통해 언제든지 문의해 주십시오.

또한보십시오