Como Realizar OCR no iOS em .NET MAUI

This article was translated from English: Does it need improvement?
Translated
View the article in English
iOS

.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. MAUI visa simplificar o processo de construção de interfaces de usuário nativas que podem ser executadas em várias plataformas.

O pacote IronOcr.iOS traz suporte de OCR para iOS!

Pacote IronOCR para iOS

O pacote IronOcr.iOS permite recursos de OCR em dispositivos iOS via projetos multiplataforma .NET. O pacote básico do IronOCR não é necessário.

Install-Package IronOCR
Biblioteca NuGet C# para PDF

Instalar com NuGet

Install-Package IronOCR

Criar um projeto .NET MAUI

Na seção Multiplataforma, selecione .NET MAUI App e continue.

Criar projeto de aplicativo .NET MAUI

Incluir a Biblioteca IronOCR.iOS

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 "Dependencies > NuGet" e selecione "Manage NuGet Packages ...".
  2. Selecione a aba "Procurar" e pesquise por "IronOcr.iOS".
  3. Selecione o pacote "IronOcr.iOS" e clique em "Adicionar Pacote".

Baixar pacote IronOCR.iOS

Para evitar problemas com outras plataformas, modifique o arquivo csproj para incluir o pacote somente quando o alvo for a plataforma iOS. Para fazer isso:

  1. Clique com o botão direito no arquivo *.csproj do seu projeto e selecione "Editar Arquivo do Projeto".
  2. Crie um novo elemento ItemGroup da seguinte forma:

    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
        <PackageReference Include="IronOcr.iOS" Version="YOUR_PACKAGE_VERSION" />
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
        <PackageReference Include="IronOcr.iOS" Version="YOUR_PACKAGE_VERSION" />
    </ItemGroup>
    XML
  3. Mova a PackageReference "IronOCR.iOS" para dentro do ItemGroup que acabamos de criar.

As etapas acima impedirão que o pacote "IronOcr.iOS" seja usado em, por exemplo, plataformas Android (para esse fim, instale o IronOcr.Android em vez disso).

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="MAUIIronOCRiOSSample.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="MAUIIronOCRiOSSample.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"

Comece instanciando o objeto IronTesseract. Certifique-se de inicializar IronTesseract uma vez em uma classe, conforme mostrado no código abaixo. Instanciá-la diretamente em um método não é eficaz e pode levar a erros inesperados. Em seguida, use o método FilePicker.PickAsync para selecionar um arquivo. A partir do método FileResult, abra um fluxo para leitura. Crie um novo objeto OcrInput e use esse objeto para carregar a imagem. Use a instância do Tesseract para executar OCR na imagem e retornar o texto. Por fim, exiba o texto resultante em um rótulo.

A implementação atual está limitada apenas a arquivos de imagem. O pacote ainda não funciona com documentos PDF. Com isso em mente, qualquer configuração relacionada a documentos PDF deve permanecer desativada.

using System;
using IronOcr;
using Microsoft.Maui.Controls;

namespace MAUIIronOCRiOSSample;

public partial class MainPage : ContentPage
{
    // Initialize IronTesseract once in a class
    private IronTesseract ocrTesseract = new IronTesseract();

    public MainPage()
    {
        InitializeComponent();
        // Apply license key
        IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
    }

    private async void ReadFileOnImport(object sender, EventArgs e)
    {
        try
        {
            var options = new PickOptions
            {
                PickerTitle = "Please select a file"
            };

            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
                ocrInput.LoadImage(stream);

                // Perform OCR
                var ocrResult = ocrTesseract.Read(ocrInput);
                OutputText.Text = ocrResult.Text;
            }
        }
        catch (Exception ex)
        {
            // Handle exceptions
            System.Diagnostics.Debug.WriteLine(ex);
        }
    }
}
using System;
using IronOcr;
using Microsoft.Maui.Controls;

namespace MAUIIronOCRiOSSample;

public partial class MainPage : ContentPage
{
    // Initialize IronTesseract once in a class
    private IronTesseract ocrTesseract = new IronTesseract();

    public MainPage()
    {
        InitializeComponent();
        // Apply license key
        IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
    }

    private async void ReadFileOnImport(object sender, EventArgs e)
    {
        try
        {
            var options = new PickOptions
            {
                PickerTitle = "Please select a file"
            };

            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
                ocrInput.LoadImage(stream);

                // Perform OCR
                var ocrResult = ocrTesseract.Read(ocrInput);
                OutputText.Text = ocrResult.Text;
            }
        }
        catch (Exception ex)
        {
            // Handle exceptions
            System.Diagnostics.Debug.WriteLine(ex);
        }
    }
}
Imports System
Imports IronOcr
Imports Microsoft.Maui.Controls

Namespace MAUIIronOCRiOSSample

	Partial Public Class MainPage
		Inherits ContentPage

		' Initialize IronTesseract once in a class
		Private ocrTesseract As New IronTesseract()

		Public Sub New()
			InitializeComponent()
			' Apply license key
			IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
		End Sub

		Private Async Sub ReadFileOnImport(ByVal sender As Object, ByVal e As EventArgs)
			Try
				Dim options = New PickOptions With {.PickerTitle = "Please select a file"}

				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
					ocrInput.LoadImage(stream)

					' Perform OCR
					Dim ocrResult = ocrTesseract.Read(ocrInput)
					OutputText.Text = ocrResult.Text
				End If
			Catch ex As Exception
				' Handle exceptions
				System.Diagnostics.Debug.WriteLine(ex)
			End Try
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Por fim, altere o alvo de compilação para o iOS Simulator e execute o projeto.

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.iOS no Avalonia

Configurar IronOcr.iOS no Avalonia é semelhante ao MAUI, com uma diferença crucial: além da versão mais recente do SDK do .NET, você também precisa do .NET SDK 8.0.101 instalado para executar IronOcr.iOS com sucesso. Depois, o IronOcr.iOS pode ser usado em um projeto Avalonia com a mesma configuração descrita acima.

Se você quiser realizar OCR no Android, navegue para o seguinte artigo para saber mais: "Como Realizar OCR no Android no .NET MAUI"

Perguntas frequentes

Como faço para integrar a funcionalidade de OCR em um aplicativo .NET MAUI para iOS?

Você pode integrar a funcionalidade de OCR em um aplicativo .NET MAUI para iOS usando o pacote IronOCR.iOS. Instale-o via NuGet no Visual Studio e, em seguida, modifique o arquivo de projeto para incluir o pacote condicionalmente para a plataforma iOS. Use IronTesseract para processar imagens e extrair texto.

Posso usar o pacote IronOCR.iOS para processamento de documentos PDF?

Não, o pacote IronOCR.iOS está atualmente limitado ao processamento de arquivos de imagem e não oferece suporte a documentos PDF. Certifique-se de que todas as configurações relacionadas a PDF estejam desativadas em seu projeto.

Quais são os passos envolvidos na configuração de OCR para um aplicativo iOS usando .NET MAUI?

A configuração do OCR para um aplicativo iOS usando o .NET MAUI envolve o download do pacote IronOcr.iOS via NuGet, a modificação do arquivo de projeto para incluir condicionalmente o pacote para iOS e a edição dos arquivos MainPage.xaml e MainPage.xaml.cs para criar a interface do usuário e lidar com o processamento de OCR.

Quais são os requisitos adicionais para usar o IronOCR em projetos Avalonia?

Ao usar o IronOCR em projetos Avalonia, você precisa garantir que tenha a versão mais recente do SDK do .NET e também o SDK do .NET 8.0.101 instalado. Essa configuração é semelhante à do MAUI, mas requer este SDK adicional.

Como posso realizar OCR em uma imagem usando o IronOCR em um projeto .NET MAUI?

Em um projeto .NET MAUI, utilize o objeto IronTesseract para realizar OCR em uma imagem. Use FilePicker.PickAsync para selecionar um arquivo de imagem, carregue-o em um objeto OcrInput e, em seguida, use IronTesseract para ler a imagem e extrair o texto.

Existe algum projeto de exemplo para implementar OCR no iOS usando .NET MAUI?

Sim, você pode baixar um projeto de exemplo .NET MAUI usando o IronOCR.iOS do site da Iron Software. Este projeto de exemplo está disponível como um arquivo compactado que você pode abrir no Visual Studio para agilizar seu processo de desenvolvimento.

O IronOCR é fácil de integrar em projetos existentes?

Sim, o IronOCR é fácil de integrar em projetos C# existentes. Com documentação detalhada e suporte, os desenvolvedores podem facilmente adicionar funcionalidades OCR às suas aplicações.

O IronOCR oferece recursos de pré-processamento de imagem?

O IronOCR inclui recursos de pré-processamento de imagem para melhorar a precisão do OCR, como redução de ruído, correção de rotação e ajuste de contraste.

O IronOCR pode ser usado em aplicações na nuvem?

De fato, o IronOCR pode ser implantado em ambientes de nuvem, tornando-o adequado para aplicações web e serviços que requerem capacidades de OCR.

Como posso melhorar a precisão dos resultados de OCR com o IronOCR?

Para melhorar a precisão do OCR com o IronOCR, assegure imagens de entrada de alta qualidade, use pacotes de idiomas apropriados e aproveite os recursos de pré-processamento de imagem da biblioteca.

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 Baixar 5,896,332 | Versão: 2026.5 just released
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.