IRONSOFTWAREHOME

Archivos TIFF Grandes de Más de 2 GB Fallan al Cargar

Curtis Chau
Curtis Chau
Updated: 29 de junio de 2026

IronOCR carga la imagen de entrada en un único búfer en memoria a través de su tipo interno AnyBitmap. Ese búfer está indexado por un entero de 32 bits, por lo que se limita a aproximadamente 2 GB independientemente de cuánta memoria del sistema tenga. Un TIFF mayor de 2 GB excede este límite y falla al cargar.

Loaded pages: 0
Text

OcrInput.LoadImage(filePath) crea un AnyBitmap internamente y materializa toda la imagen en un solo búfer. Debido a que ese búfer está indexado por int, está efectivamente limitado a unos 2 GB sin importar cuánta memoria esté libre, por lo que un TIFF que supere ligeramente el límite no se puede mantener y la carga falla. Este es un límite de tiempo de ejecución, no específico del sistema operativo, por lo que afecta a todas las plataformas .NET por igual.

Advertencia: LoadImage(filePath) actualmente devuelve cero páginas cargadas en lugar de lanzar una excepción clara. Esta falla silenciosa es un problema conocido; se planea una excepción más clara. El diseño de un único búfer es un límite arquitectónico, y el streaming TIFF por página nativo aún no está disponible.

Solución

La solución es dividir el TIFF en porciones de menos de 2 GB y pasar cada porción a IronOCR como un array de bytes en lugar de un camino de archivo.

1. Agregar Magick.NET

Use Magick.NET para dividir el TIFF antes de pasarlo a IronOCR. Seleccione la variante que coincide con su proyecto (Q8/Q16, AnyCPU/x64).

dotnet add package Magick.NET-Q16-AnyCPU
SHELL

2. Dividir el TIFF y Cargar Cada Porción

Abre el TIFF como un MagickImageCollection, divídelo en fragmentos de un número determinado de páginas que cada uno se mantenga por debajo de los 2 GB, convierte cada fragmento a una matriz de bytes y cárgalo con 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 fragmento pasa por LoadImage(chunkBytes) como bytes sin procesar, manteniendo cada búfer por debajo del límite de 2 GB. SetCompression(CompressionMethod.LZW) reduce cada fragmento antes de convertirlo a una matriz de bytes.

3. Ajustar el Tamaño de la Porción

Ajusta pagesPerChunk para tus datos. Bájelo si una porción se aproxima a 2 GB o si la memoria es ajustada; súbalo para páginas más pequeñas para reducir la sobrecarga.

4. Tener en Cuenta Magick.NET en el Despliegue

Magick.NET envía binarios nativos de ImageMagick. Tenga en cuenta el tamaño añadido del paquete y la huella de dependencia nativa cuando despliegue.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.

...
Leer más

¿Listo para empezar?

Nuget Downloads 6,236,385Versión:2026.9recién lanzado

Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta
Biblioteca C# NuGet para PDF
Instalar con NuGet

Versión: 2026.9

PM > Install-Package IronOcr
nuget.org/packages/IronOcr/
  1. En el Explorador de Soluciones, haga clic derecho en Referencias, Administrar Paquetes NuGet
  2. Selecciona Examinar y busca "IronOCR"
  3. Seleccione el paquete e instale
C# PDF DLL
Descargar DLL

Versión: 2026.9

o descargar el instalador de Windows aquí.

  1. Descarga y descomprime IronOCR en una ubicación como ~/Libs dentro de tu directorio de Solución
  2. En Visual Studio Solution Explorer, haz clic derecho en Referencias. Selecciona Examinar, "IronOCR.dll"

Licencias desde $999

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta