Como extrair texto de imagens em C#

C# OCR Image to Text Tutorial: Convert Images to Text Without Tesseract

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

Deseja converter imagens em texto em C# sem a complicação de configurações complexas do Tesseract? Este tutorial completo de IronOCR em C# mostra como implementar um poderoso sistema de reconhecimento óptico de caracteres em suas aplicações .NET com apenas algumas linhas de código.

Início Rápido: Extrair Texto de uma Imagem em Uma Linha

Este exemplo mostra como é fácil entender o IronOCR— apenas uma linha de C# transforma sua imagem em texto. Este vídeo demonstra a inicialização do mecanismo OCR e a leitura e recuperação imediatas de texto sem configurações complexas.

  1. Instale IronOCR com o Gerenciador de Pacotes NuGet

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

    string text = new IronTesseract().Read("image.png").Text;
  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 texto de imagens em aplicativos .NET ?

Para implementar a funcionalidade de OCR (reconhecimento óptico de caracteres) de imagem para texto em C# em suas aplicações .NET , você precisará de uma biblioteca de OCR confiável. IronOCR fornece uma solução gerenciada usando a classe IronOcr.IronTesseract que maximiza tanto a precisão quanto a velocidade sem exigir dependências externas.

Primeiro, instale o IronOCR em seu projeto do Visual Studio. Você pode baixar a DLL do IronOCR diretamente ou usar o Gerenciador de Pacotes NuGet .

Install-Package IronOcr

Por que escolher o IronOCR para OCR em C# sem o Tesseract?

Quando você precisa converter imagens em texto em C#, o IronOCR oferece vantagens significativas em relação às implementações tradicionais do Tesseract:

  • Funciona imediatamente em ambientes .NET puros
  • Não é necessária nenhuma instalação ou configuração do Tesseract
  • Executa os motores mais recentes: Tesseract 5 (além de Tesseract 4 e 3)
  • Compatível com .NET Framework 4.5+, .NET Standard 2+ e .NET Core 2, 3, 5, 6, 7, 8, 9 e 10
  • Melhora a precisão e a velocidade em comparação com o Tesseract original.
  • Suporta implantações em Xamarin, Mono, Azure e Docker.
  • Gerencia dicionários Tesseract complexos por meio de pacotes NuGet.
  • Processa PDFs, TIFFs MultiFrame e todos os principais formatos de imagem automaticamente.
  • Corrige digitalizações de baixa qualidade e distorcidas para resultados ideais.

Como usar o IronOCR em C#: Tutorial para OCR básico?

Este exemplo em C# do Iron Tesseract demonstra a maneira mais simples de ler texto de uma imagem usando o IronOCR. A classe IronOcr.IronTesseract extrai texto e o retorna como uma string.

// Basic C# OCR image to text conversion using IronOCR
// This example shows how to extract text from images without complex setup

using IronOcr;
using System;

try
{
    // Initialize IronTesseract for OCR operations
    var ocrEngine = new IronTesseract();

    // Path to your image file - supports PNG, JPG, TIFF, BMP, and more
    var imagePath = @"img\Screenshot.png";

    // Create input and perform OCR to convert image to text
    using (var input = new OcrInput(imagePath))
    {
        // Read text from image and get results
        OcrResult result = ocrEngine.Read(input);

        // Display extracted text
        Console.WriteLine(result.Text);
    }
}
catch (OcrException ex)
{
    // Handle OCR-specific errors
    Console.WriteLine($"OCR Error: {ex.Message}");
}
catch (Exception ex)
{
    // Handle general errors
    Console.WriteLine($"Error: {ex.Message}");
}
// Basic C# OCR image to text conversion using IronOCR
// This example shows how to extract text from images without complex setup

using IronOcr;
using System;

try
{
    // Initialize IronTesseract for OCR operations
    var ocrEngine = new IronTesseract();

    // Path to your image file - supports PNG, JPG, TIFF, BMP, and more
    var imagePath = @"img\Screenshot.png";

    // Create input and perform OCR to convert image to text
    using (var input = new OcrInput(imagePath))
    {
        // Read text from image and get results
        OcrResult result = ocrEngine.Read(input);

        // Display extracted text
        Console.WriteLine(result.Text);
    }
}
catch (OcrException ex)
{
    // Handle OCR-specific errors
    Console.WriteLine($"OCR Error: {ex.Message}");
}
catch (Exception ex)
{
    // Handle general errors
    Console.WriteLine($"Error: {ex.Message}");
}
$vbLabelText   $csharpLabel

Este código atinge 100% de precisão em imagens nítidas, extraindo o texto exatamente como ele aparece:

IronOCR Simple Example

In this simple example we test the accuracy of our C# OCR library to read text from a PNG Image. This is a very basic test, but things will get more complicated as the tutorial continues.

The quick brown fox jumps over the lazy dog

A classe IronTesseract lida com operações complexas de OCR internamente. Ele realiza varreduras automáticas para alinhamento, otimiza a resolução e usa IA para ler o texto da imagem com precisão semelhante à humana, utilizando o IronOCR .

Apesar do processamento sofisticado que ocorre nos bastidores — incluindo análise de imagem, otimização do mecanismo e reconhecimento inteligente de texto — o processo de OCR acompanha a velocidade de leitura humana, mantendo níveis de precisão excepcionais.

Visualização Simples do IronOCR mostrando conversão de imagem para texto em C# com 100% de precisão Captura de tela demonstrando a capacidade do IronOCR de extrair texto de uma imagem PNG com precisão perfeita.

Como implementar OCR avançado em C# sem configurar o Tesseract?

Para aplicações de produção que exigem desempenho ideal ao converter imagens em texto em C#, use as classes OcrInput e IronTesseract juntas. Essa abordagem proporciona um controle preciso sobre o processo de OCR.

Recursos da classe OcrInput

  • Processa múltiplos formatos de imagem: JPEG, TIFF, GIF, BMP, PNG
  • Importa PDFs completos ou páginas específicas
  • Melhora automaticamente o contraste, a resolução e a qualidade da imagem.
  • Corrige rotação, ruído de digitalização, distorção e imagens negativas.

Características da Classe IronTesseract

  • Acesso a mais de 125 idiomas pré-configurados
  • Inclui os motores Tesseract 5, 4 e 3
  • Especificação do tipo de documento (captura de tela, trecho ou documento completo)
  • Capacidades integradas de leitura de código de barras
  • Múltiplos formatos de saída: PDFs pesquisáveis, HTML HOCR, objetos DOM e strings.

Como começar a usar o OcrInput e o IronTesseract?

Aqui está uma configuração recomendada para este tutorial de IronOCR em C# que funciona bem com a maioria dos tipos de documentos:

using IronOcr;

// Initialize IronTesseract for advanced OCR operations
IronTesseract ocr = new IronTesseract();

// Create input container for processing multiple images
using (OcrInput input = new OcrInput())
{
    // Process specific pages from multi-page TIFF files
    int[] pageIndices = new int[] { 1, 2 };

    // Load TIFF frames - perfect for scanned documents
    input.LoadImageFrames(@"img\Potter.tiff", pageIndices);

    // Execute OCR to read text from image using IronOCR
    OcrResult result = ocr.Read(input);

    // Output the extracted text
    Console.WriteLine(result.Text);
}
using IronOcr;

// Initialize IronTesseract for advanced OCR operations
IronTesseract ocr = new IronTesseract();

// Create input container for processing multiple images
using (OcrInput input = new OcrInput())
{
    // Process specific pages from multi-page TIFF files
    int[] pageIndices = new int[] { 1, 2 };

    // Load TIFF frames - perfect for scanned documents
    input.LoadImageFrames(@"img\Potter.tiff", pageIndices);

    // Execute OCR to read text from image using IronOCR
    OcrResult result = ocr.Read(input);

    // Output the extracted text
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

Essa configuração alcança consistentemente uma precisão quase perfeita em digitalizações de qualidade média. O método LoadImageFrames lida eficientemente com documentos de múltiplas páginas, tornando-o ideal para cenários de processamento em lote.


Documento TIFF de várias páginas contendo texto de Harry Potter pronto para processamento OCR em C#.

Exemplo de documento TIFF demonstrando as capacidades de extração de texto de várias páginas do IronOCR.

A capacidade de ler texto a partir de imagens e códigos de barras em documentos digitalizados, como TIFFs, demonstra como o IronOCR simplifica tarefas complexas de OCR. A biblioteca se destaca com documentos do mundo real, lidando perfeitamente com arquivos TIFF de várias páginas e extração de texto de PDFs .

Como o IronOCR lida com digitalizações de baixa qualidade?


Digitalização de baixa qualidade com ruído digital demonstrando as capacidades de aprimoramento de imagem do IronOCR.

Documento de baixa resolução com ruído que o IronOCR consegue processar com precisão usando filtros de imagem.

Ao trabalhar com digitalizações imperfeitas que contêm distorção e ruído digital, o IronOCR supera outras bibliotecas OCR em C# . Ele foi projetado especificamente para cenários do mundo real, em vez de imagens de teste perfeitas.

// Advanced Iron Tesseract C# example for low-quality images
using IronOcr;
using System;

var ocr = new IronTesseract();

try
{
    using (var input = new OcrInput())
    {
        // Load specific pages from poor-quality TIFF
        var pageIndices = new int[] { 0, 1 };
        input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageIndices);

        // Apply deskew filter to correct rotation and perspective
        input.Deskew(); // Critical for improving accuracy on skewed scans

        // Perform OCR with enhanced preprocessing
        OcrResult result = ocr.Read(input);

        // Display results
        Console.WriteLine("Recognized Text:");
        Console.WriteLine(result.Text);
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Error during OCR: {ex.Message}");
}
// Advanced Iron Tesseract C# example for low-quality images
using IronOcr;
using System;

var ocr = new IronTesseract();

try
{
    using (var input = new OcrInput())
    {
        // Load specific pages from poor-quality TIFF
        var pageIndices = new int[] { 0, 1 };
        input.LoadImageFrames(@"img\Potter.LowQuality.tiff", pageIndices);

        // Apply deskew filter to correct rotation and perspective
        input.Deskew(); // Critical for improving accuracy on skewed scans

        // Perform OCR with enhanced preprocessing
        OcrResult result = ocr.Read(input);

        // Display results
        Console.WriteLine("Recognized Text:");
        Console.WriteLine(result.Text);
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Error during OCR: {ex.Message}");
}
$vbLabelText   $csharpLabel

Usando Input.Deskew(), a precisão melhora para 99,8% em digitalizações de baixa qualidade, quase igualando resultados de alta qualidade. Isso demonstra por que o IronOCR é a escolha preferida para OCR em C# sem as complicações do Tesseract.

Os filtros de imagem podem aumentar ligeiramente o tempo de processamento, mas reduzem significativamente a duração total do OCR. Encontrar o equilíbrio certo depende da qualidade do seu documento.

Para a maioria dos cenários, Input.Deskew() e Input.DeNoise() fornecem melhorias confiáveis no desempenho do OCR. Saiba mais sobre técnicas de pré-processamento de imagens .

Como otimizar o desempenho e a velocidade do OCR?

O fator mais significativo que afeta a velocidade do OCR ao converter imagens em texto em C# é a qualidade da entrada. Uma resolução DPI mais alta (em torno de 200 dpi) com ruído mínimo produz os resultados mais rápidos e precisos.

Embora o IronOCR seja excelente na correção de documentos imperfeitos, esse aprimoramento requer tempo de processamento adicional.

Escolha formatos de imagem com o mínimo de artefatos de compressão. Os formatos TIFF e PNG geralmente produzem resultados mais rápidos do que o JPEG devido ao menor ruído digital.

Quais filtros de imagem melhoram a velocidade do OCR?

Os seguintes filtros podem melhorar drasticamente o desempenho do seu fluxo de trabalho de OCR de imagem para texto em C#:

  • OcrInput.Rotate(double degrees): Gira imagens no sentido horário (negativo para anti-horário)
  • OcrInput.Binarize(): Converte para preto/branco, melhorando o desempenho em cenários de baixo contraste
  • OcrInput.ToGrayScale(): Converte para escala de cinza para potenciais melhorias de velocidade
  • OcrInput.Contrast(): Ajusta automaticamente o contraste para melhor precisão
  • OcrInput.DeNoise(): Remove artefatos digitais quando o ruído é esperado
  • OcrInput.Invert(): Inverte cores para texto branco sobre preto
  • OcrInput.Dilate(): Expande limites do texto
  • OcrInput.Erode(): Reduz limites do texto
  • OcrInput.Deskew(): Corrige alinhamento - essencial para documentos inclinados
  • OcrInput.DeepCleanBackgroundNoise(): Remoção agressiva de ruído
  • OcrInput.EnhanceResolution: Melhora a qualidade de imagens de baixa resolução

Como configurar o IronOCR para obter a velocidade máxima?

Use estas configurações para otimizar a velocidade ao processar digitalizações de alta qualidade:

using IronOcr;

// Configure for speed - ideal for clean documents
IronTesseract ocr = new IronTesseract();

// Exclude problematic characters to speed up recognition
ocr.Configuration.BlackListCharacters = "~`$#^*_{[]}|\\";

// Use automatic page segmentation
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;

// Select fast English language pack
ocr.Language = OcrLanguage.EnglishFast;

using (OcrInput input = new OcrInput())
{
    // Load specific pages from document
    int[] pageIndices = new int[] { 1, 2 };
    input.LoadImageFrames(@"img\Potter.tiff", pageIndices);

    // Read with optimized settings
    OcrResult result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
using IronOcr;

// Configure for speed - ideal for clean documents
IronTesseract ocr = new IronTesseract();

// Exclude problematic characters to speed up recognition
ocr.Configuration.BlackListCharacters = "~`$#^*_{[]}|\\";

// Use automatic page segmentation
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto;

// Select fast English language pack
ocr.Language = OcrLanguage.EnglishFast;

using (OcrInput input = new OcrInput())
{
    // Load specific pages from document
    int[] pageIndices = new int[] { 1, 2 };
    input.LoadImageFrames(@"img\Potter.tiff", pageIndices);

    // Read with optimized settings
    OcrResult result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

Essa configuração otimizada mantém 99,8% de precisão, ao mesmo tempo que alcança uma melhoria de velocidade de 35% em comparação com as configurações padrão.

Como ler áreas específicas de imagens usando OCR em C#?

O exemplo Iron Tesseract em C# abaixo mostra como direcionar regiões específicas usando System.Drawing.Rectangle. Essa técnica é inestimável para o processamento de formulários padronizados onde o texto aparece em locais previsíveis.

O IronOCR consegue processar regiões recortadas para obter resultados mais rápidos?

Ao usar coordenadas baseadas em pixels, você pode limitar o OCR a áreas específicas, melhorando drasticamente a velocidade e evitando a extração de texto indesejado:

using IronOcr;
using IronSoftware.Drawing;

// Initialize OCR engine for targeted region processing
var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    // Define exact region for OCR - coordinates in pixels
    var contentArea = new System.Drawing.Rectangle(
        x: 215, 
        y: 1250, 
        width: 1335, 
        height: 280
    );

    // Load image with specific area - perfect for forms and invoices
    input.AddImage("img/ComSci.png", contentArea);

    // Process only the defined region
    OcrResult result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
using IronOcr;
using IronSoftware.Drawing;

// Initialize OCR engine for targeted region processing
var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    // Define exact region for OCR - coordinates in pixels
    var contentArea = new System.Drawing.Rectangle(
        x: 215, 
        y: 1250, 
        width: 1335, 
        height: 280
    );

    // Load image with specific area - perfect for forms and invoices
    input.AddImage("img/ComSci.png", contentArea);

    // Process only the defined region
    OcrResult result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
$vbLabelText   $csharpLabel

Essa abordagem direcionada proporciona uma melhoria de velocidade de 41%, extraindo apenas o texto relevante. É ideal para documentos estruturados como faturas , cheques e formulários. A mesma técnica de recorte funciona perfeitamente com operações de OCR em PDF .

Documento de Ciência da Computação mostrando extração de região direcionada de OCR em C# Documento demonstrando extração precisa de texto baseada em regiões usando a seleção retangular do IronOCR.

Quantos idiomas o IronOCR suporta?

O IronOCR oferece 125 idiomas internacionais por meio de pacotes de idiomas práticos. Faça o download deles como arquivos DLL em nosso site ou através do Gerenciador de Pacotes NuGet .

Instale os pacotes de idiomas através da interface NuGet ( pesquise "IronOCR" ) ou visite a lista completa de pacotes de idiomas .

Os idiomas suportados incluem árabe, chinês (simplificado/tradicional), japonês, coreano, hindi, russo, alemão, francês, espanhol e mais de 115 outros, cada um otimizado para reconhecimento preciso de texto.

Como implementar OCR em vários idiomas?

Este exemplo de tutorial em C# do IronOCR demonstra o reconhecimento de texto em árabe:

Install-Package IronOcr.Languages.Arabic
Texto em árabe sendo processado pelo IronOCR , demonstrando suporte a OCR multilíngue.

IronOCR extraindo com precisão texto árabe de uma imagem GIF.

// Install-Package IronOcr.Languages.Arabic
using IronOcr;

// Configure for Arabic language OCR
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;

using (var input = new OcrInput())
{
    // Load Arabic text image
    input.AddImage("img/arabic.gif");

    // IronOCR handles low-quality Arabic text that standard Tesseract cannot
    var result = ocr.Read(input);

    // Save to file (console may not display Arabic correctly)
    result.SaveAsTextFile("arabic.txt");
}
// Install-Package IronOcr.Languages.Arabic
using IronOcr;

// Configure for Arabic language OCR
var ocr = new IronTesseract();
ocr.Language = OcrLanguage.Arabic;

using (var input = new OcrInput())
{
    // Load Arabic text image
    input.AddImage("img/arabic.gif");

    // IronOCR handles low-quality Arabic text that standard Tesseract cannot
    var result = ocr.Read(input);

    // Save to file (console may not display Arabic correctly)
    result.SaveAsTextFile("arabic.txt");
}
$vbLabelText   $csharpLabel

O IronOCR consegue lidar com documentos em vários idiomas?

Quando os documentos contiverem idiomas mistos, configure o IronOCR para suporte a vários idiomas:

Install-Package IronOcr.Languages.ChineseSimplified
// Multi-language OCR configuration
using IronOcr;

var ocr = new IronTesseract();

// Set primary language
ocr.Language = OcrLanguage.ChineseSimplified;

// Add secondary languages as needed
ocr.AddSecondaryLanguage(OcrLanguage.English);

// Custom .traineddata files can be added for specialized recognition
// ocr.AddSecondaryLanguage("path/to/custom.traineddata");

using (var input = new OcrInput())
{
    // Process multi-language document
    input.AddImage("img/MultiLanguage.jpeg");

    var result = ocr.Read(input);
    result.SaveAsTextFile("MultiLanguage.txt");
}
// Multi-language OCR configuration
using IronOcr;

var ocr = new IronTesseract();

// Set primary language
ocr.Language = OcrLanguage.ChineseSimplified;

// Add secondary languages as needed
ocr.AddSecondaryLanguage(OcrLanguage.English);

// Custom .traineddata files can be added for specialized recognition
// ocr.AddSecondaryLanguage("path/to/custom.traineddata");

using (var input = new OcrInput())
{
    // Process multi-language document
    input.AddImage("img/MultiLanguage.jpeg");

    var result = ocr.Read(input);
    result.SaveAsTextFile("MultiLanguage.txt");
}
$vbLabelText   $csharpLabel

Como processar documentos com várias páginas usando OCR em C#?

O IronOCR combina perfeitamente várias páginas ou imagens em um único OcrResult. Essa funcionalidade possibilita recursos avançados, como a criação de PDFs pesquisáveis ​​e a extração de texto de conjuntos inteiros de documentos.

Combine e misture diversas fontes — imagens, quadros TIFF e páginas PDF — em uma única operação de OCR:

// Multi-source document processing
using IronOcr;

IronTesseract ocr = new IronTesseract();

using (OcrInput input = new OcrInput())
{
    // Add various image formats
    input.AddImage("image1.jpeg");
    input.AddImage("image2.png");

    // Process specific frames from multi-frame images
    int[] frameNumbers = { 1, 2 };
    input.AddImageFrames("image3.gif", frameNumbers);

    // Process all sources together
    OcrResult result = ocr.Read(input);

    // Verify page count
    Console.WriteLine($"{result.Pages.Count} Pages processed.");
}
// Multi-source document processing
using IronOcr;

IronTesseract ocr = new IronTesseract();

using (OcrInput input = new OcrInput())
{
    // Add various image formats
    input.AddImage("image1.jpeg");
    input.AddImage("image2.png");

    // Process specific frames from multi-frame images
    int[] frameNumbers = { 1, 2 };
    input.AddImageFrames("image3.gif", frameNumbers);

    // Process all sources together
    OcrResult result = ocr.Read(input);

    // Verify page count
    Console.WriteLine($"{result.Pages.Count} Pages processed.");
}
$vbLabelText   $csharpLabel

Processar todas as páginas de um arquivo TIFF de forma eficiente:

using IronOcr;

IronTesseract ocr = new IronTesseract();

using (OcrInput input = new OcrInput())
{
    // Define pages to process (0-based indexing)
    int[] pageIndices = new int[] { 0, 1 };

    // Load specific TIFF frames
    input.LoadImageFrames("MultiFrame.Tiff", pageIndices);

    // Extract text from all frames
    OcrResult result = ocr.Read(input);

    Console.WriteLine(result.Text);
    Console.WriteLine($"{result.Pages.Count} Pages processed");
}
using IronOcr;

IronTesseract ocr = new IronTesseract();

using (OcrInput input = new OcrInput())
{
    // Define pages to process (0-based indexing)
    int[] pageIndices = new int[] { 0, 1 };

    // Load specific TIFF frames
    input.LoadImageFrames("MultiFrame.Tiff", pageIndices);

    // Extract text from all frames
    OcrResult result = ocr.Read(input);

    Console.WriteLine(result.Text);
    Console.WriteLine($"{result.Pages.Count} Pages processed");
}
$vbLabelText   $csharpLabel

Converter arquivos TIFF ou PDF para formatos pesquisáveis:

using System;
using IronOcr;

IronTesseract ocr = new IronTesseract();

using (OcrInput input = new OcrInput())
{
    // Set document metadata
    input.Title = "Quarterly Report";

    // Combine multiple sources
    input.AddImage("image1.jpeg");
    input.AddImage("image2.png");

    // Add specific frames from animated images
    int[] gifFrames = new int[] { 1, 2 };
    input.AddImageFrames("image3.gif", gifFrames);

    // Create searchable PDF
    OcrResult result = ocr.Read(input);
    result.SaveAsSearchablePdf("searchable.pdf");
}
using System;
using IronOcr;

IronTesseract ocr = new IronTesseract();

using (OcrInput input = new OcrInput())
{
    // Set document metadata
    input.Title = "Quarterly Report";

    // Combine multiple sources
    input.AddImage("image1.jpeg");
    input.AddImage("image2.png");

    // Add specific frames from animated images
    int[] gifFrames = new int[] { 1, 2 };
    input.AddImageFrames("image3.gif", gifFrames);

    // Create searchable PDF
    OcrResult result = ocr.Read(input);
    result.SaveAsSearchablePdf("searchable.pdf");
}
$vbLabelText   $csharpLabel

Converter PDFs existentes em versões pesquisáveis:

using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    // Set PDF metadata
    input.Title = "Annual Report 2024";

    // Process existing PDF
    input.LoadPdf("example.pdf", "password");

    // Generate searchable version
    var result = ocr.Read(input);
    result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    // Set PDF metadata
    input.Title = "Annual Report 2024";

    // Process existing PDF
    input.LoadPdf("example.pdf", "password");

    // Generate searchable version
    var result = ocr.Read(input);
    result.SaveAsSearchablePdf("searchable.pdf");
}
$vbLabelText   $csharpLabel

Aplique a mesma técnica às conversões TIFF:

using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    // Configure document properties
    input.Title = "Scanned Archive Document";

    // Select pages to process
    var pageIndices = new int[] { 1, 2 };
    input.LoadImageFrames("example.tiff", pageIndices);

    // Create searchable PDF from TIFF
    OcrResult result = ocr.Read(input);
    result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    // Configure document properties
    input.Title = "Scanned Archive Document";

    // Select pages to process
    var pageIndices = new int[] { 1, 2 };
    input.LoadImageFrames("example.tiff", pageIndices);

    // Create searchable PDF from TIFF
    OcrResult result = ocr.Read(input);
    result.SaveAsSearchablePdf("searchable.pdf");
}
$vbLabelText   $csharpLabel

Como exportar resultados de OCR como HTML HOCR?

O IronOCR suporta a exportação HOCR para HTML, permitindo conversões estruturadas de PDF para HTML e de TIFF para HTML , preservando as informações de layout:

using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    // Set HTML title
    input.Title = "Document Archive";

    // Process multiple document types
    input.AddImage("image2.jpeg");
    input.AddPdf("example.pdf", "password");

    // Add TIFF pages
    var pageIndices = new int[] { 1, 2 };
    input.AddTiff("example.tiff", pageIndices);

    // Export as HOCR with position data
    OcrResult result = ocr.Read(input);
    result.SaveAsHocrFile("hocr.html");
}
using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    // Set HTML title
    input.Title = "Document Archive";

    // Process multiple document types
    input.AddImage("image2.jpeg");
    input.AddPdf("example.pdf", "password");

    // Add TIFF pages
    var pageIndices = new int[] { 1, 2 };
    input.AddTiff("example.tiff", pageIndices);

    // Export as HOCR with position data
    OcrResult result = ocr.Read(input);
    result.SaveAsHocrFile("hocr.html");
}
$vbLabelText   $csharpLabel

O IronOCR consegue ler códigos de barras juntamente com texto?

O IronOCR combina de forma exclusiva o reconhecimento de texto com a leitura de códigos de barras , eliminando a necessidade de bibliotecas separadas:

// Enable combined text and barcode recognition
using IronOcr;

var ocr = new IronTesseract();

// Enable barcode detection
ocr.Configuration.ReadBarCodes = true;

using (var input = new OcrInput())
{
    // Load image containing both text and barcodes
    input.AddImage("img/Barcode.png");

    // Process both text and barcodes
    var result = ocr.Read(input);

    // Extract barcode data
    foreach (var barcode in result.Barcodes)
    {
        Console.WriteLine($"Barcode Value: {barcode.Value}");
        Console.WriteLine($"Type: {barcode.Type}, Location: {barcode.Location}");
    }
}
// Enable combined text and barcode recognition
using IronOcr;

var ocr = new IronTesseract();

// Enable barcode detection
ocr.Configuration.ReadBarCodes = true;

using (var input = new OcrInput())
{
    // Load image containing both text and barcodes
    input.AddImage("img/Barcode.png");

    // Process both text and barcodes
    var result = ocr.Read(input);

    // Extract barcode data
    foreach (var barcode in result.Barcodes)
    {
        Console.WriteLine($"Barcode Value: {barcode.Value}");
        Console.WriteLine($"Type: {barcode.Type}, Location: {barcode.Location}");
    }
}
$vbLabelText   $csharpLabel

Como acessar resultados detalhados de OCR e metadados?

O objeto de resultados do IronOCR fornece dados abrangentes que desenvolvedores avançados podem aproveitar para aplicações sofisticadas.

Cada OcrResult contém coleções hierárquicas: páginas, parágrafos, linhas, palavras e caracteres. Todos os elementos incluem metadados detalhados, como localização, informações sobre a fonte e pontuações de confiança.

Elementos individuais (parágrafos, palavras, códigos de barras) podem ser exportados como imagens ou bitmaps para processamento posterior:

using System;
using IronOcr;
using IronSoftware.Drawing;

// Configure with barcode support
IronTesseract ocr = new IronTesseract
{
    Configuration = { ReadBarCodes = true }
};

using OcrInput input = new OcrInput();

// Process multi-page document
int[] pageIndices = { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);

OcrResult result = ocr.Read(input);

// Navigate the complete results hierarchy
foreach (var page in result.Pages)
{
    // Page-level data
    int pageNumber = page.PageNumber;
    string pageText = page.Text;
    int pageWordCount = page.WordCount;

    // Extract page elements
    OcrResult.Barcode[] barcodes = page.Barcodes;
    AnyBitmap pageImage = page.ToBitmap();
    double pageWidth = page.Width;
    double pageHeight = page.Height;

    foreach (var paragraph in page.Paragraphs)
    {
        // Paragraph properties
        int paragraphNumber = paragraph.ParagraphNumber;
        string paragraphText = paragraph.Text;
        double paragraphConfidence = paragraph.Confidence;
        var textDirection = paragraph.TextDirection;

        foreach (var line in paragraph.Lines)
        {
            // Line details including baseline information
            string lineText = line.Text;
            double lineConfidence = line.Confidence;
            double baselineAngle = line.BaselineAngle;
            double baselineOffset = line.BaselineOffset;

            foreach (var word in line.Words)
            {
                // Word-level data
                string wordText = word.Text;
                double wordConfidence = word.Confidence;

                // Font information (when available)
                if (word.Font != null)
                {
                    string fontName = word.Font.FontName;
                    double fontSize = word.Font.FontSize;
                    bool isBold = word.Font.IsBold;
                    bool isItalic = word.Font.IsItalic;
                }

                foreach (var character in word.Characters)
                {
                    // Character-level analysis
                    string charText = character.Text;
                    double charConfidence = character.Confidence;

                    // Alternative character choices for spell-checking
                    OcrResult.Choice[] alternatives = character.Choices;
                }
            }
        }
    }
}
using System;
using IronOcr;
using IronSoftware.Drawing;

// Configure with barcode support
IronTesseract ocr = new IronTesseract
{
    Configuration = { ReadBarCodes = true }
};

using OcrInput input = new OcrInput();

// Process multi-page document
int[] pageIndices = { 1, 2 };
input.LoadImageFrames(@"img\Potter.tiff", pageIndices);

OcrResult result = ocr.Read(input);

// Navigate the complete results hierarchy
foreach (var page in result.Pages)
{
    // Page-level data
    int pageNumber = page.PageNumber;
    string pageText = page.Text;
    int pageWordCount = page.WordCount;

    // Extract page elements
    OcrResult.Barcode[] barcodes = page.Barcodes;
    AnyBitmap pageImage = page.ToBitmap();
    double pageWidth = page.Width;
    double pageHeight = page.Height;

    foreach (var paragraph in page.Paragraphs)
    {
        // Paragraph properties
        int paragraphNumber = paragraph.ParagraphNumber;
        string paragraphText = paragraph.Text;
        double paragraphConfidence = paragraph.Confidence;
        var textDirection = paragraph.TextDirection;

        foreach (var line in paragraph.Lines)
        {
            // Line details including baseline information
            string lineText = line.Text;
            double lineConfidence = line.Confidence;
            double baselineAngle = line.BaselineAngle;
            double baselineOffset = line.BaselineOffset;

            foreach (var word in line.Words)
            {
                // Word-level data
                string wordText = word.Text;
                double wordConfidence = word.Confidence;

                // Font information (when available)
                if (word.Font != null)
                {
                    string fontName = word.Font.FontName;
                    double fontSize = word.Font.FontSize;
                    bool isBold = word.Font.IsBold;
                    bool isItalic = word.Font.IsItalic;
                }

                foreach (var character in word.Characters)
                {
                    // Character-level analysis
                    string charText = character.Text;
                    double charConfidence = character.Confidence;

                    // Alternative character choices for spell-checking
                    OcrResult.Choice[] alternatives = character.Choices;
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

Resumo

O IronOCR oferece aos desenvolvedores C# a implementação mais avançada da API Tesseract , funcionando perfeitamente em plataformas Windows, Linux e Mac. Sua capacidade de ler com precisão o texto de uma imagem usando o IronOCR - mesmo em documentos imperfeitos - o diferencia das soluções básicas de OCR.

Os recursos exclusivos da biblioteca incluem leitura integrada de código de barras e a capacidade de exportar resultados como PDFs pesquisáveis ​​ou HTML HOCR, funcionalidades indisponíveis nas implementações padrão do Tesseract.

Seguindo em frente

Para continuar a dominar o IronOCR:

Download do código-fonte

Pronto para implementar a conversão de imagens em texto por OCR em C# em seus aplicativos? Baixe o IronOCR e comece seu teste gratuito hoje mesmo.

Perguntas frequentes

Como posso converter imagens em texto em C# sem usar o Tesseract?

Você pode usar o IronOCR para converter imagens em texto em C# sem precisar do Tesseract. O IronOCR simplifica o processo com métodos integrados que lidam diretamente com a conversão de imagem em texto.

Como posso melhorar a precisão do OCR em imagens de baixa qualidade?

O IronOCR oferece filtros de imagem como Input.Deskew() e Input.DeNoise() que podem ser usados para melhorar imagens de baixa qualidade, corrigindo a distorção e reduzindo o ruído, melhorando assim significativamente a precisão do OCR.

Quais são os passos para extrair texto de um documento com várias páginas usando OCR em C#?

Para extrair texto de documentos com várias páginas, o IronOCR permite carregar e processar cada página usando métodos como LoadPdf() para PDFs ou manipulando arquivos TIFF, convertendo efetivamente cada página em texto.

É possível ler simultaneamente códigos de barras e texto em uma imagem?

Sim, o IronOCR consegue ler tanto texto quanto códigos de barras em uma única imagem. Você pode habilitar a leitura de códigos de barras com ocr.Configuration.ReadBarCodes = true , o que permite a extração de dados de texto e de código de barras.

Como posso configurar o OCR para processar documentos em vários idiomas?

O IronOCR suporta mais de 125 idiomas e permite que você defina um idioma principal usando ocr.Language e adicione idiomas adicionais com ocr.AddSecondaryLanguage() para processamento de documentos multilíngues.

Quais métodos estão disponíveis para exportar resultados de OCR em diferentes formatos?

O IronOCR oferece vários métodos para exportar resultados de OCR, como SaveAsSearchablePdf() para PDFs, SaveAsTextFile() para texto simples e SaveAsHocrFile() para formato HTML HOCR.

Como posso otimizar a velocidade de processamento OCR para arquivos de imagem grandes?

Para otimizar a velocidade de processamento do OCR, use OcrLanguage.EnglishFast do IronOCR para um reconhecimento de idioma mais rápido e defina regiões específicas para OCR usando System.Drawing.Rectangle para reduzir o tempo de processamento.

Como faço para processar arquivos PDF protegidos por OCR?

Ao lidar com PDFs protegidos, utilize o método LoadPdf() juntamente com a senha correta. O IronOCR processa PDFs baseados em imagens convertendo automaticamente as páginas em imagens para o processamento de OCR.

O que devo fazer se os resultados do OCR não forem precisos?

Se os resultados do OCR forem imprecisos, considere usar os recursos de aprimoramento de imagem do IronOCR, como Input.Deskew() e Input.DeNoise() , e certifique-se de que os pacotes de idiomas corretos estejam instalados.

Posso personalizar o processo de OCR para excluir determinados caracteres?

Sim, o IronOCR permite a personalização do processo de OCR usando a propriedade BlackListCharacters para excluir caracteres específicos, melhorando a precisão e a velocidade de processamento ao focar apenas no texto relevante.

Jacob Mellor, Diretor de Tecnologia da Team Iron
Diretor de Tecnologia

Jacob Mellor é Diretor de Tecnologia da Iron Software e um engenheiro visionário pioneiro na tecnologia C# PDF. Como desenvolvedor original do código-fonte principal da Iron Software, ele moldou a arquitetura de produtos da empresa desde sua criação, transformando-a, juntamente com o CEO Cameron Rimington, em uma ...

Leia mais
Analisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente de Programa Principal - Equipe da Comunidade .NET
Jeff também é Gerente de Programa Principal das equipes do .NET e do Visual Studio. Ele é o produtor executivo da série de conferências virtuais .NET Conf e apresenta o "Fritz and Friends", uma transmissão ao vivo para desenvolvedores que vai ao ar duas vezes por semana, onde ele conversa sobre tecnologia e escreve código junto com os espectadores. Jeff cria workshops, apresentações e planeja conteúdo para os maiores eventos de desenvolvedores da Microsoft, incluindo o Microsoft Build, o Microsoft Ignite, a .NET Conf e o Microsoft MVP Summit.
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.