OCR auf iOS in .NET MAUI durchführen

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

von Chaknith Bin

.NET MAUI(Multiplattform-App UI) ist eine Weiterentwicklung des Xamarin.Forms-Frameworks, das für die Erstellung plattformübergreifender Apps für Android, iOS, macOS und Windows unter Verwendung von .NET entwickelt wurde. MAUI zielt darauf ab, den Prozess der Erstellung nativer Benutzeroberflächen zu vereinfachen, die auf mehreren Plattformen laufen können.

Das IronOcr.iOS-Paket bringt OCR-Unterstützung für iOS!!

IronOCR iOS-Paket

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

PM > Install-Package IronOcr.iOS
C# NuGet-Bibliothek für PDF

Installieren mit NuGet

Installieren-Paket IronOcr.iOS

Erstellen eines .NET MAUI-Projekts

Wählen Sie unter dem Abschnitt Multiplattform die Option .NET MAUI App und fahren Sie fort.

.NET MAUI App Projekt erstellen

Einbindung der IronOCR.iOS-Bibliothek

Die Bibliothek kann auf verschiedene Weise hinzugefügt werden. Am einfachsten ist es vielleicht, wenn Sie NuGet verwenden.

  1. Klicken Sie in Visual Studio mit der rechten Maustaste auf "Dependencies > Nuget" und wählen Sie "Manage NuGet Packages ...".
  2. Wählen Sie die Registerkarte "Durchsuchen" und suchen Sie nach "IronOcr.iOS".
  3. Wählen Sie das Paket "IronOcr.iOS" und klicken Sie auf "Paket hinzufügen".

    IronOcr.iOS-Paket herunterladen

    Um Probleme mit anderen Plattformen zu vermeiden, ändern Sie die csproj-Datei so, dass sie das Paket nur dann enthält, wenn es für die iOS-Plattform bestimmt ist. Um dies zu tun:

  4. Klicken Sie mit der rechten Maustaste auf die *.csproj-Datei für Ihr Projekt und wählen Sie "Projektdatei bearbeiten".
  5. Erstellen Sie ein neues ItemGroup-Element als solches:
    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
    </ItemGroup>
XML
  1. Verschieben Sie die "IronOcr.iOS" PackageReference in die soeben erstellte ItemGroup.

    Die obigen Schritte verhindern, dass das "IronOcr.iOS"-Paket auf z. B. Android-Plattformen verwendet wird(zu diesem Zweck installieren SieIronOcr.Android stattdessen).

Bearbeiten Sie "MainPage.xaml"

Bearbeiten Sie die XAML-Datei, um eine Schaltfläche und eine Beschriftung 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="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

Bearbeiten Sie "MainPage.xaml.cs"

Beginnen Sie mit der Instanziierung des IronTesseract-Objekts. Stellen Sie sicher, dass IronTesseract einmal in einer Klasse initialisiert wird, wie im folgenden Code gezeigt. Sie direkt in einer Methode zu instanziieren, ist nicht effektiv und kann zu unerwarteten Fehlern führen. Verwenden Sie dann die Methode "FilePicker.PickAsync", um eine Datei auszuwählen. Öffnen Sie aus dem FileResult einen Stream zum Lesen. Erstellen Sie ein neues OcrInput-Objekt und verwenden Sie dieses Objekt, um das Bild zu laden. Verwenden Sie die Tesseract-Instanz, um OCR auf dem Bild durchzuführen und den Text zurückzugeben. Schließlich zeigen Sie den resultierenden Text in einem Etikett an.

Die derzeitige Implementierung ist nur auf Bilddateien beschränkt. Das Paket funktioniert noch nicht mit PDF-Dokumenten. In diesem Sinne ist jede Konfiguration, die sich auf PDF-Dokumente bezieht, standardmäßig deaktiviert und sollte es auch bleiben.

using IronOcr;
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 IronOcr;
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);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

Wechseln Sie abschließend das Build-Ziel zu iOS Simulator und führen Sie das Projekt aus.

Das Projekt ausführen

Hier erfahren Sie, wie Sie das Projekt ausführen und die OCR durchführen.

Ausführen des .NET MAUI App-Projekts

.NET MAUI App Projekt herunterladen

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

Klicken Sie hier, um das Projekt herunterzuladen.

Verwendung von IronOcr.iOS in Avalonia

Die Einrichtung von IronOCR.iOS in Avalonia ist ähnlich wie bei MAUI, mit einem entscheidenden Unterschied: Zusätzlich zur neuesten .NET SDK-Version benötigen Sie auch.NET SDK 8.0.101 installiert, um IronOcr.iOS erfolgreich auszuführen. Danach kann IronOcr.iOS in einem Avalonia-Projekt mit den gleichen Einstellungen wie oben beschrieben verwendet werden.

Wenn Sie OCR unter Android durchführen möchten, lesen Sie den folgenden Artikel, um mehr zu erfahren: "OCR auf Android in .NET MAUI durchführen"