C#에서 멀티 프레임 페이지 GIF 및 TIFF 파일을 읽는 방법 | IronOCR

C#에서 여러 프레임/페이지로 구성된 TIFF 및 GIF 파일을 읽는 방법

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCR은 C#의 OcrImageInput 클래스를 사용하여 여러 프레임의 TIFF 및 GIF 파일에서 텍스트를 읽을 수 있으며, 단일 Read 메서드 호출로 복잡한 설정 없이 단일 및 다중 페이지 문서를 지원합니다.

TIFF(Tagged Image File Format)는 고화질 이미지를 위한 포맷입니다. 무손실 압축을 지원하므로 스캔 문서 및 전문 사진에 적합합니다.

GIF(그래픽 교환 형식)는 간단한 웹 이미지와 애니메이션에 사용됩니다. 이 소프트웨어는 무손실 및 손실 압축을 모두 지원하며 단일 파일에 애니메이션을 포함할 수 있습니다.

빠른 시작: 다중 프레임 TIFF 또는 GIF 파일 OCR

IronOCR을 사용하여 OcrImageInputRead 호출로 다중 페이지 TIFF 또는 애니메이션 GIF에서 텍스트를 읽어보세요.

  1. NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronOcr 설치하기

    PM > Install-Package IronOcr
  2. 다음 코드 조각을 복사하여 실행하세요.

    using IronOcr;
    var result = new IronTesseract().Read(new OcrImageInput("Potter.tiff"));
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

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

    arrow pointer


단일 프레임 또는 다중 프레임 TIFF 파일을 어떻게 읽나요?

OCR을 수행하려면 IronTesseract 클래스를 인스턴스화하십시오. using 문을 사용하여 OcrImageInput 객체를 생성하십시오. 이 생성자는 단일 프레임 및 다중 프레임 TIFF 및 TIF 형식을 모두 지원합니다. 가져온 TIFF 파일에서 OCR을 수행하기 위해 Read 메서드를 적용하십시오.

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-read-tiff.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Import TIFF/TIF
using var imageInput = new OcrImageInput("Potter.tiff");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel
Windows 사진 뷰어와 Visual Studio에서 문서 내용을 보여주는 예시입니다. (TIFF 파일 처리 데모는 아닙니다.)

IronOCR은 왜 멀티프레임 TIFF 파일을 자동으로 처리할까요?

IronOCR은 TIFF 파일 내의 모든 프레임을 자동으로 감지하고 처리합니다. 다중 페이지 TIFF 문서를 로드할 때, 라이브러리는 각 프레임을 반복하면서 각 페이지에 OCR을 적용하고 결과를 단일 OcrResult 객체로 통합합니다. 이러한 자동 처리는 복잡한 프레임별 처리 로직을 제거합니다. 여러 페이지로 구성된 TIFF 파일의 예시는 다중 페이지 TIFF OCR 튜토리얼을 참조하세요.

성능이 중요한 애플리케이션의 경우, 처리 속도를 최적화하기 위해 고속 OCR 구성을 구현하십시오. 이 라이브러리의 멀티스레드 Tesseract OCR 기능은 효율적인 일괄 처리를 보장합니다.

여러 페이지로 구성된 TIFF 문서를 읽을 때 어떤 일이 발생하나요?

IronOCR은 여러 페이지로 구성된 TIFF 문서를 처리할 때 다음과 같은 기능을 제공합니다.

  1. 모든 프레임을 메모리에 효율적으로 로드합니다 .
  2. 설정된 경우 각 프레임에 전처리 작업을 적용합니다.
  3. 페이지들을 순차적으로 OCR 처리합니다.
  4. 페이지 순서를 유지하면서 결과를 집계합니다.

개별 페이지 검색 결과 보기:

using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

// Import multi-page TIFF
using var imageInput = new OcrImageInput("multipage-document.tiff");

// Perform OCR
OcrResult result = ocrTesseract.Read(imageInput);

// Access results by page
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}:");
    Console.WriteLine(page.Text);
    Console.WriteLine("---");
}
using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

// Import multi-page TIFF
using var imageInput = new OcrImageInput("multipage-document.tiff");

// Perform OCR
OcrResult result = ocrTesseract.Read(imageInput);

// Access results by page
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}:");
    Console.WriteLine(page.Text);
    Console.WriteLine("---");
}
$vbLabelText   $csharpLabel

장시간 작업의 경우, 취소 기능을 위해 중단 토큰을 구현하십시오.

TIFF 파일의 각 프레임을 개별적으로 처리하려면 어떻게 해야 하나요?

메모리 제약 조건이나 특정 페이지에 서로 다른 이미지 보정 필터를 적용하기 위해 프레임을 개별적으로 처리합니다.

using IronOcr;
using System.Drawing;

// Configure OCR for individual frame processing
IronTesseract ocrTesseract = new IronTesseract();

// Load and split TIFF frames
using var multiFrameInput = new OcrImageInput("document.tiff");

// Process specific pages (0-indexed)
var pageIndices = new[] { 0, 2, 4 }; // Process pages 1, 3, and 5 only

foreach (int pageIndex in pageIndices)
{
    using var pageInput = new OcrImageInput("document.tiff", PageIndices: new[] { pageIndex });

    // Apply page-specific preprocessing if needed
    pageInput.DeNoise();
    pageInput.Deskew();

    var pageResult = ocrTesseract.Read(pageInput);
    Console.WriteLine($"Page {pageIndex + 1} text: {pageResult.Text}");
}
using IronOcr;
using System.Drawing;

// Configure OCR for individual frame processing
IronTesseract ocrTesseract = new IronTesseract();

// Load and split TIFF frames
using var multiFrameInput = new OcrImageInput("document.tiff");

// Process specific pages (0-indexed)
var pageIndices = new[] { 0, 2, 4 }; // Process pages 1, 3, and 5 only

foreach (int pageIndex in pageIndices)
{
    using var pageInput = new OcrImageInput("document.tiff", PageIndices: new[] { pageIndex });

    // Apply page-specific preprocessing if needed
    pageInput.DeNoise();
    pageInput.Deskew();

    var pageResult = ocrTesseract.Read(pageInput);
    Console.WriteLine($"Page {pageIndex + 1} text: {pageResult.Text}");
}
$vbLabelText   $csharpLabel

고급 설정에 대해서는 Tesseract 상세 설정 가이드를 참조하십시오.

GIF 파일을 OCR용으로 읽으려면 어떻게 해야 하나요?

OcrImageInput을 구성할 때 GIF 파일 경로를 지정하십시오. 생성자는 이미지를 가져옵니다. 애니메이션 GIF의 경우, IronOCR은 모든 프레임을 추출하여 개별 이미지로 처리합니다.

:path=/static-assets/ocr/content-code-examples/how-to/input-tiff-gif-read-gif.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Import GIF
using var imageInput = new OcrImageInput("Potter.gif");
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel

초보자를 위해 저희의 간단한 C# OCR Tesseract 튜토리얼에서는 기본적인 OCR 작업에 대해 다룹니다.

OCR이 애니메이션 GIF에서 작동하는 이유는 무엇일까요?

애니메이션 GIF는 여러 개의 이미지 프레임으로 구성됩니다. IronOCR은 각 프레임을 추출하여 개별적으로 처리합니다. 다음과 같은 경우에 효과적입니다:

  • 화면 녹화 영상이 GIF 파일로 저장됩니다
  • 애니메이션 튜토리얼 과 텍스트 설명
  • GIF 형식의 단계별 문서화
  • 기존 시스템에서 보고서를 GIF 파일로 내보내기

각 프레임의 텍스트를 캡처하여 시간 순서대로 정리합니다. 이미지 방향에 문제가 있는 경우 IronOCR은 이미지 방향을 자동으로 수정할 수 있습니다.

OCR에 GIF 형식을 언제 사용해야 할까요?

GIF는 색상 팔레트가 제한적(256색)이지만 다음과 같은 곳에서 흔히 사용됩니다.

  1. 웹 콘텐츠 : 온라인 튜토리얼 및 문서
  2. 기존 내보내기 : GIF 형식을 사용하는 이전 애플리케이션
  3. 화면 캡처 : 스크린샷 도구의 기본 형식이 GIF입니다.
  4. 작은 파일 크기 : 저장 공간이 제한적일 때

최상의 결과를 얻으려면 IronOCR의 DPI 설정을 사용하여 GIF를 최적화하세요. OCR 이미지 최적화 필터를 적용하여 인식률을 향상시키세요.

GIF OCR에서 흔히 발생하는 문제는 무엇인가요?

GIF 파일은 다음과 같은 문제점을 가지고 있습니다.

  1. 색상 제한 : 256색 제한으로 인해 텍스트 선명도가 저하됩니다.
  2. 압축 아티팩트 : 디더링은 인식에 방해가 됩니다.
  3. 저해상도 : 일반적으로 72~96 DPI로 저장됩니다.

전처리 필터를 적용합니다:

using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

// Import GIF with preprocessing
using var imageInput = new OcrImageInput("low-quality.gif");

// Apply filters to improve quality
imageInput.ToGrayScale();      // Convert to grayscale
imageInput.Contrast(1.5);       // Increase contrast
imageInput.DeNoise();           // Remove noise
imageInput.EnhanceResolution(); // Upscale for better OCR

// Perform OCR with enhanced image
OcrResult result = ocrTesseract.Read(imageInput);
using IronOcr;

IronTesseract ocrTesseract = new IronTesseract();

// Import GIF with preprocessing
using var imageInput = new OcrImageInput("low-quality.gif");

// Apply filters to improve quality
imageInput.ToGrayScale();      // Convert to grayscale
imageInput.Contrast(1.5);       // Increase contrast
imageInput.DeNoise();           // Remove noise
imageInput.EnhanceResolution(); // Upscale for better OCR

// Perform OCR with enhanced image
OcrResult result = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel

품질이 낮은 이미지의 경우, Tesseract를 사용하여 스캔 품질을 개선하는 방법을 참조하십시오.

성능 향상을 위해 스캔 영역을 지정하는 방법은 무엇입니까?

OCR을 위한 특정 영역을 정의하려면 CropRectangleOcrImageInput을 구성할 때 포함하십시오. 이는 대용량 문서 처리 성능을 향상시킵니다. OCR 영역에 대한 가이드를 참조하세요.

:path=/static-assets/ocr/content-code-examples/how-to/input-images-read-specific-region.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Specify crop region
Rectangle scanRegion = new Rectangle(800, 200, 900, 400);

// Add image
using var imageInput = new OcrImageInput("Potter.tiff", ContentArea: scanRegion);
// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output the result to console
Console.WriteLine(ocrResult.Text);
$vbLabelText   $csharpLabel

자르기가 OCR 성능을 향상시키는 이유는 무엇일까요?

사진 뷰어에서 TIFF 문서를 보고 디버그 콘솔에 OCR 프로세스 실행이 완료된 것을 표시합니다.

작물 재배는 다음과 같은 방식으로 성능을 향상시킵니다.

  1. 처리 영역 감소 : 픽셀 수가 적을수록 실행 속도가 빨라집니다.
  2. 특정 영역 집중 탐지 : OCR은 특정 영역에 최적화됩니다.
  3. 메모리 효율성 : 작업 세트 크기가 작아지면 RAM 사용량이 줄어듭니다.
  4. 소음 제거 : 관련 없는 영역을 제외합니다.

특정 영역을 처리하는 속도는 전체 페이지를 처리하는 속도보다 5~10배 빠를 수 있습니다. 실시간 모니터링을 위해 진행 상황 추적 기능을 구현하십시오.

지역별 OCR은 언제 사용해야 할까요?

다음과 같은 경우에 지역별 OCR을 사용하세요:

  • 양식 처리 : 특정 필드 추출
  • 머리글/바닥글 : 문서 메타데이터에 액세스
  • : 데이터 표에 집중
  • 일괄 처리 : 유사한 문서 워크플로

폼 필드 예시:

using IronOcr;
using IronSoftware.Drawing;

// Define regions for form fields
var nameFieldRegion = new Rectangle(100, 50, 300, 40);
var dateFieldRegion = new Rectangle(100, 100, 200, 40);
var amountFieldRegion = new Rectangle(100, 150, 150, 40);

// Create OCR instance
IronTesseract ocr = new IronTesseract();

// Extract from each region
using var tiffInput = new OcrImageInput("form.tiff");

// Process each field
var name = ocr.Read(new OcrImageInput("form.tiff", ContentArea: nameFieldRegion)).Text.Trim();
var date = ocr.Read(new OcrImageInput("form.tiff", ContentArea: dateFieldRegion)).Text.Trim();
var amount = ocr.Read(new OcrImageInput("form.tiff", ContentArea: amountFieldRegion)).Text.Trim();

Console.WriteLine($"Name: {name}");
Console.WriteLine($"Date: {date}");
Console.WriteLine($"Amount: {amount}");
using IronOcr;
using IronSoftware.Drawing;

// Define regions for form fields
var nameFieldRegion = new Rectangle(100, 50, 300, 40);
var dateFieldRegion = new Rectangle(100, 100, 200, 40);
var amountFieldRegion = new Rectangle(100, 150, 150, 40);

// Create OCR instance
IronTesseract ocr = new IronTesseract();

// Extract from each region
using var tiffInput = new OcrImageInput("form.tiff");

// Process each field
var name = ocr.Read(new OcrImageInput("form.tiff", ContentArea: nameFieldRegion)).Text.Trim();
var date = ocr.Read(new OcrImageInput("form.tiff", ContentArea: dateFieldRegion)).Text.Trim();
var amount = ocr.Read(new OcrImageInput("form.tiff", ContentArea: amountFieldRegion)).Text.Trim();

Console.WriteLine($"Name: {name}");
Console.WriteLine($"Date: {date}");
Console.WriteLine($"Amount: {amount}");
$vbLabelText   $csharpLabel

정확한 자르기 사각형을 계산하는 방법은 무엇인가요?

다음 공식을 사용하여 자르기 영역을 계산합니다.

  1. 육안 검사 : 이미지 편집기를 사용하여 좌표를 확인합니다.
  2. 프로그램 방식 감지 : IronOCR의 이미지 분석 기능을 활용하세요.
  3. 템플릿 : 유사한 문서에 대해 영역을 한 번만 정의합니다.

강조 표시 기능을 사용하여 디버깅하고 시각화하세요.

using IronOcr;
using IronSoftware.Drawing;

// Test different regions to find optimal coordinates
var testRegions = new[] 
{ 
    new Rectangle(100, 100, 200, 50), 
    new Rectangle(100, 160, 200, 50), 
    new Rectangle(100, 220, 200, 50) 
};

IronTesseract ocr = new IronTesseract();

foreach (var region in testRegions)
{
    using var input = new OcrImageInput("document.tiff", ContentArea: region);
    var result = ocr.Read(input);

    // Save highlighted region for visual verification
    result.SaveAsHighlightedImage($"region_{region.X}_{region.Y}.png");
}
using IronOcr;
using IronSoftware.Drawing;

// Test different regions to find optimal coordinates
var testRegions = new[] 
{ 
    new Rectangle(100, 100, 200, 50), 
    new Rectangle(100, 160, 200, 50), 
    new Rectangle(100, 220, 200, 50) 
};

IronTesseract ocr = new IronTesseract();

foreach (var region in testRegions)
{
    using var input = new OcrImageInput("document.tiff", ContentArea: region);
    var result = ocr.Read(input);

    // Save highlighted region for visual verification
    result.SaveAsHighlightedImage($"region_{region.X}_{region.Y}.png");
}
$vbLabelText   $csharpLabel

복잡한 문서의 경우 IronOCR의 결과 객체를 사용하여 텍스트 위치를 식별하고 동적 자르기 영역을 생성할 수 있습니다. 까다로운 이미지의 경우, OCR 이미지 DPI 최적화 가이드를 통해 최적의 해상도를 얻을 수 있습니다.

IronOCR은 프레임 추출 및 처리를 자동으로 수행하는 간소화된 API를 제공합니다. 단일 페이지 문서를 처리하든 복잡한 다중 프레임 파일을 처리하든, 기업 문서 워크플로에는 동일한 간단한 구문이 적용됩니다.

자주 묻는 질문

C#에서 여러 프레임으로 구성된 TIFF 파일에서 텍스트를 추출하는 방법은 무엇인가요?

IronOCR은 OcrImageInput 클래스를 사용하여 다중 프레임 TIFF 파일을 읽는 간단한 솔루션을 제공합니다. IronTesseract 인스턴스를 생성하고 OcrImageInput을 매개변수로 사용하여 Read 메서드를 호출하고 TIFF 파일 경로를 전달하기만 하면 됩니다. 라이브러리는 TIFF 파일 내의 모든 프레임을 자동으로 감지하고 처리하여 결과를 단일 OcrResult 객체로 통합합니다.

OCR 라이브러리는 단일 페이지 및 여러 페이지로 구성된 TIFF 문서를 모두 지원합니까?

네, IronOCR은 동일한 OcrImageInput 생성자를 통해 단일 프레임 및 다중 프레임 TIFF 형식을 모두 원활하게 처리합니다. 이 라이브러리는 다중 페이지 문서의 각 프레임을 자동으로 순회하며 모든 페이지에 OCR을 적용하므로 복잡한 프레임별 처리 로직이 필요하지 않습니다.

애니메이션 GIF 파일에 OCR을 수행할 수 있나요?

IronOCR은 TIFF 파일에 사용되는 OcrImageInput 클래스를 이용하여 애니메이션 GIF를 포함한 GIF 파일에서 텍스트를 읽는 기능을 지원합니다. 이 라이브러리는 단일 Read 메서드 호출로 GIF 이미지를 처리하므로 정적 GIF와 애니메이션 GIF 형식 모두에서 텍스트를 쉽게 추출할 수 있습니다.

TIFF 및 GIF OCR에서 지원하는 압축 형식은 무엇입니까?

IronOCR은 무손실 압축을 지원하는 TIFF 파일과 호환되므로 스캔 문서 및 전문 사진에 적합합니다. GIF 파일의 경우, 무손실 및 손실 압축 형식을 모두 지원하며, 단일 파일에 애니메이션이 저장된 형식도 처리할 수 있습니다.

여러 페이지로 구성된 대용량 TIFF 문서의 OCR 성능을 최적화하는 방법은 무엇인가요?

IronOCR은 빠른 OCR 구성 옵션과 멀티스레드 Tesseract OCR 기능을 제공하여 성능이 중요한 애플리케이션에 적합합니다. 이러한 기능은 대용량 다중 페이지 TIFF 문서를 처리할 때 효율적인 일괄 처리를 보장하여 처리 시간을 크게 단축합니다.

TIFF 또는 GIF 이미지 내에서 특정 읽기 영역을 정의할 수 있습니까?

네, IronOCR은 TIFF 또는 GIF 이미지 내에서 자르기 영역을 지정하여 읽기 영역을 정의할 수 있도록 합니다. 이 기능을 사용하면 이미지의 특정 부분에 OCR 처리를 집중할 수 있어 특정 영역의 텍스트만 필요한 경우 정확도와 성능이 향상됩니다.

커티스 차우
기술 문서 작성자

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

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 5,525,971 | 버전: 2026.3 방금 출시되었습니다
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package IronOcr
샘플을 실행하세요 이미지가 검색 가능한 텍스트로 바뀌는 것을 확인해 보세요.