C# OCR Image to Text Tutorial: Convert Images to Text Without Tesseract
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.
-
Instale IronOCR com o Gerenciador de Pacotes NuGet
PM > Install-Package IronOcr -
Copie e execute este trecho de código.
string text = new IronTesseract().Read("image.png").Text; -
Implante para testar em seu ambiente de produção.
Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Baixe o IronOCR - a biblioteca OCR em C# para conversão de imagens em texto.
- Use a classe
IronTesseractpara ler texto de imagens instantaneamente. - Aplique filtros de imagem para melhorar a precisão do OCR em digitalizações de baixa qualidade.
- Processe vários idiomas com pacotes de idiomas para download.
- Exporte os resultados como PDFs pesquisáveis ou extraia sequências de texto.
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. O IronOCR fornece uma solução gerenciada usando a classe IronOcr.IronTesseract que maximiza a precisão e 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.6.2+, .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 o 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}");
}
' Basic C# OCR image to text conversion using IronOCR
' This example shows how to extract text from images without complex setup
Imports IronOcr
Imports System
Try
' Initialize IronTesseract for OCR operations
Dim ocrEngine = New IronTesseract()
' Path to your image file - supports PNG, JPG, TIFF, BMP, and more
Dim imagePath = "img\Screenshot.png"
' Create input and perform OCR to convert image to text
Using input = New OcrInput(imagePath)
' Read text from image and get results
Dim result As OcrResult = ocrEngine.Read(input)
' Display extracted text
Console.WriteLine(result.Text)
End Using
Catch ex As OcrException
' Handle OCR-specific errors
Console.WriteLine($"OCR Error: {ex.Message}")
Catch ex As Exception
' Handle general errors
Console.WriteLine($"Error: {ex.Message}")
End Try
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 internamente com operações complexas de OCR. 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.
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 em conjunto. 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 127 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);
}
Imports IronOcr
' Initialize IronTesseract for advanced OCR operations
Private ocr As New IronTesseract()
' Create input container for processing multiple images
Using input As New OcrInput()
' Process specific pages from multi-page TIFF files
Dim pageIndices() As Integer = { 1, 2 }
' Load TIFF frames - perfect for scanned documents
input.LoadImageFrames("img\Potter.tiff", pageIndices)
' Execute OCR to read text from image using IronOCR
Dim result As OcrResult = ocr.Read(input)
' Output the extracted text
Console.WriteLine(result.Text)
End Using
Essa configuração alcança consistentemente uma precisão quase perfeita em digitalizações de qualidade média. O método LoadImageFrames lida de forma eficiente com documentos de várias páginas, tornando-o ideal para cenários de processamento em lote.
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?
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}");
}
' Advanced Iron Tesseract C# example for low-quality images
Imports IronOcr
Imports System
Private ocr = New IronTesseract()
Try
Using input = New OcrInput()
' Load specific pages from poor-quality TIFF
Dim pageIndices = New Integer() { 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
Dim result As OcrResult = ocr.Read(input)
' Display results
Console.WriteLine("Recognized Text:")
Console.WriteLine(result.Text)
End Using
Catch ex As Exception
Console.WriteLine($"Error during OCR: {ex.Message}")
End Try
Usando Input.Deskew(), a precisão melhora para 99,8% em digitalizações de baixa qualidade, quase igualando os 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.
Na maioria dos cenários, Input.Deskew() e Input.DeNoise() proporcionam 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 as imagens no sentido horário (negativo para sentido anti-horário)OcrInput.Binarize(): Converte para preto e branco, melhorando o desempenho em cenários de baixo contrasteOcrInput.ToGrayScale(): Converte para escala de cinza para possíveis melhorias de velocidadeOcrInput.Contrast(): Ajusta automaticamente o contraste para maior precisãoOcrInput.DeNoise(): Remove artefatos digitais quando há ruído esperadoOcrInput.Invert(): Inverte as cores para texto branco sobre fundo pretoOcrInput.Dilate(): Expande os limites do textoOcrInput.Erode(): Reduz os limites do textoOcrInput.Deskew(): Corrige o alinhamento - essencial para documentos desalinhadosOcrInput.DeepCleanBackgroundNoise(): Remoção agressiva de ruídoOcrInput.EnhanceResolution: Melhora a qualidade da imagem em baixa resoluçãoOcrInput.DetectPageOrientation(): Detecta e corrige a rotação da página. Passe umOrientationDetectionModepara controlar a relação entre precisão e velocidade:Fast,Balanced,DetailedouExtremeDetailed(adicionado na versão 2025.8.6)
Os filtros Scale() e EnhanceResolution() são incompatíveis com o filtro SaveAsSearchablePdf() devido a um problema conhecido na versão 2025.12.3. Todos os outros filtros funcionam corretamente com saída em PDF pesquisável.
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);
}
Imports IronOcr
' Configure for speed - ideal for clean documents
Private ocr As 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 input As New OcrInput()
' Load specific pages from document
Dim pageIndices() As Integer = { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageIndices)
' Read with optimized settings
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
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 em C# do Iron Tesseract 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.LoadImage("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.LoadImage("img/ComSci.png", contentArea);
// Process only the defined region
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Imports IronOcr
Imports IronSoftware.Drawing
' Initialize OCR engine for targeted region processing
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Define exact region for OCR - coordinates in pixels
Dim contentArea As New System.Drawing.Rectangle(215, 1250, 1335, 280)
' Load image with specific area - perfect for forms and invoices
input.LoadImage("img/ComSci.png", contentArea)
' Process only the defined region
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
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 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 127 idiomas internacionais por meio de pacotes de idiomas convenientes. 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
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.LoadImage("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.LoadImage("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");
}
Imports IronOcr
' Configure for Arabic language OCR
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.Arabic
Using input As New OcrInput()
' Load Arabic text image
input.LoadImage("img/arabic.gif")
' IronOCR handles low-quality Arabic text that standard Tesseract cannot
Dim result = ocr.Read(input)
' Save to file (console may not display Arabic correctly)
result.SaveAsTextFile("arabic.txt")
End Using
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.LoadImage("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.LoadImage("img/MultiLanguage.jpeg");
var result = ocr.Read(input);
result.SaveAsTextFile("MultiLanguage.txt");
}
Imports IronOcr
' Multi-language OCR configuration
Dim ocr As 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 input As New OcrInput()
' Process multi-language document
input.LoadImage("img/MultiLanguage.jpeg")
Dim result = ocr.Read(input)
result.SaveAsTextFile("MultiLanguage.txt")
End Using
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.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
// Process specific frames from multi-frame images
int[] frameNumbers = { 1, 2 };
input.LoadImageFrames("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.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
// Process specific frames from multi-frame images
int[] frameNumbers = { 1, 2 };
input.LoadImageFrames("image3.gif", frameNumbers);
// Process all sources together
OcrResult result = ocr.Read(input);
// Verify page count
Console.WriteLine($"{result.Pages.Count} Pages processed.");
}
Imports IronOcr
' Multi-source document processing
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Add various image formats
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
' Process specific frames from multi-frame images
Dim frameNumbers As Integer() = {1, 2}
input.LoadImageFrames("image3.gif", frameNumbers)
' Process all sources together
Dim result As OcrResult = ocr.Read(input)
' Verify page count
Console.WriteLine($"{result.Pages.Count} Pages processed.")
End Using
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");
}
Imports IronOcr
Private ocr As New IronTesseract()
Using input As New OcrInput()
' Define pages to process (0-based indexing)
Dim pageIndices() As Integer = { 0, 1 }
' Load specific TIFF frames
input.LoadImageFrames("MultiFrame.Tiff", pageIndices)
' Extract text from all frames
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
Console.WriteLine($"{result.Pages.Count} Pages processed")
End Using
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.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
// Add specific frames from animated images
int[] gifFrames = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", gifFrames);
// Create searchable PDF
OcrResult result = ocr.Read(input);
// Pass true to apply any active OcrInput filters to the searchable PDF output (added v2025.5.11)
result.SaveAsSearchablePdf("searchable.pdf", true);
}
using System;
using IronOcr;
IronTesseract ocr = new IronTesseract();
using (OcrInput input = new OcrInput())
{
// Set document metadata
input.Title = "Quarterly Report";
// Combine multiple sources
input.LoadImage("image1.jpeg");
input.LoadImage("image2.png");
// Add specific frames from animated images
int[] gifFrames = new int[] { 1, 2 };
input.LoadImageFrames("image3.gif", gifFrames);
// Create searchable PDF
OcrResult result = ocr.Read(input);
// Pass true to apply any active OcrInput filters to the searchable PDF output (added v2025.5.11)
result.SaveAsSearchablePdf("searchable.pdf", true);
}
Imports System
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Set document metadata
input.Title = "Quarterly Report"
' Combine multiple sources
input.LoadImage("image1.jpeg")
input.LoadImage("image2.png")
' Add specific frames from animated images
Dim gifFrames As Integer() = {1, 2}
input.LoadImageFrames("image3.gif", gifFrames)
' Create searchable PDF
Dim result As OcrResult = ocr.Read(input)
' Pass true to apply any active OcrInput filters to the searchable PDF output (added v2025.5.11)
result.SaveAsSearchablePdf("searchable.pdf", True)
End Using
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");
}
Imports IronOcr
Private ocr = New IronTesseract()
Using input = New OcrInput()
' Set PDF metadata
input.Title = "Annual Report 2024"
' Process existing PDF
input.LoadPdf("example.pdf", "password")
' Generate searchable version
Dim result = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
End Using
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");
}
Imports IronOcr
Private ocr = New IronTesseract()
Using input = New OcrInput()
' Configure document properties
input.Title = "Scanned Archive Document"
' Select pages to process
Dim pageIndices = New Integer() { 1, 2 }
input.LoadImageFrames("example.tiff", pageIndices)
' Create searchable PDF from TIFF
Dim result As OcrResult = ocr.Read(input)
result.SaveAsSearchablePdf("searchable.pdf")
End Using
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.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf", "password");
// Add TIFF pages
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("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.LoadImage("image2.jpeg");
input.LoadPdf("example.pdf", "password");
// Add TIFF pages
var pageIndices = new int[] { 1, 2 };
input.LoadImageFrames("example.tiff", pageIndices);
// Export as HOCR with position data
OcrResult result = ocr.Read(input);
result.SaveAsHocrFile("hocr.html");
}
Imports IronOcr
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Set HTML title
input.Title = "Document Archive"
' Process multiple document types
input.LoadImage("image2.jpeg")
input.LoadPdf("example.pdf", "password")
' Add TIFF pages
Dim pageIndices As Integer() = {1, 2}
input.LoadImageFrames("example.tiff", pageIndices)
' Export as HOCR with position data
Dim result As OcrResult = ocr.Read(input)
result.SaveAsHocrFile("hocr.html")
End Using
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.LoadImage("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.LoadImage("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}");
}
}
Imports IronOcr
Dim ocr As New IronTesseract()
' Enable barcode detection
ocr.Configuration.ReadBarCodes = True
Using input As New OcrInput()
' Load image containing both text and barcodes
input.LoadImage("img/Barcode.png")
' Process both text and barcodes
Dim result = ocr.Read(input)
' Extract barcode data
For Each barcode In result.Barcodes
Console.WriteLine($"Barcode Value: {barcode.Value}")
Console.WriteLine($"Type: {barcode.Type}, Location: {barcode.Location}")
Next
End Using
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;
}
}
}
}
}
Imports System
Imports IronOcr
Imports IronSoftware.Drawing
' Configure with barcode support
Private ocr As New IronTesseract With {
.Configuration = { ReadBarCodes = True }
}
Private OcrInput As using
' Process multi-page document
Private pageIndices() As Integer = { 1, 2 }
input.LoadImageFrames("img\Potter.tiff", pageIndices)
Dim result As OcrResult = ocr.Read(input)
' Navigate the complete results hierarchy
For Each page In result.Pages
' Page-level data
Dim pageNumber As Integer = page.PageNumber
Dim pageText As String = page.Text
Dim pageWordCount As Integer = page.WordCount
' Extract page elements
Dim barcodes() As OcrResult.Barcode = page.Barcodes
Dim pageImage As AnyBitmap = page.ToBitmap()
Dim pageWidth As Double = page.Width
Dim pageHeight As Double = page.Height
For Each paragraph In page.Paragraphs
' Paragraph properties
Dim paragraphNumber As Integer = paragraph.ParagraphNumber
Dim paragraphText As String = paragraph.Text
Dim paragraphConfidence As Double = paragraph.Confidence
Dim textDirection = paragraph.TextDirection
For Each line In paragraph.Lines
' Line details including baseline information
Dim lineText As String = line.Text
Dim lineConfidence As Double = line.Confidence
Dim baselineAngle As Double = line.BaselineAngle
Dim baselineOffset As Double = line.BaselineOffset
For Each word In line.Words
' Word-level data
Dim wordText As String = word.Text
Dim wordConfidence As Double = word.Confidence
' Font information (when available)
If word.Font IsNot Nothing Then
Dim fontName As String = word.Font.FontName
Dim fontSize As Double = word.Font.FontSize
Dim isBold As Boolean = word.Font.IsBold
Dim isItalic As Boolean = word.Font.IsItalic
End If
For Each character In word.Characters
' Character-level analysis
Dim charText As String = character.Text
Dim charConfidence As Double = character.Confidence
' Alternative character choices for spell-checking
Dim alternatives() As OcrResult.Choice = character.Choices
Next character
Next word
Next line
Next paragraph
Next page
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:
- Explore nosso guia completo de primeiros passos.
- Veja exemplos práticos de código C#
- Consulte a documentação detalhada da API.
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.

