IRONSOFTWAREHOME

Grandes Arquivos TIFF Acima de 2 GB Não Carregam

Curtis Chau
Curtis Chau
Updated: 29 de junho de 2026

O IronOCR carrega entradas de imagem em um único buffer na memória através de seu tipo interno AnyBitmap. Esse buffer é indexado por um inteiro de 32 bits, por isso é limitado a cerca de 2 GB, independentemente de quanta memória do sistema você tem. Um TIFF maior que 2 GB excede esse limite e falha ao carregar.

Loaded pages: 0
Text

OcrInput.LoadImage(filePath) cria internamente um AnyBitmap e materializa a imagem inteira em um buffer. Porque esse buffer é indexado por int, ele é efetivamente limitado a cerca de 2 GB, não importa quanta memória esteja livre, então um TIFF um pouco acima do limite não pode ser mantido e o carregamento falha. Isso é uma limitação em tempo de execução, não específica do sistema operacional, portanto, afeta todas as plataformas .NET igualmente.

Aviso: LoadImage(filePath) atualmente retorna zero páginas carregadas em vez de lançar uma exceção clara. Essa falha silenciosa é um problema conhecido; uma exceção mais clara está planejada. O design de um único buffer é um limite arquitetônico, e o streaming nativo de TIFF por página ainda não está disponível.

Solução

A solução é dividir o TIFF em pedaços de menos de 2 GB e passar cada pedaço para o IronOCR como um array de bytes, em vez de um caminho de arquivo.

1. Adicionar Magick.NET

Use o Magick.NET para dividir o TIFF antes de passá-lo para o IronOCR. Escolha a variante que corresponde ao seu projeto (Q8/Q16, AnyCPU/x64).

dotnet add package Magick.NET-Q16-AnyCPU
SHELL

2. Dividir o TIFF e Carregar Cada Pedaço

Abra o TIFF como um MagickImageCollection, divida-o em pedaços pelo número de páginas, cada um com menos de 2 GB, converta cada pedaço em um array de bytes e carregue-o com 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#

Cada pedaço passa por LoadImage(chunkBytes) como bytes brutos, mantendo cada buffer abaixo do limite de 2 GB. SetCompression(CompressionMethod.LZW) reduz cada pedaço antes de ser convertido em um array de bytes.

3. Ajustar o Tamanho dos Pedaços

Ajuste pagesPerChunk para seus dados. Reduza-o se um pedaço se aproximar de 2 GB ou se a memória estiver apertada; aumente-o para páginas menores para reduzir a sobrecarga.

4. Contabilizar o Magick.NET na Implantação

Magick.NET envia binários nativos do ImageMagick. Considere o tamanho adicional do pacote e a pegada de dependência nativa ao implantar.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Pronto para começar?

Nuget Downloads 6,236,385Versão:2026.9recém-lançado

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.
Biblioteca NuGet C# para PDF
Instalar com NuGet

Versão: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. No Solution Explorer, clique com o botão direito do mouse em Referências e selecione Gerenciar Pacotes NuGet.
  2. Selecione Procurar e pesquise "IronOCR".
  3. Selecione o pacote e instale.
DLL de PDF em C#
Baixar DLL

Versão: 2026.9

ou faça o download do Windows Installer aqui .

  1. Baixe e descompacte o IronOCR em um local como ~/Libs dentro do diretório da sua solução.
  2. No Solution Explorer do Visual Studio, clique com o botão direito do mouse em Referências. Selecione Procurar e digite "IronOCR.dll".

Licenças a partir de US$ 749

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.