IRONSOFTWAREHOME

IronOCR을 사용하여 C#에서 진행 상황 추적을 사용하는 방법

Curtis Chau
Curtis Chau
Updated: 2026년 6월 29일

IronOCR는 OCR 작업을 위한 이벤트 기반 진행 상황 추적 시스템을 제공하여, 실시간으로 완료 백분율, 처리된 페이지, 시간 지표를 보고하는 OcrProgress 이벤트를 통해 읽기 진행 상황을 모니터링할 수 있습니다.

빠른 시작: OcrProgress 구독 및 PDF 읽기

이 예제는 IronOCR로 OCR 진행 상황을 모니터링하는 방법을 보여줍니다. 기본 내장 OcrProgress 이벤트를 구독하고 백분율, 완료된 페이지, 총 페이지 등을 포함한 즉각적인 피드백을 받습니다. 시작하는 데는 몇 줄만 있으면 됩니다.

  1. 1Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. 2다음 코드 조각을 복사하여 실행하세요.

    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"));
    C#
  3. 3실제 운영 환경에서 테스트할 수 있도록 배포하세요.

    무료 체험판으로 오늘 프로젝트에서 IronOCR 사용 시작하기
    arrow pointer

OCR 애플리케이션에 진행 상황 추적 기능을 어떻게 구현하나요?

OCR을 사용하여 대용량 문서 또는 파일 배치를 처리할 때는 진행 상황 추적이 필수적입니다. OcrProgress 이벤트를 구독하여 읽기 과정에 대한 진행 상황 업데이트를 받을 수 있습니다. 이 기능은 특히 PDF OCR 작업 이나 여러 페이지로 구성된 TIFF 파일을 다룰 때 유용합니다.

이 이벤트는 OCR 작업의 진행 상황에 대한 정보(시작 시간, 총 페이지 수, 진행률(%), 소요 시간, 종료 시간 등)를 포함하는 인스턴스를 전달합니다. 이 기능은 비동기 작업 과 원활하게 연동되며, 멀티스레딩 과 결합하여 성능을 향상시킬 수 있습니다.

다음 예시에서는 Thea B.의 " 생물다양성 연구 경험: 현장 학습 " 문서를 샘플로 사용합니다. 아이오와 주립대학교 게슬러.

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);
콘솔 출력에는 타임스탬프 및 소요 시간 데이터와 함께 95%에서 100% 완료까지의 진행 상황이 표시됩니다.

이벤트 진행 상황에서 어떤 정보를 확인할 수 있나요?

OcrProgress 이벤트는 OCR 성능을 모니터링하고 최적화하는 데 도움이 되는 종합적인 진행 데이터을 제공합니다. 각 속성은 운영 추적에 있어 특정 목적을 수행합니다.

  • ProgressPercent: OCR 작업의 진행 상황, 완료된 페이지의 백분율로, 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;
    }
}

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

진행 상황 추적을 위한 모범 사례

  1. 업데이트 빈도: OcrProgress 이벤트는 처리 중 자주 발생합니다. 사용자 인터페이스나 로그에 과부하가 걸리지 않도록 업데이트 필터링을 고려해 보세요.

  2. 성능 영향 : 진행 상황 추적은 성능 저하가 거의 없지만, 과도한 로깅이나 UI 업데이트는 OCR 프로세스 속도를 저하시킬 수 있습니다.

  3. 메모리 관리 : 대용량 TIFF 파일 이나 PDF 파일의 경우, 최적의 성능을 보장하기 위해 진행 상황과 함께 메모리 사용량을 모니터링하십시오.

  4. 오류 처리 : OCR 프로세스가 예외로 인해 중단되는 것을 방지하기 위해 진행 이벤트 핸들러에 항상 오류 처리를 포함하십시오.

  5. 스레드 안전성: 진행 이벤트에서 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 파일의 경우, 처리 상태를 모니터링하고 완료 시간을 예측하며 시간이 오래 걸리는 작업 중에 사용자에게 피드백을 제공하는 데 매우 유용합니다.

Is there a recommended frequency for OcrProgress updates?

While the OcrProgress event fires frequently, it's recommended to filter updates to avoid overwhelming your UI or logs, which can impact performance.

How can IronOCR's progress tracking improve the processing of large documents?

When dealing with large documents, IronOCR's progress tracking allows for better control with timeout settings and abort tokens, providing a mechanism to handle slow processing efficiently.

Does progress tracking in IronOCR affect performance?

Progress tracking in IronOCR has minimal performance overhead, although excessive logging or UI updates based on progress events may slow down the overall OCR process.

What best practices should I follow for using progress tracking in IronOCR?

Best practices include managing update frequencies, ensuring thread safety when updating UI elements, and incorporating error handling to maintain smooth OCR operations.

Can IronOCR be used for tracking progress in multi-threaded environments?

Yes, IronOCR's progress tracking can be combined with multi-threading to enhance OCR performance, handling multiple documents or large files more efficiently.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

...
더 읽어보기

시작할 준비 되셨나요?

Nuget Downloads 6,236,385버전:2026.9방금 출시

무료로 받기

30일 체험 키를 즉시 받으세요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.
bullet_test워터마크 없이
프로덕션에서 테스트
bullet_calendar30일 완전한
기능의 제품
bullet_support체험 기간 동안
24/5 기술 지원
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.
PDF용 C# NuGet 라이브러리
NuGet을 사용하여 설치하세요

버전: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택합니다.
  2. 찾아보기를 선택하고 "IronOCR"을 검색하세요.
  3. 패키지를 선택하고 설치하세요
C# PDF DLL
DLL 다운로드

버전: 2026.9

또는 여기에서 Windows 설치 프로그램을 다운로드하십시오.

  1. IronOCR을 다운로드하고 솔루션 디렉터리 내의 ~/Libs와 같은 위치에 압축을 푸세요.
  2. Visual Studio 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭합니다. 찾아보기를 선택하고 "IronOCR.dll"을 선택합니다.

라이선스 가격은 749달러 부터 시작합니다.

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.