Jak wykonać OCR na Androidzie w .NET MAUI

This article was translated from English: Does it need improvement?
Translated
View the article in English
Android related to Jak wykonać OCR na Androidzie w .NET MAUI

.NET MAUI (Multi-platform App UI) to ewolucja frameworka Xamarin.Forms, zaprojektowana do tworzenia aplikacji wielopłatformowych dla systemów Android, iOS, macOS i Windows przy użyciu .NET. .NET MAUI ma na celu uproszczenie procesu tworzenia natywnych interfejsów użytkownika, które mogą działać na wielu platformach.

Pakiet IronOcr.Android przynosi wsparcie OCR dla Android!

Pakiet IronOCR dla systemu Android

Pakiet IronOcr.Android umożliwia korzystanie z funkcji OCR na urządzeniach z systemem Android poprzez projekty wielopłatformowe .NET. Standardowy pakiet IronOCR nie jest potrzebny.

Zainstaluj pakiet IronOcr.Android
Biblioteka C# NuGet dla plików PDF

Zainstaluj za pomocą NuGet

Zainstaluj pakiet IronOcr.Android

Utwórz projekt .NET MAUI

Otworz Visual Studio i kliknij na "Utworz nowy projekt". Wyszukaj MAUI, wybierz .NET MAUI App i "Dalej".

Utwórz projekt aplikacji .NET MAUI

Dodaj bibliotekę IronOcr.Android

Biblioteke można dodac na różne sposoby. Najłatwiej jest uzyc NuGet.

  1. W Visual Studio, kliknij prawym przyciskiem myszy na "Dependencies" i wybierz "Manage NuGet Packages ...".
  2. Wybierz zakładkę "Przeglądaj" i wyszukaj "IronOcr.Android".
  3. Wybierz pakiet "IronOcr.Android" i kliknij "Zainstaluj".

Pobierz pakiet IronOcr.Android

Aby uniknąć problemow z innymi platformami, zmodyfikuj plik csproj, aby uwzględnić pakiet tylko przy celowaniu w platforme Android. Aby to zrobic:

  1. Kliknij prawym przyciskiem myszy na projekt i wybierz "Edytuj plik projektu".
  2. Utworz nowy element ItemGroup, jak poniżej:

    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    XML
  3. Przenieś odwołanie do pakietu "IronOcr.Android" do właśnie utworzonej grupy ItemGroup.

Powyższe kroki zapobiegną użyciu pakietu "IronOcr.Android" np. na platformach iOS (w tym celu należy zainstalować IronOcr.iOS).

Edytuj "MainActivity.cs"

  • Otwórz plik "MainActivity.cs", przechodząc do Platforms -> Android.
  • Dodaj metode MainActivity i wywolaj metode Initialize.
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.OS;
using IronOcr;

namespace MAUI IronOCRAndroidSample
{
    [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 MAUI IronOCRAndroidSample
{
    [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 MAUI_IronOCRAndroidSample

    <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
$vbLabelText   $csharpLabel

Edytuj "MainPage.xaml"

Edytuj plik XAML, aby wyświetlić przycisk i etykietę pokazujące wynik OCR. Na przykład:

<?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="MAUI IronOCRAndroidSample.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="MAUI IronOCRAndroidSample.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

Edytuj "MainPage.xaml.cs"

Najpierw utworz instancje obiektu IronTesseract. Upewnij sie, ze IronTesseract jest inicjalizowany raz wewnatrz klasy, jak pokazano w kodzie ponizej. Utworzenie instancji w ramach metody może być nieskuteczne i może powodować nieoczekiwane błędy.

Nastepnie uzyj metody FilePicker.PickAsync, aby wybrac plik, a nastepnie otworz strumien odczytu z FileResult. Utworz nowy obiekt OcrInput i zaladuj do niego obraz. Wykonaj OCR na obrazie za pomocą instancji Tesseract i odzyskaj tekst. Na koniec wyświetl wynikowy tekst w etykiecie.

using IronOcr;
using Microsoft.Maui.Controls;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;

namespace MAUI IronOCRAndroidSample
{
    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 MAUI IronOCRAndroidSample
{
    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 MAUI_IronOCRAndroidSample
    Public Partial 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(sender As Object, e As EventArgs)
            Try
                ' Configure the file picker
                Dim options As New PickOptions With {
                    .PickerTitle = "Please select a file"
                }

                ' Await user's file selection
                Dim result = Await FilePicker.PickAsync(options)
                If result IsNot Nothing Then
                    Using stream = Await result.OpenReadAsync()
                        ' Instantiate OcrInput
                        Using 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 Using
                    End Using
                End If
            Catch ex As Exception
                ' Log and handle exceptions
                Debug.WriteLine(ex)
            End Try
        End Sub
    End Class
End Namespace
$vbLabelText   $csharpLabel

Na koniec, w pliku .csproj, upewnij sie, ze tylko budujesz projekt dla Androida. Ponieważ dodany przez nas pakiet jest przeznaczony wyłącznie dla systemu Android, kompilacja projektu dla wszystkich platform zakończy się niepowodzeniem.

Uruchom projekt

Poniżej przedstawiono instrukcję uruchamiania projektu i przeprowadzania OCR.

Execute .NET MAUI App project

Pobierz projekt aplikacji .NET MAUI

Możesz pobrać pełny kod do tego przewodnika. Jest dostępny jako spakowany plik, który możesz otworzyć w Visual Studio jako projekt .NET MAUI App.

[Kliknij tutaj, aby pobrać projekt.](/static-assets/ocr/how-to/setup-android/MAUI IronOCRAndroidSample.zip)

Korzystanie z IronOcr.Android w Avalonii

Podobnie jak MAUI, IronOcr.Android może być używany w projekcie Avalonia przy takiej samej konfiguracji, jak opisano powyżej.

Jeśli chcesz przeprowadzić OCR na iOS, przejdź do następującego artykułu, aby dowiedzieć się więcej: "Jak przeprowadzić OCR na iOS w .NET MAUI"

Często Zadawane Pytania

Jak mogę przeprowadzić OCR na Androidzie w aplikacji .NET MAUI?

Aby wykonać OCR na Androidzie przy użyciu .NET MAUI, zainstaluj pakiet IronOcr.Android za pośrednictwem NuGet w Visual Studio. Użyj klasy IronTesseract do przetwarzania obrazów i wyodrębniania tekstu. Upewnij się, że projekt jest skonfigurowany dla Androida, odpowiednio modyfikując plik .csproj.

Jaki jest cel pakietu IronOcr.Android?

Pakiet IronOcr.Android został zaprojektowany specjalnie w celu zapewnienia funkcji OCR na urządzeniach z systemem Android w ramach projektów .NET MAUI. Ułatwia on integrację funkcji rozpoznawania tekstu w aplikacjach wielopłatformowych przeznaczonych dla systemu Android.

Jak skonfigurować projekt .NET MAUI dla OCR na Androida?

Skonfiguruj swój projekt .NET MAUI, instalując pakiet IronOcr.Android za pośrednictwem NuGet. Dostosuj plik .csproj do platformy Android, tworząc nowy element ItemGroup i przenosząc do niego odwołanie do pakietu IronOcr.Android. Pozwoli to uniknąć problemów z kompilacją na innych platformach.

Jakie modyfikacje są potrzebne w pliku MainActivity.cs w celu skonfigurowania OCR?

W pliku MainActivity.cs w folderze Platforms -> Android dodaj metodę MainActivity i wywołaj metodę Initialize z biblioteki IronTesseract. Spowoduje to skonfigurowanie funkcji OCR niezbędnych do przetwarzania tekstu z obrazów.

Jak mogę edytować plik MainPage.xaml, aby włączyć funkcje OCR?

Edytuj plik MainPage.xaml, aby dodać przycisk do importowania plików oraz etykietę do wyświetlania wyników OCR. Zdefiniuj niezbędne elementy interfejsu użytkownika, aby umożliwić interakcję z logiką przetwarzania OCR i efektywnie zarządzać danymi wprowadzanymi przez użytkownika.

Co należy zrobić, jeśli podczas przetwarzania OCR pojawią się błędy?

Użyj bloków try-catch wokół kodu przetwarzania OCR, aby obsługiwać wyjątki. Rejestruj wszelkie błędy za pomocą Debug.WriteLine lub innego mechanizmu logowania, aby ułatwić diagnozowanie i naprawianie problemów.

Czy można używać pakietu IronOcr.Android w projektach Avalonia?

Tak, pakiet IronOcr.Android może być używany w projektach Avalonia przy użyciu procesu konfiguracji podobnego do tego w .NET MAUI. Dostosuj konfigurację projektu odpowiednio, aby włączyć funkcjonalność OCR.

Gdzie mogę znaleźć kompletny przykładowy projekt dotyczący OCR dla systemu Android z wykorzystaniem .NET MAUI?

Kompletny przykładowy projekt OCR dla systemu Android wykorzystujący bibliotekę IronOCR w .NET MAUI jest dostępny do pobrania poprzez link podany w przewodniku. Projekt jest dostarczany w postaci spakowanego pliku, gotowego do otwarcia w programie Visual Studio.

Jak zapewnić, aby pakiet IronOcr.Android był przeznaczony wyłącznie dla systemu Android w projekcie wielopłatformowym?

Aby upewnić się, że pakiet IronOcr.Android jest przeznaczony wyłącznie dla systemu Android, zmodyfikuj plik .csproj, tworząc warunkową grupę ItemGroup dla Androida i przenosząc do niej odwołanie do pakietu IronOcr.Android PackageReference. Zapobiega to konfliktom podczas kompilacji dla innych platform.

Jak mogę poprawić dokładność wyników OCR z IronOCR?

Aby poprawić dokładność OCR w IronOCR, zapewnij wysokiej jakości obrazy wejściowe, używaj odpowiednich pakietów językowych i wykorzystuj funkcje przetwarzania wstępnego obrazów biblioteki.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 6,136,090 | Wersja: 2026.7 właśnie wydany
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.