IronOCR 방법 진행 상황 추적 IronOCR을 사용하여 C#에서 진행 상황 추적을 사용하는 방법 커티스 차우 업데이트됨:1월 10, 2026 다운로드 IronOCR NuGet 다운로드 DLL 다운로드 윈도우 설치 프로그램 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 This article was translated from English: Does it need improvement? Translated View the article in English IronOCR는 OCR 작업을 위한 이벤트 기반 진행 추적 시스템을 제공하여 개발자가 OcrProgress 이벤트를 통해 실시간으로 완료 비율, 처리된 페이지 및 시간 메트릭을 보고하는 읽기 진행 상황을 모니터링할 수 있도록 합니다. 빠른 시작: OcrProgress 구독 및 PDF 읽기 이 예제에서는 IronOCR로 OCR 진행 상황을 모니터링하는 방법을 보여줍니다: 내장된 OcrProgress 이벤트를 구독하고 PDF를 읽을 때 비율, 완료된 페이지 및 총 페이지를 포함한 즉각적인 피드백을 받습니다. 시작하는 데는 몇 줄만 있으면 됩니다. NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronOcr 설치하기 PM > Install-Package IronOcr 다음 코드 조각을 복사하여 실행하세요. var ocr = new IronOcr.IronTesseract(); ocr.OcrProgress += (s, e) => Console.WriteLine(e.ProgressPercent + "% (" + e.PagesComplete + "/" + e.TotalPages + ")"); var result = ocr.Read(new IronOcr.OcrInput().LoadPdf("file.pdf")); 실제 운영 환경에서 테스트할 수 있도록 배포하세요. 무료 체험판으로 오늘 프로젝트에서 IronOCR 사용 시작하기 Free 30 Day Trial ### 최소 워크플로우(5단계) 독서 진행 상황을 추적하는 C# 라이브러리를 다운로드하세요. **`OcrProgress`** 이벤트에 참여하세요 이벤트에서 전달된 인스턴스를 사용하여 진행 상황 정보를 가져옵니다. 진행률(%)과 총 소요 시간을 확인하세요. 시작 시간과 종료 시간, 그리고 총 페이지 수를 조회합니다. OCR 애플리케이션에 진행 상황 추적 기능을 어떻게 구현하나요? OCR을 사용하여 대용량 문서 또는 파일 배치를 처리할 때는 진행 상황 추적이 필수적입니다. OcrProgress 이벤트는 읽기 프로세스에 대한 진행 상황 업데이트를 받기 위해 구독할 수 있습니다. 이 기능은 특히 PDF OCR 작업 이나 여러 페이지로 구성된 TIFF 파일을 다룰 때 유용합니다. 이 이벤트는 OCR 작업의 진행 상황에 대한 정보(시작 시간, 총 페이지 수, 진행률(%), 소요 시간, 종료 시간 등)를 포함하는 인스턴스를 전달합니다. 이 기능은 비동기 작업 과 원활하게 연동되며, 멀티스레딩 과 결합하여 성능을 향상시킬 수 있습니다. The following example uses this document as a sample: "Experiences in Biodiversity Research: A Field Course" by Thea B. 아이오와 주립대학교 게슬러. :path=/static-assets/ocr/content-code-examples/how-to/progress-tracking-progress-tracking.cs using IronOcr; using System; var ocrTesseract = new IronTesseract(); // Subscribe to OcrProgress event ocrTesseract.OcrProgress += (_, ocrProgressEventsArgs) => { Console.WriteLine("Start time: " + ocrProgressEventsArgs.StartTimeUTC.ToString()); Console.WriteLine("Total pages number: " + ocrProgressEventsArgs.TotalPages); Console.WriteLine("Progress(%) | Duration"); Console.WriteLine(" " + ocrProgressEventsArgs.ProgressPercent + "% | " + ocrProgressEventsArgs.Duration.TotalSeconds + "s"); Console.WriteLine("End time: " + ocrProgressEventsArgs.EndTimeUTC.ToString()); Console.WriteLine("----------------------------------------------"); }; using var input = new OcrInput(); input.LoadPdf("Experiences-in-Biodiversity-Research-A-Field-Course.pdf"); // Progress events will fire during the read operation var result = ocrTesseract.Read(input); $vbLabelText $csharpLabel 이벤트 진행 상황에서 어떤 정보를 확인할 수 있나요? OcrProgress 이벤트는 OCR 성능을 모니터링하고 최적화하는 데 도움이 되는 포괄적인 진행 상황 데이터를 제공합니다. 각 속성은 운영 추적에 있어 특정 목적을 수행합니다. ProgressPercent: 완료된 페이지 백분율로 나타나는 OCR 작업 진행 상황으로 0에서 100까지 범위입니다. GUI 애플리케이션에서 진행 막대를 업데이트하는 데 유용합니다. TotalPages: OCR 엔진이 처리하고 있는 총 페이지 수입니다. 예상 완료 시간을 계산하는 데 필수적입니다. PagesComplete: OCR 읽기가 완전히 완료된 페이지 수입니다. 이 수치는 페이지가 처리됨에 따라 점차 증가합니다. Duration: 전체 프로세스 완료에 걸린 시간을 나타내는 OCR 작업의 총 기간입니다. TimeSpan 형식으로 측정되며 이벤트가 발생할 때마다 업데이트됩니다. StartTimeUTC: OCR 작업이 시작된 날짜와 시간이며, 협정 세계시(UTC) 형식으로 표시됩니다. EndTimeUTC: OCR 작업이 100% 완료된 날짜와 시간으로, UTC 형식입니다. 이 속성은 OCR이 진행되는 동안에는 null이며, 프로세스가 완료되면 채워집니다. 고급 진행 상황 추적 구현 실제 운영 환경에서는 더욱 정교한 진행 상황 추적 기능을 구현하십시오. 이 예제에는 오류 처리 및 자세한 로깅 기능이 포함되어 있습니다. using IronOcr; using System; using System.Diagnostics; public class OcrProgressTracker { private readonly IronTesseract _tesseract; private Stopwatch _stopwatch; private int _lastReportedPercent = 0; public OcrProgressTracker() { _tesseract = new IronTesseract(); // Configure for optimal performance _tesseract.Language = OcrLanguage.EnglishBest; _tesseract.Configuration.ReadBarCodes = false; // Subscribe to progress event _tesseract.OcrProgress += OnOcrProgress; } private void OnOcrProgress(object sender, OcrProgressEventsArgs e) { // Only report significant progress changes (every 10%) if (e.ProgressPercent - _lastReportedPercent >= 10 || e.ProgressPercent == 100) { _lastReportedPercent = e.ProgressPercent; Console.WriteLine($"Progress: {e.ProgressPercent}%"); Console.WriteLine($"Pages: {e.PagesComplete}/{e.TotalPages}"); Console.WriteLine($"Elapsed: {e.Duration.TotalSeconds:F1}s"); // Estimate remaining time if (e.ProgressPercent > 0 && e.ProgressPercent < 100) { var estimatedTotal = e.Duration.TotalSeconds / (e.ProgressPercent / 100.0); var remaining = estimatedTotal - e.Duration.TotalSeconds; Console.WriteLine($"Estimated remaining: {remaining:F1}s"); } Console.WriteLine("---"); } } public OcrResult ProcessDocument(string filePath) { _stopwatch = Stopwatch.StartNew(); using var input = new OcrInput(); input.LoadPdf(filePath); // Apply image filters for better accuracy input.Deskew(); input.DeNoise(); var result = _tesseract.Read(input); _stopwatch.Stop(); Console.WriteLine($"Total processing time: {_stopwatch.Elapsed.TotalSeconds:F1}s"); return result; } } using IronOcr; using System; using System.Diagnostics; public class OcrProgressTracker { private readonly IronTesseract _tesseract; private Stopwatch _stopwatch; private int _lastReportedPercent = 0; public OcrProgressTracker() { _tesseract = new IronTesseract(); // Configure for optimal performance _tesseract.Language = OcrLanguage.EnglishBest; _tesseract.Configuration.ReadBarCodes = false; // Subscribe to progress event _tesseract.OcrProgress += OnOcrProgress; } private void OnOcrProgress(object sender, OcrProgressEventsArgs e) { // Only report significant progress changes (every 10%) if (e.ProgressPercent - _lastReportedPercent >= 10 || e.ProgressPercent == 100) { _lastReportedPercent = e.ProgressPercent; Console.WriteLine($"Progress: {e.ProgressPercent}%"); Console.WriteLine($"Pages: {e.PagesComplete}/{e.TotalPages}"); Console.WriteLine($"Elapsed: {e.Duration.TotalSeconds:F1}s"); // Estimate remaining time if (e.ProgressPercent > 0 && e.ProgressPercent < 100) { var estimatedTotal = e.Duration.TotalSeconds / (e.ProgressPercent / 100.0); var remaining = estimatedTotal - e.Duration.TotalSeconds; Console.WriteLine($"Estimated remaining: {remaining:F1}s"); } Console.WriteLine("---"); } } public OcrResult ProcessDocument(string filePath) { _stopwatch = Stopwatch.StartNew(); using var input = new OcrInput(); input.LoadPdf(filePath); // Apply image filters for better accuracy input.Deskew(); input.DeNoise(); var result = _tesseract.Read(input); _stopwatch.Stop(); Console.WriteLine($"Total processing time: {_stopwatch.Elapsed.TotalSeconds:F1}s"); return result; } } $vbLabelText $csharpLabel UI 애플리케이션에 진행 상황 추적 기능 통합하기 Windows Forms 또는 WPF를 사용하여 데스크톱 애플리케이션을 개발할 때 진행 상황 추적은 사용자 경험에 매우 중요합니다. 진행률 이벤트는 UI 요소를 안전하게 업데이트할 수 있습니다. using System; using System.Windows.Forms; using IronOcr; public partial class OcrForm : Form { private IronTesseract _tesseract; private ProgressBar progressBar; private Label statusLabel; public OcrForm() { InitializeComponent(); _tesseract = new IronTesseract(); _tesseract.OcrProgress += UpdateProgress; } private void UpdateProgress(object sender, OcrProgressEventsArgs e) { // Ensure UI updates happen on the main thread if (InvokeRequired) { BeginInvoke(new Action(() => UpdateProgress(sender, e))); return; } progressBar.Value = e.ProgressPercent; statusLabel.Text = $"Processing page {e.PagesComplete} of {e.TotalPages}"; // Show completion message if (e.ProgressPercent == 100) { MessageBox.Show($"OCR completed in {e.Duration.TotalSeconds:F1} seconds"); } } } using System; using System.Windows.Forms; using IronOcr; public partial class OcrForm : Form { private IronTesseract _tesseract; private ProgressBar progressBar; private Label statusLabel; public OcrForm() { InitializeComponent(); _tesseract = new IronTesseract(); _tesseract.OcrProgress += UpdateProgress; } private void UpdateProgress(object sender, OcrProgressEventsArgs e) { // Ensure UI updates happen on the main thread if (InvokeRequired) { BeginInvoke(new Action(() => UpdateProgress(sender, e))); return; } progressBar.Value = e.ProgressPercent; statusLabel.Text = $"Processing page {e.PagesComplete} of {e.TotalPages}"; // Show completion message if (e.ProgressPercent == 100) { MessageBox.Show($"OCR completed in {e.Duration.TotalSeconds:F1} seconds"); } } } $vbLabelText $csharpLabel 대용량 문서 작업 및 시간 초과 방대한 양의 문서를 처리할 때는 진행 상황 추적이 더욱 중요해집니다. 타임아웃 설정 및 중단 토큰 과 함께 사용하면 더욱 효과적인 제어가 가능합니다. using IronOcr; using System; using System.Threading; public async Task ProcessLargeDocumentWithTimeout() { var cts = new CancellationTokenSource(); var tesseract = new IronTesseract(); // Set a timeout of 5 minutes cts.CancelAfter(TimeSpan.FromMinutes(5)); tesseract.OcrProgress += (s, e) => { Console.WriteLine($"Progress: {e.ProgressPercent}% - Page {e.PagesComplete}/{e.TotalPages}"); // Check if we should cancel based on progress if (e.Duration.TotalMinutes > 4 && e.ProgressPercent < 50) { Console.WriteLine("Processing too slow, cancelling..."); cts.Cancel(); } }; try { using var input = new OcrInput(); input.LoadPdf("large-document.pdf"); var result = await Task.Run(() => tesseract.Read(input, cts.Token), cts.Token); Console.WriteLine("OCR completed successfully"); } catch (OperationCanceledException) { Console.WriteLine("OCR operation was cancelled"); } } using IronOcr; using System; using System.Threading; public async Task ProcessLargeDocumentWithTimeout() { var cts = new CancellationTokenSource(); var tesseract = new IronTesseract(); // Set a timeout of 5 minutes cts.CancelAfter(TimeSpan.FromMinutes(5)); tesseract.OcrProgress += (s, e) => { Console.WriteLine($"Progress: {e.ProgressPercent}% - Page {e.PagesComplete}/{e.TotalPages}"); // Check if we should cancel based on progress if (e.Duration.TotalMinutes > 4 && e.ProgressPercent < 50) { Console.WriteLine("Processing too slow, cancelling..."); cts.Cancel(); } }; try { using var input = new OcrInput(); input.LoadPdf("large-document.pdf"); var result = await Task.Run(() => tesseract.Read(input, cts.Token), cts.Token); Console.WriteLine("OCR completed successfully"); } catch (OperationCanceledException) { Console.WriteLine("OCR operation was cancelled"); } } $vbLabelText $csharpLabel 진행 상황 추적을 위한 모범 사례 업데이트 빈도: OcrProgress 이벤트는 처리 중에 자주 발생합니다. 사용자 인터페이스나 로그에 과부하가 걸리지 않도록 업데이트 필터링을 고려해 보세요. 성능 영향 : 진행 상황 추적은 성능 저하가 거의 없지만, 과도한 로깅이나 UI 업데이트는 OCR 프로세스 속도를 저하시킬 수 있습니다. 메모리 관리 : 대용량 TIFF 파일 이나 PDF 파일의 경우, 최적의 성능을 보장하기 위해 진행 상황과 함께 메모리 사용량을 모니터링하십시오. 오류 처리 : OCR 프로세스가 예외로 인해 중단되는 것을 방지하기 위해 진행 이벤트 핸들러에 항상 오류 처리를 포함하십시오. 스레드 안전성: 진행 이벤트에서 UI 요소를 업데이트할 때 Invoke 또는 BeginInvoke 메소드를 사용하여 적절한 스레드 동기화를 보장하십시오. 결론 IronOCR의 진행률 추적 기능은 OCR 작업에 대한 필수적인 가시성을 제공하여 개발자가 사용자에게 처리 상태를 지속적으로 알려주는 반응형 애플리케이션을 만들 수 있도록 지원합니다. OcrProgress 이벤트를 효과적으로 활용함으로써, 단일 페이지 문서에서 광범위한 PDF 파일까지 모든 작업을 자신 있게 처리하는 전문 애플리케이션을 구축할 수 있습니다. 보다 고급 OCR 기술을 활용하려면 이미지 필터 및 결과 객체 에 대한 가이드를 참조하여 OCR 구현을 더욱 향상시키세요. 자주 묻는 질문 OCR 진행 상황을 실시간으로 어떻게 확인할 수 있나요? IronOCR은 OcrProgress 이벤트를 통해 이벤트 기반 진행률 추적 시스템을 제공합니다. IronTesseract 인스턴스에서 이 이벤트를 구독하기만 하면 OCR 작업 중 완료율, 처리된 페이지 수, 시간 측정값 등 실시간 업데이트를 받을 수 있습니다. OcrProgress 이벤트는 어떤 정보를 제공합니까? IronOCR의 OcrProgress 이벤트는 진행률(0~100%), 총 페이지 수, 완료된 페이지 수, 시작 및 종료 시간, 총 소요 시간 등 포괄적인 데이터를 제공합니다. 이 정보는 GUI 애플리케이션의 진행률 표시줄을 업데이트하고 OCR 성능을 모니터링하는 데 특히 유용합니다. 비동기 OCR 작업에서 진행률 추적 기능을 사용할 수 있나요? 네, IronOCR의 진행률 추적 기능은 비동기 작업과 완벽하게 호환됩니다. 비동기 처리 및 멀티스레딩과 결합하여 성능을 향상시키면서도 OcrProgress 이벤트를 통해 실시간 진행률 업데이트를 받을 수 있습니다. PDF OCR 작업의 간단한 진행 상황 추적기를 어떻게 구현할 수 있을까요? IronOCR을 사용하여 기본적인 진행률 추적을 구현하려면 IronTesseract 인스턴스를 생성하고 람다 표현식 또는 이벤트 핸들러를 사용하여 OcrProgress 이벤트에 구독한 다음 PDF 파일을 Read 메서드에 전달합니다. 그러면 이벤트가 주기적으로 발생하여 완료율과 처리된 페이지 수 정보를 제공합니다. 대용량 문서 처리에서 진행 상황 추적은 유용한가요? IronOCR로 대용량 문서나 파일 배치를 처리할 때는 진행 상황 추적이 필수적입니다. 특히 PDF OCR 작업이나 여러 페이지로 구성된 TIFF 파일의 경우, 처리 상태를 모니터링하고 완료 시간을 예측하며 시간이 오래 걸리는 작업 중에 사용자에게 피드백을 제공하는 데 매우 유용합니다. 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다. 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다. 시작할 준비 되셨나요? Nuget 다운로드 5,525,971 | 버전: 2026.3 방금 출시되었습니다 무료 체험 시작하기 NuGet 무료 다운로드 총 다운로드 수: 5,525,971 라이선스 보기 아직도 스크롤하고 계신가요? 빠른 증거를 원하시나요? PM > Install-Package IronOcr 샘플을 실행하세요 이미지가 검색 가능한 텍스트로 바뀌는 것을 확인해 보세요. NuGet 무료 다운로드 총 다운로드 수: 5,525,971 라이선스 보기