How to Perform OCR on Android in .NET MAUI

This article was translated from English: Does it need improvement?
Translated
View the article in English
class="container-fluid">
class="row">
class="col-md-2"> Android related to How to Perform OCR on Android in .NET MAUI

.NET MAUI (Multi-platform App UI) ist eine Weiterentwicklung des Xamarin.Forms-Frameworks, das entwickelt wurde, um plattformübergreifende Apps für Android, iOS, macOS und Windows mit .NET zu erstellen. .NET MAUI zielt darauf ab, den Prozess der Erstellung von nativen Benutzeroberflächen zu vereinfachen, die auf mehreren Plattformen ausgeführt werden können.

Das IronOcr.Android-Paket bringt OCR-Unterstützung nach Android!!

class="hsg-featured-snippet">

Wie man IronOCR auf Android in .NET MAUI verwendet

  1. Laden Sie die C#-Bibliothek herunter, um OCR auf Android durchzuführen
  2. Erstellen Sie ein .NET MAUI-App-Projekt
  3. Bearbeiten Sie die XAML-Datei, um eine Aktivierungsschaltfläche und Ausgabetext anzuzeigen
  4. Bearbeiten Sie die entsprechende C#-Datei, um das OCR durchzuführen
  5. Laden Sie das Beispielprojekt für einen schnellen Start herunter

IronOCR Android Paket

Das IronOcr.Android-Paket ermöglicht OCR-Funktionen auf Android-Geräten über .NET plattformübergreifende Projekte. Das Vanilla-IronOCR-Paket wird nicht benötigt.

Install-Package IronOcr.Android
class="products-download-section">
data-modal-id="trial-license-after-download">
class="product-image"> C# NuGet-Bibliothek für PDF
class="product-info">

Installieren mit NuGet

class="copy-nuget-row">
Install-Package IronOcr.Android
class="copy-button">
class="nuget-link">nuget.org/packages/IronOcr.Android/

Erstellen eines .NET MAUI-Projekts

Öffnen Sie Visual Studio und klicken Sie auf "Neues Projekt erstellen". Suchen Sie nach MAUI, wählen Sie .NET MAUI App und klicken Sie auf "Weiter".

Erstellen Sie ein .NET MAUI-App-Projekt

Fügen Sie die IronOCR.Android-Bibliothek hinzu

Die Bibliothek kann auf verschiedene Weise hinzugefügt werden. Die einfachste Methode ist vielleicht die Verwendung von NuGet.

  1. Klicken Sie in Visual Studio mit der rechten Maustaste auf "Abhängigkeiten" und wählen Sie "NuGet-Pakete verwalten ...".
  2. Wählen Sie die Registerkarte "Durchsuchen" und suchen Sie nach "IronOcr.Android".
  3. Wählen Sie das "IronOcr.Android"-Paket und klicken Sie auf "Installieren".

Laden Sie das IronOcr.Android-Paket herunter

Um Probleme mit anderen Plattformen zu vermeiden, ändern Sie die csproj-Datei, um das Paket nur dann einzubeziehen, wenn es auf der Android-Plattform ausgeführt wird. Um dies zu tun:

  1. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie "Projektdatei bearbeiten".
  2. Erstellen Sie ein neues ItemGroup-Element wie folgt:

    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    XML
  3. Verschieben Sie die "IronOcr.Android" PackageReference in die gerade erstellte ItemGroup.

Die obigen Schritte verhindern, dass das "IronOcr.Android"-Paket z.B. auf iOS-Plattformen verwendet wird (installieren Sie stattdessen IronOcr.iOS dafür).

Bearbeiten Sie "MainActivity.cs"

  • Öffnen Sie die Datei "MainActivity.cs", indem Sie zu Plattformen -> Android navigieren.
  • Fügen Sie die MainActivity-Methode hinzu und rufen Sie die Initialize-Methode auf.
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
$vbLabelText   $csharpLabel

Bearbeiten Sie "MainPage.xaml"

Bearbeiten Sie die XAML-Datei, um eine Schaltfläche und ein Label zur Anzeige des OCR-Ergebnisses anzuzeigen. Zum Beispiel:

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

Bearbeiten Sie "MainPage.xaml.cs"

Erstellen Sie zuerst eine Instanz des IronTesseract-Objekts. Stellen Sie sicher, dass IronTesseract innerhalb der Klasse einmalig initialisiert wird, wie im unten stehenden Code demonstriert. Die Instanziierung innerhalb einer Methode kann ineffektiv sein und unerwartete Fehler verursachen.

Verwenden Sie als Nächstes die Methode FilePicker.PickAsync, um eine Datei auszuwählen, und öffnen Sie dann einen Lesestream aus dem FileResult. Erstellen Sie ein neues OcrInput-Objekt und laden Sie das Bild hinein. Führen Sie OCR auf dem Bild mit der Tesseract-Instanz durch und rufen Sie den Text ab. Zeigen Sie schließlich den resultierenden Text in einem Label an.

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

Stellen Sie zuletzt sicher, dass Sie im .csproj-File das Projekt nur für Android erstellen. Da das hinzugefügte Paket nur für Android ist, wird das Erstellen des Projekts für alle Plattformen fehlschlagen.

Das Projekt ausführen

Dies zeigt Ihnen, wie Sie das Projekt ausführen und OCR durchführen.

Führen Sie das .NET MAUI-App-Projekt aus

Laden Sie das .NET MAUI App-Projekt herunter

Sie können den vollständigen Code für diesen Leitfaden herunterladen. Er kommt als gezippte Datei, die Sie in Visual Studio als .NET MAUI App-Projekt öffnen können.

Klicken Sie hier, um das Projekt herunterzuladen.

Verwendung von IronOcr.Android in Avalonia

Ähnlich wie bei MAUI kann IronOcr.Android in einem Avalonia-Projekt mit der oben beschriebenen Einrichtung verwendet werden.

Wenn Sie OCR auf iOS durchführen möchten, gehen Sie zu folgendem Artikel, um mehr zu erfahren: "Wie man OCR auf iOS in .NET MAUI durchführt"

Häufig gestellte Fragen

Wie kann ich OCR auf Android in einer .NET MAUI-Anwendung durchführen?

Um OCR auf Android mit .NET MAUI durchzuführen, installieren Sie das IronOcr.Android-Paket über NuGet in Visual Studio. Verwenden Sie die IronTesseract-Klasse, um Bilder zu verarbeiten und Text zu extrahieren. Stellen Sie sicher, dass Ihr Projekt so konfiguriert ist, dass es Android anvisiert, indem Sie die .csproj-Datei entsprechend ändern.

Was ist der Zweck des IronOcr.Android-Pakets?

Das IronOcr.Android-Paket ist speziell dafür entwickelt worden, OCR-Fähigkeiten auf Android-Geräten innerhalb von .NET MAUI-Projekten zu bringen. Es vereinfacht die Integration von Texterkennungs-Funktionen in plattformübergreifende Anwendungen, die Android anvisieren.

Wie konfiguriere ich ein .NET MAUI-Projekt für Android OCR?

Konfigurieren Sie Ihr .NET MAUI-Projekt, indem Sie das IronOcr.Android-Paket über NuGet installieren. Passen Sie die .csproj-Datei an, um Android anzuvisieren, indem Sie ein neues ItemGroup-Element erstellen und den IronOcr.Android PackageReference darin verschieben. Dies vermeidet Build-Probleme für andere Plattformen.

Welche Änderungen sind in MainActivity.cs für die OCR-Einrichtung erforderlich?

Fügen Sie in der MainActivity.cs-Datei unter Platforms -> Android die Methode MainActivity hinzu und rufen Sie die Initialize-Methode von IronTesseract auf. Dies richtet die OCR-Fähigkeiten ein, die erforderlich sind, um Text aus Bildern zu verarbeiten.

Wie kann ich MainPage.xaml bearbeiten, um OCR-Funktionen zu integrieren?

Bearbeiten Sie MainPage.xaml, um eine Schaltfläche zum Importieren von Dateien und ein Label zum Anzeigen von OCR-Ergebnissen einzuschließen. Definieren Sie die notwendigen UI-Elemente, um mit der Logik der OCR-Verarbeitung zu interagieren und Benutzerinput effektiv zu verwalten.

Was soll ich tun, wenn ich während der OCR-Verarbeitung auf Fehler stoße?

Verwenden Sie try-catch-Blöcke um Ihren OCR-Verarbeitungscode, um Ausnahmen zu behandeln. Protokollieren Sie alle Fehler mit Debug.WriteLine oder einem anderen Logging-Mechanismus, um bei der Diagnose und Behebung von Problemen zu helfen.

Ist es möglich, das IronOcr.Android-Paket in Avalonia-Projekten zu verwenden?

Ja, das IronOcr.Android-Paket kann in Avalonia-Projekten verwendet werden mit einem ähnlichen Einrichtungsprozess wie in .NET MAUI. Passen Sie die Projektkonfiguration entsprechend an, um die OCR-Funktionalität zu aktivieren.

Wo finde ich ein vollständiges Beispielprojekt für Android OCR mit .NET MAUI?

Ein vollständiges Beispielprojekt für Android OCR mit der IronOCR-Bibliothek in .NET MAUI steht über einen im Leitfaden bereitgestellten Link zum Download zur Verfügung. Das Projekt kommt als ZIP-Datei, bereit zum Öffnen in Visual Studio.

Wie stelle ich sicher, dass das IronOcr.Android-Paket nur Android in einem Mehrplattformprojekt anvisiert?

Um sicherzustellen, dass das IronOcr.Android-Paket nur Android anvisiert, ändern Sie die .csproj-Datei, indem Sie eine bedingte ItemGroup für Android erstellen und den IronOcr.Android PackageReference darin verschieben. Dies verhindert Konflikte beim Erstellen für andere Plattformen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 5,044,537 | Version: 2025.11 gerade veröffentlicht