Como Converter Imagem em Texto com Visão Computacional em C
O IronOCR usa visão computacional OpenCV para detectar automaticamente regiões de texto em imagens antes de converter imagem em texto. Isso melhora a precisão da leitura de texto em imagens ruidosas, com várias regiões ou distorções, focando o reconhecimento Tesseract apenas nas áreas identificadas, melhorando significativamente os resultados da extração em comparação com o processamento de imagens inteiras.
Início Rápido: Detectar e OCR a Região de Texto Primária
Este exemplo demonstra extração de texto imediata: carregue uma imagem, use a visão computacional do IronOCR para detectar automaticamente a região principal do texto com FindTextRegion(), depois execute .Read(...) para extrair texto em uma linha.
-
Instale IronOCR com o Gerenciador de Pacotes NuGet
PM > Install-Package IronOcr -
Copie e execute este trecho de código.
using var result = new IronTesseract().Read(new OcrInput().LoadImage("image.png").FindTextRegion()); -
Implante para testar em seu ambiente de produção.
Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita
- Como OCR Placa de Carro em C# (Tutorial)
- Como Obter Texto de Fatura em C# Tutorial
- Como OCR Obter Texto a partir de Captura de Tela em C#
- Como OCR Legendas em C# (Tutorial)
- Baixe a biblioteca C# para usar OCR com Visão Computacional
- Utilize o método `FindTextRegion` para detectar automaticamente regiões de texto
- Verifique qual região de texto foi detectada com o método `StampCropRectangleAndSaveAs`
- Use visão computacional para separar a imagem original em imagens baseadas nas regiões de texto com o método `FindMultipleTextRegions`
- Use o método `GetTextRegions` para obter a lista de áreas de corte onde o texto foi detectado
Como Instalo o IronOcr.ComputerVision via Pacote NuGet?
Os métodos OpenCV que realizam Visão Computacional no IronOCR são visíveis no pacote NuGet regular do IronOCR. Para orientações detalhadas sobre a instalação, veja nosso guia de instalação do NuGet.
Por Que o IronOCR Exige um Pacote de Visão Computacional Separado?
Usar esses métodos requer a instalação do NuGet do IronOcr.ComputerVision na solução. Você será solicitado a baixá-lo se não tiver instalado. A funcionalidade de visão computacional aproveita algoritmos OpenCV que melhoram significativamente a precisão da detecção de texto, semelhante às técnicas usadas em nosso reconhecimento de placa de veículo e escaneamento de passaportes.
Qual Pacote Específico de Plataforma Devo Instalar?
- Windows:
IronOcr.ComputerVision.Windows- Veja nosso guia de configuração do Windows - Linux:
IronOcr.ComputerVision.Linux- Confira nosso tutorial de instalação no Linux - macOS:
IronOcr.ComputerVision.MacOS- Revise nossas instruções de configuração do macOS - macOS ARM:
IronOcr.ComputerVision.MacOS.ARM
Como Instalar Usando o Console do Gerenciador de Pacotes?
Instale usando o NuGet Package Manager ou cole o seguinte no Console do Gerenciador de Pacotes:
Install-Package IronOcr.ComputerVision.Windows
Isso fornece os assemblies necessários para usar o IronOCR Visão Computacional com nosso arquivo modelo.
Quais Métodos de Visão Computacional Estão Disponíveis no IronOCR?
Exemplos de código estão incluídos mais adiante neste tutorial. Aqui está uma visão geral dos métodos atualmente disponíveis:
| Método | Explicação |
|---|---|
| FindTextRegion | Detecte regiões que contenham elementos de texto e instrua o Tesseract a procurar texto apenas na área em que o texto foi detectado. |
| FindMultipleTextRegions | Detecte áreas que contenham elementos de texto e divida a página em imagens separadas com base nas regiões de texto. |
| GetTextRegions | Scans the image and returns a list of text regions as `List |
Como Uso o FindTextRegion para Detectar Áreas de Texto?
FindTextRegion usa visão computacional para detectar regiões contendo elementos de texto em cada página de um objeto OcrInput. Este método é particularmente útil ao processar imagens com texto disperso ou quando você precisa melhorar o desempenho focando apenas em áreas que contêm texto.
Qual é o Uso Básico do FindTextRegion?
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findtextregion-1.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindTextRegion();
OcrResult result = ocr.Read(input);
string resultText = result.Text;
Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text
IronOcr 2025.6.x e não aceita parâmetros personalizados.Como Posso Personalizar os Parâmetros do FindTextRegion?
Chamare este método com parâmetros personalizados para ajustar a detecção de texto. Estes parâmetros funcionam de forma semelhante às nossas configurações de filtro de imagem:
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findtextregion-2.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindTextRegion(Scale: 2.0, DilationAmount: 20, Binarize: true, Invert: true);
OcrResult result = ocr.Read(input);
string resultText = result.Text;
Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindTextRegion(Scale:= 2.0, DilationAmount:= 20, Binarize:= True, Invert:= True)
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text
Como é o FindTextRegion na Prática?
Neste exemplo, eu uso a seguinte imagem para um método que precisa recortar para áreas que contêm texto, mas as imagens de entrada podem variar quanto à localização do texto. Eu uso FindTextRegion para restringir a digitalização a uma área em que a visão computacional detectou texto. Essa abordagem é semelhante às técnicas usadas no nosso tutorial de áreas de conteúdo e regiões de recorte. Esta é uma imagem de exemplo:
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findtextregion-3.cs
using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Linq;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("wh-words-sign.jpg");
// Find the text region using Computer Vision
Rectangle textCropArea = input.GetPages().First().FindTextRegion();
// For debugging and demonstration purposes, lets see what region it found:
input.StampCropRectangleAndSaveAs(textCropArea, Color.Red, "image_text_area", AnyBitmap.ImageFormat.Png);
// Looks good, so let us apply this region to hasten the read:
var ocrResult = ocr.Read("wh-words-sign.jpg", textCropArea);
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Imports System.Linq
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("wh-words-sign.jpg")
' Find the text region using Computer Vision
Dim textCropArea As Rectangle = input.GetPages().First().FindTextRegion()
' For debugging and demonstration purposes, lets see what region it found:
input.StampCropRectangleAndSaveAs(textCropArea, Color.Red, "image_text_area", AnyBitmap.ImageFormat.Png)
' Looks good, so let us apply this region to hasten the read:
Dim ocrResult = ocr.Read("wh-words-sign.jpg", textCropArea)
Console.WriteLine(ocrResult.Text)
Como Faço para Depurar e Verificar a Detecção de Região de Texto?
Este código tem duas saídas. O primeiro é um arquivo .png salvo por StampCropRectangleAndSaveAs usado para depuração. Essa técnica também é abordada no nosso guia de realce de textos para depuração. Podemos ver onde o IronCV (Visão Computacional) detectou o texto:
A detecção identifica com precisão a área de texto. A segunda saída é o próprio texto:
IRONSOFTWARE
50,000+
Developers in our active community
10,777,061 19,313
NuGet downloads Support tickets resolved
50%+ 80%+
Engineering Team growth Support Team growth
$25,000+
Raised with #TEAMSEAS to clean our beaches & waterways
Como Uso o FindMultipleTextRegions para Múltiplas Áreas de Texto?
FindMultipleTextRegions pega todas as páginas de um objeto OcrInput e usa visão computacional para detectar áreas contendo elementos de texto, depois divide a entrada em imagens separadas com base nas regiões de texto. Isto é particularmente útil para processar documentos com múltiplas áreas de texto distintas, semelhante à nossa funcionalidade de leitura de tabela em documento:
Qual é o Uso Básico do FindMultipleTextRegions?
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findmultipletextregions-1.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindMultipleTextRegions();
OcrResult result = ocr.Read(input);
string resultText = result.Text;
Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindMultipleTextRegions()
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text
FindMultipleTextRegions não suporta mais parâmetros personalizados.Como Posso Personalizar os Parâmetros do FindMultipleTextRegions?
Chame este método com parâmetros personalizados para controlar como as regiões são detectadas e separadas:
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findmultipletextregions-2.cs
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("/path/file.png");
input.FindMultipleTextRegions(Scale: 2.0, DilationAmount: -1, Binarize: true, Invert: false);
OcrResult result = ocr.Read(input);
string resultText = result.Text;
Imports IronOcr
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("/path/file.png")
input.FindMultipleTextRegions(Scale:= 2.0, DilationAmount:= -1, Binarize:= True, Invert:= False)
Dim result As OcrResult = ocr.Read(input)
Dim resultText As String = result.Text
Como Processar Páginas Individuais com o FindMultipleTextRegions?
Outro método de sobrecarga do FindMultipleTextRegions pega uma Página OCR e retorna uma lista de Páginas OCR, uma para cada região de texto nela. Esta abordagem ajuda a lidar com layouts complexos, semelhante às técnicas descritas no nosso guia de processamento de TIFF multipágina:
:path=/static-assets/ocr/content-code-examples/how-to/computer-vision-findmultipletextregions-3.cs
using IronOcr;
using System.Collections.Generic;
using System.Linq;
int pageIndex = 0;
using var input = new OcrInput();
input.LoadImage("/path/file.png");
var selectedPage = input.GetPages().ElementAt(pageIndex);
List<OcrInputPage> textRegionsOnPage = selectedPage.FindMultipleTextRegions();
Imports IronOcr
Imports System.Collections.Generic
Imports System.Linq
Private pageIndex As Integer = 0
Private input = New OcrInput()
input.LoadImage("/path/file.png")
Dim selectedPage = input.GetPages().ElementAt(pageIndex)
Dim textRegionsOnPage As List(Of OcrInputPage) = selectedPage.FindMultipleTextRegions()
Como Uso o GetTextRegions para Obter as Coordenadas das Regiões de Texto?
GetTextRegions retorna uma lista de áreas de recorte onde o texto foi detectado em uma página. Este método é particularmente útil quando você precisa das coordenadas das regiões de texto para processamento posterior ou na implementação de fluxos de trabalho OCR personalizados. Para mais detalhes sobre como trabalhar com resultados, consulte nossa documentação da classe OcrResult:
Quando Devo Usar o GetTextRegions em Vez do FindTextRegion?
/* :path=/static-assets/ocr/content-code-examples/how-to/computer-vision-gettextregions.cs */
using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.Linq;
// Create a new IronTesseract object for OCR
var ocr = new IronTesseract();
// Load an image into OcrInput
using var input = new OcrInput();
input.LoadImage("/path/file.png");
// Get the first page from the input
var firstPage = input.GetPages().First();
// Get all text regions detected on this page
List<Rectangle> textRegions = firstPage.GetTextRegions();
// Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:");
foreach (var region in textRegions)
{
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}");
}
// You can also process each region individually
foreach (var region in textRegions)
{
var regionResult = ocr.Read(input, region);
Console.WriteLine($"Text in region: {regionResult.Text}");
}
/* :path=/static-assets/ocr/content-code-examples/how-to/computer-vision-gettextregions.cs */
using IronOcr;
using IronSoftware.Drawing;
using System;
using System.Collections.Generic;
using System.Linq;
// Create a new IronTesseract object for OCR
var ocr = new IronTesseract();
// Load an image into OcrInput
using var input = new OcrInput();
input.LoadImage("/path/file.png");
// Get the first page from the input
var firstPage = input.GetPages().First();
// Get all text regions detected on this page
List<Rectangle> textRegions = firstPage.GetTextRegions();
// Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:");
foreach (var region in textRegions)
{
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}");
}
// You can also process each region individually
foreach (var region in textRegions)
{
var regionResult = ocr.Read(input, region);
Console.WriteLine($"Text in region: {regionResult.Text}");
}
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Imports System.Collections.Generic
Imports System.Linq
' Create a new IronTesseract object for OCR
Dim ocr As New IronTesseract()
' Load an image into OcrInput
Using input As New OcrInput()
input.LoadImage("/path/file.png")
' Get the first page from the input
Dim firstPage = input.GetPages().First()
' Get all text regions detected on this page
Dim textRegions As List(Of Rectangle) = firstPage.GetTextRegions()
' Display information about each detected region
Console.WriteLine($"Found {textRegions.Count} text regions:")
For Each region In textRegions
Console.WriteLine($"Region at X:{region.X}, Y:{region.Y}, Width:{region.Width}, Height:{region.Height}")
Next
' You can also process each region individually
For Each region In textRegions
Dim regionResult = ocr.Read(input, region)
Console.WriteLine($"Text in region: {regionResult.Text}")
Next
End Using
Quais São os Casos de Uso Comuns para a Visão Computacional em OCR?
A visão computacional melhora significativamente a precisão do OCR em cenários desafiadores. Aqui estão aplicações práticas:
-
Análise de Layout de Documento: Identifique e processe automaticamente diferentes seções de documentos complexos. Especialmente útil com documentos escaneados.
-
Texto em Múltiplas Colunas: Separe e leia colunas independentemente para jornais ou revistas. Use processamento multithread para resultados mais rápidos.
-
Conteúdo Misto: Distinguir entre regiões de texto e gráficos em documentos. Útil ao processar fotos com texto embutido.
-
Otimização de Desempenho: Focar o processamento OCR apenas em áreas que contêm texto. Veja nosso guia de configuração rápida de OCR.
- Controle de Qualidade: Verifique a detecção de texto antes do processamento completo de OCR. Nossa função de rastreamento de progresso monitora cada estágio.
Com as configurações corretas e arquivos de entrada, o OCR pode alcançar uma capacidade de leitura quase humana. Para resultados ótimos, combine visão computacional com nossos filtros de otimização de imagem para alcançar a melhor precisão possível do OCR. Ao trabalhar com imagens de baixa qualidade, nosso guia sobre corrigir digitalizações de baixa qualidade fornece técnicas de pré-processamento valiosas.
Técnicas Avançadas de Visão Computacional
Para desenvolvedores que buscam ultrapassar os limites de precisão do OCR, considere essas abordagens avançadas:
- Treinamento Personalizado: Treine o motor OCR para fontes especializadas usando nosso guia de arquivos de linguagem personalizados
- Suporte a Múltiplos Idiomas: Processe documentos multilíngues com nossa função de múltiplos idiomas
- Integração de Código de Barras: Combine reconhecimento de texto com leitura de código de barras usando nossa capacidade de leitura de código de barras com OCR
Perguntas frequentes
O que é visão computacional em OCR e como ela melhora a extração de texto?
A Visão Computacional no IronOCR utiliza algoritmos OpenCV para detectar automaticamente regiões de texto em imagens antes do processamento OCR. Isso melhora significativamente a precisão para textos ruidosos, com múltiplas regiões ou distorcidos, concentrando o reconhecimento do Tesseract apenas nas áreas de texto identificadas, em vez de processar imagens inteiras.
Como posso implementar rapidamente OCR de visão computacional em C#?
O IronOCR permite implementar OCR por visão computacional em apenas uma linha de código: use o IronTesseract com o método FindTextRegion() para detectar automaticamente a região de texto principal e, em seguida, execute .Read() para extrair o texto imediatamente.
Por que preciso instalar um pacote de Visão Computacional separado?
O IronOCR requer o pacote NuGet IronOcr.ComputerVision, pois a funcionalidade de visão computacional utiliza algoritmos OpenCV. Esses algoritmos melhoram significativamente a precisão da detecção de texto e são essenciais para recursos como reconhecimento de placas de veículos e digitalização de passaportes.
Qual pacote de Visão Computacional específico para a plataforma devo instalar?
O IronOCR oferece pacotes específicos para cada plataforma: IronOcr.ComputerVision.Windows para sistemas Windows, IronOcr.ComputerVision.Linux para distribuições Linux e IronOcr.ComputerVision.MacOS para ambientes macOS.
Como posso detectar várias regiões de texto em uma imagem?
O IronOCR oferece o método FindMultipleTextRegions para separar a imagem original em múltiplas imagens com base nas regiões de texto detectadas. Você também pode usar o método GetTextRegions para obter uma lista das áreas recortadas onde o texto foi detectado.
Posso verificar quais regiões de texto foram detectadas antes do processamento?
Sim, o IronOCR inclui o método StampCropRectangleAndSaveAs, que permite verificar quais regiões de texto foram detectadas pelos algoritmos de Visão Computacional antes de executar o processo de OCR propriamente dito.

