Como ler GIFs e TIFFs com várias frames em C# | IronOCR

Como ler arquivos TIFF e GIF com vários quadros/páginas em C

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

O IronOCR permite a leitura de texto a partir de arquivos TIFF e GIF multiframe em C# com a classe OcrImageInput e uma única chamada de método Read, suportando tanto documentos de uma única página quanto de várias páginas sem configuração complexa.

TIFF (Tagged Image File Format) é um formato para imagens de alta qualidade. Suporta compressão sem perdas, tornando-o adequado para documentos digitalizados e fotografia profissional.

O formato GIF (Graphics Interchange Format) é usado para imagens e animações simples na web. Suporta compressão sem perdas e com perdas, e pode incluir animações em um único arquivo.

Início rápido: OCR com arquivos TIFF ou GIF de vários quadros

Leia texto de TIFFs de várias páginas ou GIFs animados com IronOCR usando OcrImageInput e uma chamada Read.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronOcr
  2. Copie e execute este trecho de código.

    using IronOcr;
    var result = new IronTesseract().Read(new OcrImageInput("Potter.tiff"));
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita

    arrow pointer


Como faço para ler arquivos TIFF de um ou vários quadros?

Para realizar OCR, instancie a classe IronTesseract. Use a declaração using para criar o objeto OcrImageInput. Este construtor suporta formatos TIFF e TIF de quadro único e de múltiplos quadros. Aplique o método Read para executar OCR no arquivo TIFF importado.

: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
O Visualizador de Fotos do Windows e o Visual Studio exibindo o conteúdo do documento - não é uma demonstração de processamento TIFF.

Por que o IronOCR processa arquivos TIFF com vários quadros automaticamente?

O IronOCR detecta e processa automaticamente todos os quadros dentro de um arquivo TIFF. Ao carregar um documento TIFF de várias páginas, a biblioteca itera por cada quadro, aplica OCR em cada página e consolida os resultados em um único objeto OcrResult. Esse processamento automático elimina a complexa lógica de processamento quadro a quadro. Para exemplos de TIFF com várias páginas, consulte nosso tutorial de OCR para TIFF com várias páginas .

Para aplicações com requisitos de desempenho críticos, implemente uma configuração de OCR rápida para otimizar a velocidade de processamento. Os recursos de OCR Tesseract multithread da biblioteca garantem um processamento em lote eficiente.

O que acontece ao ler documentos TIFF com várias páginas?

Ao processar documentos TIFF com várias páginas, o IronOCR:

  1. Carrega todos os quadros na memória de forma eficiente.
  2. Aplica pré-processamento a cada quadro, se configurado.
  3. Realiza OCR em páginas sequencialmente
  4. Agrega resultados mantendo a ordem da página

Acesse os resultados de cada página:

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

Para operações de longa duração, implemente um token de aborto para permitir o cancelamento.

Como posso processar quadros TIFF individuais separadamente?

Processar quadros individualmente devido a restrições de memória ou para aplicar diferentes filtros de correção de imagem a páginas específicas:

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

Para configurações avançadas, consulte o guia de configuração detalhado do Tesseract .

Como faço para ler arquivos GIF para OCR?

Especifique o caminho do arquivo GIF ao construir OcrImageInput. O construtor importa a imagem. Para GIFs animados, o IronOCR extrai todos os quadros e os processa como imagens individuais.

: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

Para iniciantes, nosso tutorial simples de OCR em C# com Tesseract aborda operações básicas de OCR.

Por que o OCR funciona em GIFs animados?

Os GIFs animados contêm vários quadros de imagem. O IronOCR extrai cada quadro e os processa separadamente. Isso funciona bem para:

  • Gravações de tela salvas como GIFs
  • Tutoriais animados com instruções em texto
  • Documentação em várias etapas no formato GIF
  • Sistemas legados exportando relatórios como GIFs

O texto de cada quadro é capturado e organizado cronologicamente. Para imagens com problemas de orientação, o IronOCR pode corrigir a orientação da imagem automaticamente.

Quando devo usar o formato GIF para OCR?

Os GIFs têm paletas de cores limitadas (256 cores), mas são comuns em:

  1. Conteúdo da Web : Tutoriais e documentação online
  2. Exportações legadas : Aplicativos antigos que usam o formato GIF.
  3. Capturas de tela : As ferramentas de captura de tela estão configuradas para usar GIFs por padrão.
  4. Tamanho de arquivo pequeno : Quando o armazenamento é limitado

Para obter os melhores resultados, otimize os GIFs usando as configurações de DPI do IronOCR . Aplique filtros de otimização de imagem OCR para melhorar o reconhecimento.

Quais são os problemas comuns com o OCR de GIFs?

Os arquivos GIF apresentam desafios:

  1. Limitações de cores : o limite de 256 cores afeta a clareza do texto.
  2. Artefatos de compressão : O dithering interfere no reconhecimento.
  3. Baixa resolução : Geralmente salvo em 72-96 DPI

Aplicar filtros de pré-processamento:

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

Para imagens desafiadoras, consulte a seção sobre como corrigir digitalizações de baixa qualidade com o Tesseract .

Como especificar uma região de varredura para obter melhor desempenho?

Inclua um CropRectangle ao construir OcrImageInput para definir uma área específica para OCR. Isso melhora o desempenho para documentos grandes. Consulte nosso guia sobre regiões de 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

Por que o recorte melhora o desempenho do OCR?

Documento TIFF no Visualizador de Fotos com console de depuração mostrando a execução completa do processo OCR.

O cultivo melhora o desempenho através de:

  1. Área de processamento reduzida : Menos pixels significam execução mais rápida.
  2. Detecção focada : o OCR otimiza para regiões específicas.
  3. Eficiência de memória : Um conjunto de trabalho menor reduz o uso de RAM.
  4. Eliminação de ruído : Exclui áreas irrelevantes

O processamento de regiões específicas pode ser de 5 a 10 vezes mais rápido do que o processamento de páginas inteiras. Para monitoramento em tempo real, implemente o rastreamento de progresso .

Quando devo usar OCR específico para cada região?

Utilize OCR específico para cada região para:

  • Processamento de formulários : Extrair campos específicos
  • Cabeçalhos/rodapés : Acesse os metadados do documento
  • Tabelas : Foco em tabelas de dados
  • Processamento em lote : Fluxos de trabalho de documentos semelhantes

Exemplo de campos de formulário:

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

Como faço para calcular o retângulo de recorte correto?

Calcule os retângulos de corte usando:

  1. Inspeção visual : Utilize editores de imagem para obter as coordenadas.
  2. Detecção programática : Utilize os recursos de visão do IronOCR.
  3. Modelos : Defina regiões uma única vez para documentos semelhantes.

Depure e visualize com o recurso de destaque de texto :

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

Para documentos complexos, utilize os objetos de resultado do IronOCR para identificar a localização do texto e criar regiões de recorte dinâmicas. Para imagens complexas, o guia de otimização de DPI para OCR ajuda a alcançar a resolução ideal.

O IronOCR fornece uma API simplificada que lida com a extração e o processamento de frames automaticamente. Seja processando documentos de uma única página ou arquivos complexos com vários quadros, a mesma sintaxe simples se aplica aos fluxos de trabalho de documentos corporativos.

Perguntas frequentes

Como posso extrair texto de arquivos TIFF com múltiplos quadros em C#?

O IronOCR oferece uma solução simples para leitura de arquivos TIFF com múltiplos frames usando a classe OcrImageInput. Basta instanciar o IronTesseract e chamar o método Read com OcrImageInput, passando o caminho do seu arquivo TIFF. A biblioteca detecta e processa automaticamente todos os frames do arquivo TIFF, consolidando os resultados em um único objeto OcrResult.

A biblioteca OCR suporta documentos TIFF de página única e de várias páginas?

Sim, o IronOCR lida perfeitamente com formatos TIFF de quadro único e de múltiplos quadros através do mesmo construtor OcrImageInput. A biblioteca itera automaticamente por cada quadro em documentos com várias páginas, aplica o OCR a todas as páginas e elimina a necessidade de uma lógica complexa de processamento quadro a quadro.

Posso realizar OCR em arquivos GIF animados?

O IronOCR suporta a leitura de texto de arquivos GIF, incluindo GIFs animados, usando a mesma classe OcrImageInput utilizada para arquivos TIFF. A biblioteca processa imagens GIF com uma única chamada ao método Read, facilitando a extração de texto tanto de GIFs estáticos quanto animados.

Quais formatos de compressão são suportados para OCR em TIFF e GIF?

O IronOCR funciona com arquivos TIFF que suportam compressão sem perdas, sendo ideal para documentos digitalizados e fotografia profissional. Para arquivos GIF, a biblioteca lida com formatos de compressão com e sem perdas, incluindo aqueles com animações armazenadas em um único arquivo.

Como otimizar o desempenho do OCR para documentos TIFF grandes com várias páginas?

O IronOCR oferece opções de configuração OCR rápidas e recursos de OCR Tesseract multithread para aplicações com requisitos de desempenho críticos. Esses recursos garantem o processamento em lote eficiente ao lidar com grandes documentos TIFF de várias páginas, reduzindo significativamente o tempo de processamento.

Posso definir áreas de leitura específicas em imagens TIFF ou GIF?

Sim, o IronOCR permite definir áreas de leitura especificando regiões de recorte em suas imagens TIFF ou GIF. Esse recurso ajuda a concentrar o processamento de OCR em partes específicas da imagem, melhorando a precisão e o desempenho quando você precisa apenas do texto de determinadas áreas.

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 ...

Leia mais
Pronto para começar?
Nuget Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.