IRONSOFTWAREHOME

2GB가 넘는 대형 TIFF 파일 로드 실패

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

IronOCR은 내부 AnyBitmap 유형을 통해 이미지 입력을 단일 인메모리 버퍼에 로드합니다. 그 버퍼는 32비트 정수로 인덱싱되어 시스템 메모리가 얼마든지 빠지지 않고 약 2GB로 제한됩니다. 2GB보다 큰 TIFF는 이 제한을 초과하여 로드에 실패합니다.

Loaded pages: 0
Text

OcrInput.LoadImage(filePath)는 내부적으로 AnyBitmap를 생성하고 전체 이미지를 하나의 버퍼로 시물레이션합니다. 그 버퍼는 int로 인덱싱되어 사실상 약 2GB로 제한되며, TIFF가 약간 더 큰 경우 보유할 수 없고 로드가 실패합니다. 이것은 각 .NET 플랫폼에 동일하게 영향을 미치는 OS 비특정 런타임 제약입니다.

경고: LoadImage(filePath)는 현재 명확한 예외를 던지는 대신 0개 페이지가 로드된 상태로 반환합니다. 이 무음 실패는 알려진 문제입니다; 명확한 예외가 계획되어 있습니다. 단일 버퍼 설계는 아키텍처적 한계이며, 네이티브 페이지별 TIFF 스트리밍은 아직 사용할 수 없습니다.

해결책

수정 방법은 TIFF를 2GB 이하의 청크로 분할하여 파일 경로 대신 바이트 배열로 IronOCR에 전달하는 것입니다.

1. Magick.NET 추가하기

IronOCR에 전달하기 전에 TIFF를 분할하기 위해 Magick.NET을 사용하십시오. 프로젝트와 일치하는 변종(Q8/Q16, AnyCPU/x64)을 선택하십시오.

dotnet add package Magick.NET-Q16-AnyCPU
SHELL

2. TIFF를 분할하고 각 청크 로드하기

TIFF를 MagickImageCollection으로 열고, 각 청크가 2GB 이하로 유지되도록 페이지 단위로 나누고 모든 청크를 바이트 배열로 변환하여 OcrInput.LoadImage(byte[])로 로드하십시오.

var inputPath = "input.tiff";
var pagesPerChunk = 100;
using var allPages = new MagickImageCollection(inputPath);
int chunkNumber = 1;
for (int i = 0; i < allPages.Count; i += pagesPerChunk)
{
    using var chunk = new MagickImageCollection();
    for (int j = i; j < Math.Min(i + pagesPerChunk, allPages.Count); j++)
    {
        chunk.Add(allPages[j].Clone());
    }
    foreach (var image in chunk)
    {
        image.SetCompression(CompressionMethod.LZW);
    }
    var chunkBytes = chunk.ToByteArray();
    using (var ocrInput = new OcrInput())
    {
        ocrInput.LoadImage(chunkBytes);
        var pages = ocrInput.GetPages().ToList();
        Console.WriteLine($"Loaded pages: {pages.Count}");
        var result = new IronTesseract().Read(ocrInput);
        Console.WriteLine("OCR Text Length: " + (result.Text?.Length ?? 0));
    }
    Console.WriteLine($"Chunk {chunkNumber} processed");
    chunkNumber++;
}
C#

각 청크는 원시 바이트로 LoadImage(chunkBytes)를 통해 이동되며, 모든 버퍼는 2GB 한계 내에 유지됩니다. SetCompression(CompressionMethod.LZW)는 바이트 배열로 변환되기 전에 각 청크를 줄입니다.

3. 청크 크기 조정

데이터에 맞게 pagesPerChunk를 조정하십시오. 청크가 2GB에 접근하거나 메모리가 빡빡할 경우 낮추십시오; 작은 페이지에 대해서는 오버헤드를 줄이기 위해 올리십시오.

4. 배포 시 Magick.NET 고려하기

Magick.NET은 ImageMagick 네이티브 바이너리를 함께 배포합니다. 배포 시 패키지 크기 및 네이티브 종속성 발자국을 고려하십시오.

Curtis Chau
기술 문서 작성자

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

...
더 읽어보기

시작할 준비 되셨나요?

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

지금 바로 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일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.