Como Converter Imagem em Texto no Android em .NET MAUI com IronOCR
.NET MAUI (Multi-platform App UI) é uma evolução do framework Xamarin.Forms, projetado para criar aplicativos multiplataforma para Android, iOS, macOS e Windows usando .NET. .NET MAUI visa simplificar o processo de construção de interfaces de usuário nativas que podem rodar em múltiplas plataformas.
O pacote IronOcr.Android traz suporte para converter imagem em texto e realizar leitura de texto no Android!!
Como usar o IronOCR no Android em .NET MAUI
- Baixe a biblioteca C# para realizar OCR no Android
- Criar um projeto de aplicativo .NET MAUI
- Edite o arquivo XAML para exibir um botão de ativação e um texto de saída.
- Edite o arquivo C# correspondente para executar o OCR.
- Baixe o projeto de exemplo para começar rapidamente.
Pacote IronOCR Android
O pacote IronOcr.Android habilita recursos OCR em dispositivos Android via projetos multiplataforma em .NET. O pacote básico do IronOCR não é necessário.
Install-Package IronOcr.Android
Install-Package IronOcr.Android
Criar um projeto .NET MAUI
Abra o Visual Studio e clique em "Criar um novo projeto". Procure por MAUI, selecione .NET MAUI App e clique em "Próximo".

Incluir a biblioteca IronOcr.Android
A biblioteca pode ser adicionada de várias maneiras. A maneira mais fácil é talvez usando o NuGet.
- Dentro do Visual Studio, clique com o botão direito em "Dependências" e selecione "Gerenciar Pacotes NuGet ...".
- Selecione a guia "Navegar" e pesquise por "IronOcr.Android".
- Selecione o pacote "IronOcr.Android" e clique em "Instalar".

Para evitar problemas com outras plataformas, modifique o arquivo csproj para incluir o pacote apenas ao mirar a plataforma Android. Para fazer isso:
- Clique com o botão direito no projeto e selecione "Editar Arquivo de Projeto".
-
Crie um novo elemento ItemGroup assim:
<ItemGroup Condition="$(TargetFramework.Contains('android')) == true"> </ItemGroup><ItemGroup Condition="$(TargetFramework.Contains('android')) == true"> </ItemGroup>XML - Mova a referência "IronOcr.Android" para dentro do ItemGroup que acabamos de criar.
As etapas acima evitarão que o pacote "IronOcr.Android" seja usado em, por exemplo, plataformas iOS (para esse fim, instale IronOcr.iOS em vez disso).
Editar "MainActivity.cs"
- Abra o arquivo "MainActivity.cs" navegando até Plataformas -> Android.
- Adicione o método
MainActivitye invoque o métodoInitialize.
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.OS;
using IronOcr;
namespace MAUIIronOCRAndroidSample
{
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
{
public MainActivity()
{
// Initialize IronTesseract for OCR purposes
IronTesseract.Initialize(this);
}
}
}
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.OS;
using IronOcr;
namespace MAUIIronOCRAndroidSample
{
[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
{
public MainActivity()
{
// Initialize IronTesseract for OCR purposes
IronTesseract.Initialize(this);
}
}
}
Imports Android.App
Imports Android.Content.PM
Imports Android.Runtime
Imports Android.OS
Imports IronOcr
Namespace MAUIIronOCRAndroidSample
<Activity(Theme := "@style/Maui.SplashTheme", MainLauncher := True, ConfigurationChanges := ConfigChanges.ScreenSize Or ConfigChanges.Orientation Or ConfigChanges.UiMode Or ConfigChanges.ScreenLayout Or ConfigChanges.SmallestScreenSize Or ConfigChanges.Density)>
Public Class MainActivity
Inherits MauiAppCompatActivity
Public Sub New()
' Initialize IronTesseract for OCR purposes
IronTesseract.Initialize(Me)
End Sub
End Class
End Namespace
Editar "MainPage.xaml"
Edite o arquivo XAML para exibir um botão e um rótulo para mostrar o resultado do OCR. Por exemplo:
<?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="MAUIIronOCRAndroidSample.MainPage">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button
Text="Import File"
Clicked="ReadFileOnImport"
Grid.Row="0"
HorizontalOptions="Center"
Margin="20, 20, 20, 10"/>
<ScrollView
Grid.Row="1"
BackgroundColor="LightGray"
Padding="10"
Margin="10, 10, 10, 30">
<Label x:Name="OutputText"/>
</ScrollView>
</Grid>
</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="MAUIIronOCRAndroidSample.MainPage">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button
Text="Import File"
Clicked="ReadFileOnImport"
Grid.Row="0"
HorizontalOptions="Center"
Margin="20, 20, 20, 10"/>
<ScrollView
Grid.Row="1"
BackgroundColor="LightGray"
Padding="10"
Margin="10, 10, 10, 30">
<Label x:Name="OutputText"/>
</ScrollView>
</Grid>
</ContentPage>
Editar "MainPage.xaml.cs"
Primeiro, crie uma instância do objeto IronTesseract. Certifique-se de que IronTesseract seja inicializado uma vez dentro da classe, como demonstrado no código abaixo. Instanciá-lo dentro de um método pode ser ineficaz e pode causar erros inesperados.
Em seguida, use o método FilePicker.PickAsync para selecionar um arquivo, depois abra um fluxo de leitura a partir do FileResult. Crie um novo objeto OcrInput e carregue a imagem nele. Execute o OCR na imagem usando a instância tesseract e recupere o texto. Por fim, exiba o texto resultante em um rótulo.
using IronOcr;
using Microsoft.Maui.Controls;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
namespace MAUIIronOCRAndroidSample
{
public partial class MainPage : ContentPage
{
// Initialize IronTesseract once in a class
private readonly IronTesseract ocrTesseract = new IronTesseract();
public MainPage()
{
InitializeComponent();
// Apply License key if required
IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01";
}
private async void ReadFileOnImport(object sender, EventArgs e)
{
try
{
// Configure the file picker
var options = new PickOptions
{
PickerTitle = "Please select a file"
};
// Await user's file selection
var result = await FilePicker.PickAsync(options);
if (result != null)
{
using var stream = await result.OpenReadAsync();
// Instantiate OcrInput
using var ocrInput = new OcrInput();
// Load image stream for OCR processing
ocrInput.AddImage(stream);
// Perform OCR
var ocrResult = ocrTesseract.Read(ocrInput);
// Display extracted text
OutputText.Text = ocrResult.Text;
}
}
catch (Exception ex)
{
// Log and handle exceptions
Debug.WriteLine(ex);
}
}
}
}
using IronOcr;
using Microsoft.Maui.Controls;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
namespace MAUIIronOCRAndroidSample
{
public partial class MainPage : ContentPage
{
// Initialize IronTesseract once in a class
private readonly IronTesseract ocrTesseract = new IronTesseract();
public MainPage()
{
InitializeComponent();
// Apply License key if required
IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01";
}
private async void ReadFileOnImport(object sender, EventArgs e)
{
try
{
// Configure the file picker
var options = new PickOptions
{
PickerTitle = "Please select a file"
};
// Await user's file selection
var result = await FilePicker.PickAsync(options);
if (result != null)
{
using var stream = await result.OpenReadAsync();
// Instantiate OcrInput
using var ocrInput = new OcrInput();
// Load image stream for OCR processing
ocrInput.AddImage(stream);
// Perform OCR
var ocrResult = ocrTesseract.Read(ocrInput);
// Display extracted text
OutputText.Text = ocrResult.Text;
}
}
catch (Exception ex)
{
// Log and handle exceptions
Debug.WriteLine(ex);
}
}
}
}
Imports IronOcr
Imports Microsoft.Maui.Controls
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Threading.Tasks
Namespace MAUIIronOCRAndroidSample
Partial Public Class MainPage
Inherits ContentPage
' Initialize IronTesseract once in a class
Private ReadOnly ocrTesseract As New IronTesseract()
Public Sub New()
InitializeComponent()
' Apply License key if required
IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01"
End Sub
Private Async Sub ReadFileOnImport(ByVal sender As Object, ByVal e As EventArgs)
Try
' Configure the file picker
Dim options = New PickOptions With {.PickerTitle = "Please select a file"}
' Await user's file selection
Dim result = Await FilePicker.PickAsync(options)
If result IsNot Nothing Then
Dim stream = Await result.OpenReadAsync()
' Instantiate OcrInput
Dim ocrInput As New OcrInput()
' Load image stream for OCR processing
ocrInput.AddImage(stream)
' Perform OCR
Dim ocrResult = ocrTesseract.Read(ocrInput)
' Display extracted text
OutputText.Text = ocrResult.Text
End If
Catch ex As Exception
' Log and handle exceptions
Debug.WriteLine(ex)
End Try
End Sub
End Class
End Namespace
Por último, no arquivo .csproj, certifique-se de que você está construindo o projeto apenas para Android. Como o pacote que adicionamos é apenas para Android, construir o projeto para todas as plataformas falhará.
Execute o projeto
Isso mostrará como executar o projeto e realizar OCR.
Baixar Projeto de App .NET MAUI
Você pode baixar o código completo deste guia. Ele está compactado em um arquivo zip que pode ser aberto no Visual Studio como um projeto de aplicativo .NET MAUI .
Usando IronOcr.Android no Avalonia
Semelhante ao MAUI, o IronOcr.Android pode ser usado em um projeto Avalonia com a mesma configuração descrita acima.
Se você deseja realizar OCR no iOS, navegue até o artigo seguinte para saber mais: "Como Realizar OCR no iOS em .NET MAUI"
Perguntas frequentes
Como posso realizar OCR no Android em um aplicativo .NET MAUI?
Para realizar OCR no Android usando .NET MAUI, instale o pacote IronOcr.Android via NuGet no Visual Studio. Utilize a classe IronTesseract para processar imagens e extrair texto. Certifique-se de que seu projeto esteja configurado para Android, modificando o arquivo .csproj adequadamente.
Qual é a finalidade do pacote IronOcr.Android?
O pacote IronOcr.Android foi projetado especificamente para trazer recursos de OCR para dispositivos Android em projetos .NET MAUI. Ele simplifica a integração de recursos de reconhecimento de texto em aplicativos multiplataforma para Android.
Como configuro um projeto .NET MAUI para OCR no Android?
Configure seu projeto .NET MAUI instalando o pacote IronOcr.Android via NuGet. Ajuste o arquivo .csproj para direcionar o projeto para Android criando um novo elemento ItemGroup e movendo a referência do pacote IronOcr.Android para dentro dele. Isso evita problemas de compilação em outras plataformas.
Quais modificações são necessárias no arquivo MainActivity.cs para a configuração do OCR?
No arquivo MainActivity.cs, em Platforms -> Android, adicione o método MainActivity e chame o método Initialize do IronTesseract. Isso configura os recursos de OCR necessários para processar texto em imagens.
Como posso editar o arquivo MainPage.xaml para incorporar recursos de OCR?
Edite o arquivo MainPage.xaml para incluir um botão para importar arquivos e um rótulo para exibir os resultados do OCR. Defina os elementos de interface do usuário necessários para interagir com a lógica de processamento do OCR e gerenciar a entrada do usuário de forma eficaz.
O que devo fazer se encontrar erros durante o processamento de OCR?
Utilize blocos try-catch em torno do seu código de processamento OCR para lidar com exceções. Registre quaisquer erros usando Debug.WriteLine ou outro mecanismo de registro para ajudar no diagnóstico e correção de problemas.
É possível usar o pacote IronOcr.Android em projetos Avalonia?
Sim, o pacote IronOcr.Android pode ser usado em projetos Avalonia com um processo de configuração semelhante ao do .NET MAUI. Ajuste a configuração do projeto de acordo para habilitar a funcionalidade de OCR.
Onde posso encontrar um projeto de exemplo completo para OCR em Android usando .NET MAUI?
Um projeto de exemplo completo para OCR em Android usando a biblioteca IronOCR em .NET MAUI está disponível para download através de um link fornecido no guia. O projeto é um arquivo compactado, pronto para ser aberto no Visual Studio.
Como posso garantir que o pacote IronOcr.Android seja direcionado apenas para Android em um projeto multiplataforma?
Para garantir que o pacote IronOcr.Android seja direcionado apenas para Android, modifique o arquivo .csproj criando um ItemGroup condicional para Android e movendo a referência do pacote IronOcr.Android para dentro dele. Isso evita conflitos ao compilar para outras plataformas.

