Como Realizar OCR no Android em .NET MAUI

This article was translated from English: Does it need improvement?
Translated
View the article in English
Android related to Como Realizar OCR no Android em .NET MAUI

.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 OCR para o Android!!

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
Biblioteca NuGet C# para PDF
### Instalar com NuGet
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".

Criar projeto de aplicativo .NET MAUI

Incluir a biblioteca IronOcr.Android

A biblioteca pode ser adicionada de várias maneiras. A maneira mais fácil é talvez usando o NuGet.

  1. Dentro do Visual Studio, clique com o botão direito em "Dependências" e selecione "Gerenciar Pacotes NuGet ...".
  2. Selecione a guia "Navegar" e pesquise por "IronOcr.Android".
  3. Selecione o pacote "IronOcr.Android" e clique em "Instalar".

Baixar pacote IronOcr.Android

Para evitar problemas com outras plataformas, modifique o arquivo csproj para incluir o pacote apenas ao mirar a plataforma Android. Para fazer isso:

  1. Clique com o botão direito no projeto e selecione "Editar Arquivo de Projeto".
  2. Crie um novo elemento ItemGroup assim:

    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    XML
  3. 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 MainActivity e invoque o método Initialize.
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);
        }
    }
}
$vbLabelText   $csharpLabel

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>
XML

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);
            }
        }
    }
}
$vbLabelText   $csharpLabel

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.

Execute .NET MAUI App project

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 .

Clique aqui para baixar o projeto.

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.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 5,525,971 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronOcr
executar um exemplo Veja sua imagem se transformar em texto pesquisável.