Converter Imagem em Texto no .NET MAUI com IronOCR
Introdução
A Microsoft lançou o .NET MAUI (Interface de Aplicativo Multi-plataforma), que é um framework para construir aplicações multiplataforma com o .NET Framework. Ele permite que você escreva código que roda no Android, iOS e Windows usando a mesma base de código, economizando tempo, recursos e esforço. .NET MAUI é de código aberto. Você pode obter o código-fonte do projeto .NET MAUI com exemplos no GitHub.
Neste Guia de Como Fazer, aprenderemos como criar um aplicativo para converter imagem em texto no .NET MAUI usando a biblioteca IronOCR com exemplos de leitura de texto.
Como Realizar OCR no .NET MAUI
- Baixe a biblioteca C# para realizar OCR no .NET MAUI
- Configure o frontend do projeto MAUI
- Passe o caminho completo da imagem usando a classe **FilePicker**
- Invoque o método `Read` para realizar OCR na imagem
- Acesse o texto extraído acessando a propriedade **Text** e exiba-o
IronOCR: Biblioteca OCR for .NET
IronOCR é uma biblioteca OCR NuGet for .NET que permite aos desenvolvedores integrar facilmente a funcionalidade de Reconhecimento Óptico de Caracteres (OCR) em seus projetos. Usando IronOCR, documentos PDF podem ser digitalizados e convertidos em texto/dados pesquisáveis e editáveis sem qualquer perda de qualidade de dados. Isso facilita para os usuários encontrarem as informações de que precisam em documentos PDF e fazer alterações ou correções, se necessário.
IronOCR é a versão mais avançada dos binários Tesseract disponíveis para qualquer plataforma. Ele oferece aumento de velocidade, precisão e uma DLL/API nativa que suporta todas as versões do Tesseract (desde o Tesseract 3 até o Tesseract 5) com uma instalação/download fácil.
O suporte a idiomas do IronOCR é extenso, com 125 idiomas internacionais disponíveis para os usuários. O idioma inglês é instalado por padrão com a ferramenta/DLL. No entanto, você pode adicionar mais idiomas facilmente instalando-os pelo NuGet ou baixando DLLs.
Comparação com Tesseract
O IronOCR é especificamente projetado para desenvolvedores C# e se integra perfeitamente com aplicações .NET. Em contrapartida, o Tesseract é uma biblioteca OCR genérica que requer que os desenvolvedores escrevam seus próprios wrappers para usá-lo com C#. Além disso, o IronOCR oferece precisão e velocidade superiores em comparação com outras bibliotecas, graças aos seus inovadores algoritmos de inteligência artificial.
IronOCR vem com documentação abrangente e suporte técnico, facilitando para desenvolvedores iniciantes se prepararem e rodarem rapidamente.
IronOCR é muito mais preciso que o Tesseract. Na verdade, ele tem uma taxa de precisão de mais de 99%, enquanto a taxa de precisão do Tesseract é de apenas cerca de 70,2% a 92,9%. Obtenha mais informações e suporte sobre a comparação entre IronOCR e Tesseract neste vídeo do YouTube.
Passos para Criar um aplicativo OCR MAUI
Siga estes passos para criar um aplicativo OCR no framework .NET MAUI usando IronOCR.
Pré-requisitos
Para criar um aplicativo OCR no .NET MAUI, estes são os pré-requisitos:
- Visual Studio 2022 (Versão mais recente)
- .NET 6 ou 7
- Pacotes MAUI instalados no Visual Studio
- Um projeto .NET MAUI rodando no Visual Studio
Instalar IronOCR
O primeiro passo é instalar a biblioteca IronOCR usando o Console do Gerenciador de Pacotes NuGet. Abra o Console do Gerenciador de Pacotes NuGet clicando com o botão direito no explorador de soluções e execute o seguinte comando para instalar a biblioteca IronOCR:
Install-Package IronOcr
Design do Frontend
Vamos desenhar o frontend da aplicação nesta seção. Abra o arquivo MainPage.xaml.
MainPage.xaml
Designamos um botão que nos ajudará a selecionar a imagem ou documento PDF para OCR. A propriedade Clicked do botão está configurada para executar a função IOCR que definiremos na próxima seção.
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
Aqui, nós criamos um elemento Image com o nome OCRImage. Esta caixa de imagem mostrará o arquivo selecionado.
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
Em seguida, criamos um controle Editor. Ele será usado para mostrar o texto extraído da imagem ou documento PDF.
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
Aqui está a marcação completa da Interface de Usuário XAML.
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="IronOCR_MAUI_Test.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="IronOCR_MAUI_Test.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
Agora, é hora de escrever o código para a funcionalidade OCR.
Código para OCR usando IronOCR
Abra o arquivo de classe MainPage.xaml.cs e escreva a seguinte função:
MainPage.xaml.cs
private async void IOCR(object sender, EventArgs e)
{
// Prompt user to select an image using FilePicker
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
// Get the full path of the selected image
var path = images.FullPath.ToString();
// Display the selected image in the Image control
OCRImage.Source = path;
// Create an IronTesseract object to perform OCR
var ocr = new IronTesseract();
// Perform OCR and extract text from the selected image
using (var input = new OcrInput())
{
input.AddImage(path); // Add image to the OCR input
OcrResult result = ocr.Read(input); // Perform OCR
string text = result.Text; // Extract text
// Display extracted text in the Editor control
outputText.Text = text;
}
}
private async void IOCR(object sender, EventArgs e)
{
// Prompt user to select an image using FilePicker
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
// Get the full path of the selected image
var path = images.FullPath.ToString();
// Display the selected image in the Image control
OCRImage.Source = path;
// Create an IronTesseract object to perform OCR
var ocr = new IronTesseract();
// Perform OCR and extract text from the selected image
using (var input = new OcrInput())
{
input.AddImage(path); // Add image to the OCR input
OcrResult result = ocr.Read(input); // Perform OCR
string text = result.Text; // Extract text
// Display extracted text in the Editor control
outputText.Text = text;
}
}
Private Async Sub IOCR(ByVal sender As Object, ByVal e As EventArgs)
' Prompt user to select an image using FilePicker
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
' Get the full path of the selected image
Dim path = images.FullPath.ToString()
' Display the selected image in the Image control
OCRImage.Source = path
' Create an IronTesseract object to perform OCR
Dim ocr = New IronTesseract()
' Perform OCR and extract text from the selected image
Using input = New OcrInput()
input.AddImage(path) ' Add image to the OCR input
Dim result As OcrResult = ocr.Read(input) ' Perform OCR
Dim text As String = result.Text ' Extract text
' Display extracted text in the Editor control
outputText.Text = text
End Using
End Sub
Vamos decompor o código acima:
- O código usa o
FilePickerpara permitir que o usuário selecione um arquivo de imagem do dispositivo. O seletor de arquivos está configurado para permitir apenas imagens.
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
Dim path = images.FullPath.ToString()
- O controle
Imageestá configurado para exibir a imagem selecionada usando seu caminho de arquivo.
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
- Um objeto
IronTesseracté criado para realizar OCR. A imagem selecionada é adicionada a um objetoOcrInput. O métodoReadé chamado para extrair texto da imagem, que então é exibido no controleEditor.
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
input.AddImage(path)
Dim result As OcrResult = ocr.Read(input)
Dim text As String = result.Text
outputText.Text = text
End Using
Saída
Depois de rodar o projeto, a seguinte interface de usuário aparece. Quando você clica no botão, será solicitado a selecionar uma imagem/PDF de qualquer local.
Saída OCR
Depois de selecionar a imagem, IronOCR processa a imagem e mostra as palavras reconhecidas no controle Editor. Você pode copiar o texto do controle Editor.
Imagem OCR
Dos resultados, fica claro que o IronOCR realiza um trabalho maravilhoso ao processar imagens complexas com padrões, mostrando resultados precisos. IronOCR é capaz de detectar pequenos detalhes e selecionar as letras exatas necessárias usando seus modelos pré-treinados.
<{i:(Running the project in release mode with debugging attached might cause issues. Em tais casos, você pode publicar o projeto como um aplicativo .NET MAUI não empacotado, conforme mostrado no link abaixo, para garantir que o aplicativo funcione corretamente.
Conclusão
Para leitura adicional, consulte este tutorial que fornece informações adicionais sobre como usar o IronOCR para ler texto de imagens.
IronOCR é gratuito para propósitos de desenvolvimento. Você pode comprá-lo por um preço muito baixo a partir de apenas $799. Confira o plano de preços aqui.
Perguntas frequentes
Para que serve o .NET MAUI no desenvolvimento de aplicativos?
O .NET MAUI (Multi-platform App UI) é usado para criar aplicativos multiplataforma com uma única base de código, permitindo que os desenvolvedores criem aplicativos para as plataformas Android, iOS e Windows.
Como os desenvolvedores podem realizar OCR em um aplicativo .NET MAUI?
Os desenvolvedores podem realizar OCR em um aplicativo .NET MAUI integrando o IronOCR, uma biblioteca OCR for .NET. O IronOCR permite a conversão de imagens e PDFs em texto pesquisável e editável.
Quais são os passos para configurar o IronOCR em um projeto .NET MAUI?
Para configurar o IronOCR em um projeto .NET MAUI, instale a biblioteca IronOCR via NuGet, configure seu frontend no Visual Studio e implemente o código C# necessário para realizar o OCR usando o objeto IronTesseract.
Qual a precisão do IronOCR no processamento de texto?
O IronOCR oferece uma alta taxa de precisão, superior a 99%, no processamento de texto, tornando-o mais confiável do que outras soluções de OCR, como o Tesseract, devido aos seus algoritmos avançados de IA.
O IronOCR consegue lidar com vários idiomas?
Sim, o IronOCR suporta 125 idiomas internacionais, com o inglês instalado por padrão. Idiomas adicionais podem ser adicionados via NuGet ou baixando DLLs específicas para cada idioma.
Como selecionar um arquivo de imagem para OCR em um aplicativo .NET MAUI?
Em um aplicativo .NET MAUI, você pode selecionar um arquivo de imagem para OCR usando a classe FilePicker , que permite aos usuários escolher imagens de seus dispositivos para extração de texto.
Qual é a função do controle Editor na exibição dos resultados de OCR?
O controle Editor em um aplicativo .NET MAUI é usado para exibir o texto extraído de imagens processadas pelo IronOCR, fornecendo uma interface para os usuários visualizarem os resultados do OCR.
Existe algum custo associado ao uso do IronOCR para desenvolvimento?
O IronOCR pode ser usado gratuitamente para fins de desenvolvimento. No entanto, é necessária uma licença para uso em produção, que pode ser obtida a um preço competitivo.
O que torna o IronOCR a escolha preferida dos desenvolvedores C#?
O IronOCR é a escolha preferida dos desenvolvedores C# devido à sua integração perfeita com aplicativos .NET, alta precisão, velocidade e suporte a vários idiomas, o que o torna superior a muitas outras bibliotecas de OCR.
Como os desenvolvedores podem aprimorar a funcionalidade de seu aplicativo OCR .NET MAUI?
Os desenvolvedores podem aprimorar seu aplicativo .NET MAUI OCR explorando os recursos adicionais fornecidos pelo IronOCR, utilizando sua documentação abrangente e suporte para implementar recursos avançados.

