Como Converter Imagem em Texto em Região Específica com IronOCR em C
Para extrair texto de uma região específica ao converter imagem em texto em C#, use o objeto Rectangle do IronOCR para definir a área exata, especificando as coordenadas y, width e height, e depois passe-a para o método LoadImage para leitura de texto direcionada.
Início Rápido: Extrair Texto de uma Região Específica da Imagem
-
Instale IronOCR com o Gerenciador de Pacotes NuGet
PM > Install-Package IronOcr -
Copie e execute este trecho de código.
using IronOcr; using IronSoftware.Drawing; // 1. Install IronOCR via NuGet: Install-Package IronOcr var ocr = new IronTesseract(); using var input = new OcrInput(); // 2. Create a Rectangle with coordinates var region = new Rectangle(x: 215, y: 1250, width: 1335, height: 280); // 3. Load image with region input.LoadImage("image.png", region); // 4. Extract text var result = ocr.Read(input); Console.WriteLine(result.Text); -
Implante para testar em seu ambiente de produção.
Comece a usar IronOCR em seu projeto hoje com uma avaliação gratuita
Muitas vezes, basta extrair o texto de uma pequena parte de uma imagem, como o valor total de uma fatura ou um campo específico de um formulário. A digitalização completa do documento é ineficiente e pode introduzir erros ao capturar texto irrelevante.
O IronOCR permite melhorar a precisão, o desempenho e a exatidão, especificando a região retangular exata a ser digitalizada. Este guia fornece um passo a passo sobre como definir uma região OCR específica, extrair texto dela e verificar visualmente se as coordenadas estão corretas para as tarefas de OCR.
Comece a usar o IronOCR
Como definir uma região OCR específica em uma imagem
- Baixe a biblioteca C# para definir a região de OCR.
- Instancie o mecanismo de OCR
- Especifique a região de OCR com um retângulo.
- Carregue a imagem com `LoadImage` juntamente com o retângulo definido.
- Acesse a propriedade **`OcrResult`** para visualizar e manipular os dados extraídos.
Como posso realizar OCR em uma região específica?
Para definir uma região de OCR específica, você cria um objeto Rectangle a partir do namespace IronSoftware.Drawing. Este objeto requer quatro valores: a coordenada x, a coordenada y, width e height, todos em pixels. As coordenadas (x, y) representam o canto superior esquerdo da área desejada.
Quando você carrega sua imagem usando LoadImage, você passa este Rectangle como o segundo parâmetro. O IronOCR restringirá então seu processo de OCR apenas aos pixels dentro dessa caixa delimitadora.
O OCR regional é particularmente útil ao trabalhar com documentos estruturados, como faturas , formulários digitalizados ou documentos de identidade , onde informações específicas sempre aparecem em locais previsíveis. Ao limitar o OCR apenas às áreas relevantes, você pode melhorar significativamente a velocidade de processamento e reduzir os falsos positivos provenientes de textos não relacionados.
Para encontrar as coordenadas para seu Rectangle, você pode usar um editor de imagem simples como o MS Paint. Abra sua imagem de entrada, coloque o mouse sobre os cantos superior esquerdo e inferior direito da região especificada e anote as coordenadas de pixel (x, y). Você pode então calcular as propriedades do retângulo: (x1, y1, width, height), onde width = x1 e height = y1.
Que imagem devo usar para o teste?
Usaremos uma imagem de exemplo com três parágrafos. Nosso objetivo é extrair apenas o segundo parágrafo e ignorar o restante do texto. Isso demonstra um cenário comum em que você precisa extrair campos ou seções específicas de um documento maior.
Como implementar OCR regional no código?
A implementação envolve criar um objeto OcrInput e carregar sua imagem com a região retangular especificada. Essa abordagem funciona com vários formatos de imagem, incluindo JPG, PNG, GIF, TIFF e BMP .
:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image.cs
using IronOcr;
using IronSoftware.Drawing;
using System;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// Define the specific region as a Rectangle
// (x, y) is the top-left corner.
var ContentArea = new Rectangle(x: 215, y: 1250, width: 1335, height: 280);
ocrInput.LoadImage("region-input.png", ContentArea);
var ocrResult = ocrTesseract.Read(ocrInput);
// Print the extracted text
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports IronSoftware.Drawing
Imports System
Dim ocrTesseract As New IronTesseract()
Using ocrInput As New OcrInput()
' Define the specific region as a Rectangle
' (x, y) is the top-left corner.
Dim ContentArea As New Rectangle(x:=215, y:=1250, width:=1335, height:=280)
ocrInput.LoadImage("region-input.png", ContentArea)
Dim ocrResult = ocrTesseract.Read(ocrInput)
' Print the extracted text
Console.WriteLine(ocrResult.Text)
End Using
Para cenários mais complexos, você pode definir várias regiões dentro da mesma imagem. Isso é particularmente útil ao processar formulários com vários campos ou tabelas em documentos :
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
using var input = new OcrInput();
// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);
// Load the same image multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);
input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);
input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);
// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
using IronOcr;
using IronSoftware.Drawing;
var ocr = new IronTesseract();
using var input = new OcrInput();
// Define multiple regions for different form fields
var nameField = new Rectangle(x: 100, y: 200, width: 300, height: 50);
var dateField = new Rectangle(x: 100, y: 300, width: 200, height: 50);
var amountField = new Rectangle(x: 400, y: 500, width: 150, height: 50);
// Load the same image multiple times with different regions
input.LoadImage("form.png", nameField);
var nameResult = ocr.Read(input);
input.Clear();
input.LoadImage("form.png", dateField);
var dateResult = ocr.Read(input);
input.Clear();
input.LoadImage("form.png", amountField);
var amountResult = ocr.Read(input);
// Process each field separately
Console.WriteLine($"Name: {nameResult.Text}");
Console.WriteLine($"Date: {dateResult.Text}");
Console.WriteLine($"Amount: {amountResult.Text}");
Imports IronOcr
Imports IronSoftware.Drawing
Dim ocr As New IronTesseract()
Using input As New OcrInput()
' Define multiple regions for different form fields
Dim nameField As New Rectangle(x:=100, y:=200, width:=300, height:=50)
Dim dateField As New Rectangle(x:=100, y:=300, width:=200, height:=50)
Dim amountField As New Rectangle(x:=400, y:=500, width:=150, height:=50)
' Load the same image multiple times with different regions
input.LoadImage("form.png", nameField)
Dim nameResult = ocr.Read(input)
input.Clear()
input.LoadImage("form.png", dateField)
Dim dateResult = ocr.Read(input)
input.Clear()
input.LoadImage("form.png", amountField)
Dim amountResult = ocr.Read(input)
' Process each field separately
Console.WriteLine($"Name: {nameResult.Text}")
Console.WriteLine($"Date: {dateResult.Text}")
Console.WriteLine($"Amount: {amountResult.Text}")
End Using
Que resultados posso esperar?
Como pode ser observado na saída do console, apenas o segundo parágrafo foi processado pelo OCR. Essa abordagem direcionada garante que textos irrelevantes de outras partes da imagem não interfiram nos seus resultados.
A precisão do OCR regional depende de vários fatores:
- Qualidade da imagem : Imagens com resolução mais alta geralmente produzem melhores resultados. Considere usar as configurações de DPI para otimizar suas imagens.
- Orientação do texto : Certifique-se de que o texto esteja alinhado corretamente. Utilize a detecção de rotação de página, se necessário.
- Contraste e nitidez : Aplique filtros de correção de imagem para melhorar a legibilidade do texto.
Como posso verificar se minhas coordenadas estão corretas?
Para garantir que você selecionou as coordenadas corretas para a imagem de entrada, você pode visualizar a ContentArea que definiu. Uma maneira simples de fazer isso é desenhar o retângulo na imagem de entrada e salvá-la como um novo arquivo com StampCropRectangleAndSaveAs. Isso ajuda você a depurar e ajustar as coordenadas para obter o desempenho ideal.
Essa técnica de visualização é especialmente útil ao trabalhar com layouts complexos ou quando é necessário destacar áreas de texto específicas para fins de garantia de qualidade.
Aqui está a imagem resultante após desenhar a caixa delimitadora especificada na imagem de entrada de exemplo acima.
Como faço para visualizar a região selecionada?
:path=/static-assets/ocr/content-code-examples/how-to/ocr-region-of-an-image-highlighted.cs
using IronOcr;
using IronSoftware.Drawing;
var ocrTesseract = new IronTesseract();
using var ocrInput = new OcrInput();
// Define the specific rectangular area to scan within the image.
// The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
var ContentArea = new Rectangle(x: 4, y: 59, width: 365, height: 26);
ocrInput.LoadImage("region-input.png", ContentArea);
var ocrResult = ocrTesseract.Read(ocrInput);
// Draws the rectangle from above in a blue bounding box on the image for visualization.
ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png");
Imports IronOcr
Imports IronSoftware.Drawing
Dim ocrTesseract = New IronTesseract()
Using ocrInput As New OcrInput()
' Define the specific rectangular area to scan within the image.
' The coordinates are in pixels: (x, y) is the top-left corner of the rectangle.
Dim ContentArea As New Rectangle(x:=4, y:=59, width:=365, height:=26)
ocrInput.LoadImage("region-input.png", ContentArea)
Dim ocrResult = ocrTesseract.Read(ocrInput)
' Draws the rectangle from above in a blue bounding box on the image for visualization.
ocrInput.StampCropRectangleAndSaveAs(ContentArea, Color.Aqua, "region-input.png")
End Using
Como será a visualização?
O retângulo azul claro confirma que isolamos corretamente o segundo parágrafo para processamento.
Quando devo usar o OCR regional?
O OCR regional é ideal para diversos cenários comuns:
- Processamento de formulários : Ao extrair campos específicos de formulários padronizados onde os dados aparecem em locais consistentes.
- Processamento de Faturas : Para extrair valores específicos, como totais, datas ou números de faturas, sem processar o documento inteiro.
- Placas de veículos : Ao usar o reconhecimento de placas , concentre-se apenas na área da placa.
- Documentos de identidade : Extrair campos específicos de passaportes ou carteiras de identidade.
- Capturas de tela : Ao capturar texto de elementos específicos da interface do usuário em capturas de tela .
Melhores práticas para OCR regional
Para obter resultados ótimos com OCR regional:
- Adicione espaçamento : Inclua uma pequena margem ao redor do texto para garantir que nenhum caractere seja cortado nas bordas.
- Teste com imagens de amostra : Sempre verifique suas coordenadas com amostras representativas antes de processar grandes lotes.
- Lidar com variações : Leve em consideração pequenas variações de posicionamento em documentos digitalizados, criando regiões ligeiramente maiores do que o necessário.
- Otimizar o desempenho : Para processamento multithread , processe diferentes regiões em paralelo.
- Monitore a confiança : Verifique os índices de confiança dos resultados para garantir a precisão.
Ao concentrar o processamento OCR em regiões específicas, você pode melhorar significativamente tanto a velocidade quanto a precisão de suas tarefas de extração de texto. Essa abordagem direcionada é essencial para a criação de fluxos de trabalho de processamento de documentos eficientes em seus aplicativos .NET.
Perguntas frequentes
Como posso extrair texto apenas de uma parte específica de uma imagem em C#?
Com o IronOCR, você pode extrair texto de uma região específica criando um objeto Retângulo com coordenadas x/y, largura e altura. Passe esse Retângulo como segundo parâmetro para o método LoadImage, e o IronOCR restringirá o processamento de OCR apenas à área definida.
Quais são as vantagens de definir uma região de OCR em vez de digitalizar a imagem inteira?
Ao definir uma região OCR específica com o IronOCR, você pode melhorar a velocidade de processamento, aumentar a precisão e reduzir erros na captura de texto irrelevante. Isso é especialmente útil para documentos estruturados, onde as informações aparecem em locais previsíveis.
Quais parâmetros preciso para criar um retângulo para OCR regional?
Para criar um retângulo para o OCR regional do IronOCR, você precisa de quatro valores em pixels: coordenada x, coordenada y, largura e altura. As coordenadas (x, y) representam o canto superior esquerdo da área de digitalização desejada.
Qual namespace contém o objeto Rectangle para regiões OCR?
O objeto Rectangle usado para definir regiões de OCR no IronOCR está localizado no namespace IronSoftware.Drawing.
Que tipos de documentos se beneficiam mais do processamento OCR regional?
O OCR regional do IronOCR é particularmente eficaz para documentos estruturados, como faturas, formulários digitalizados e documentos de identidade, onde informações específicas aparecem consistentemente nos mesmos locais.

