OMR(광학 표시 인식)을 사용하면 특수한 유형의 문서 형식에 표시된 데이터를 읽고 캡처할 수 있습니다. 이 문서 양식은 사용자가 채운 거품 또는 정사각형 입력으로 구성된 테스트 또는 설문 조사가 될 수 있습니다. 이러한 설문 조사 양식 또는 테스트 시트의 스캔 이미지에 대해 OMR 작업을 쉽게 수행하고 .NET 응용 프로그램에서 프로그래밍 방식으로 사용자 입력을 읽을 수 있습니다. 이 기사에서는 C#을 사용하여 OMR을 수행하고 데이터를 추출하는 방법을 배웁니다.
이 기사에서는 다음 주제를 다룹니다.
- OMR을 수행하고 데이터를 추출하는 C# OMR API
- OMR 수행 및 이미지에서 데이터 추출
- OMR 수행 및 여러 이미지에서 데이터 추출
- 임계값이 있는 OMR 결과 가져오기
- 재계산을 통한 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 작업을 수행하고 데이터를 추출할 수 있습니다.
- 먼저 OmrEngine 클래스의 인스턴스를 만듭니다.
- 다음으로 GetTemplateProcessor() 메서드를 호출하고 TemplateProcessor 클래스 객체를 초기화합니다. OMR 템플릿 파일 경로를 인수로 사용합니다.
- 그런 다음 이미지 경로를 인수로 사용하여 RecognizeImage() 메서드를 호출하여 RecognitionResult 객체를 가져옵니다.
- 그 후 GetCsv() 메소드를 사용하여 CSV 문자열로 인식 결과를 가져옵니다.
- 마지막으로 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 작업을 수행하고 각 이미지에 대해 별도의 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 연산을 수행할 수 있습니다.
- 먼저 OmrEngine 클래스의 인스턴스를 만듭니다.
- 다음으로 GetTemplateProcessor() 메서드를 호출하고 TemplateProcessor 클래스 객체를 초기화합니다. OMR 템플릿 파일 경로를 인수로 사용합니다.
- 그런 다음 Stopwatch 객체를 초기화하고 타이머를 시작합니다.
- 그런 다음 이미지 경로를 인수로 사용하여 RecognizeImage() 메서드를 호출하여 RecognitionResult 개체를 가져옵니다.
- 그런 다음 타이머를 중지하고 GetCsv() 메서드를 사용하여 인식 결과를 CSV 문자열로 내보냅니다.
- 그런 다음 CSV 결과를 로컬 디스크에 CSV 파일로 저장합니다.
- 그런 다음 Restart() 메서드를 사용하여 타이머를 다시 시작합니다.
- 다음으로 Recalculate() 메서드를 호출합니다. RecognitionResult 개체와 임계값을 인수로 사용합니다.
- 그런 다음 타이머를 중지하고 GetCsv() 메서드를 사용하여 인식 결과를 CSV 문자열로 내보냅니다.
- 마지막으로 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에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼을 통해 언제든지 문의해 주십시오.