OCR auf iOS in .NET MAUI durchführen
.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!!
Verwendung von IronOCR für iOS in .NET MAUI
- Laden Sie die C#-Bibliothek zur Durchführung von OCR unter iOS herunter
- Erstellen eines .NET MAUI App-Projekts
- Bearbeiten Sie die XAML-Datei, um eine Aktivierungsschaltfläche und einen Ausgabetext anzuzeigen
- Bearbeiten Sie die entsprechende C#-Datei, um die OCR durchzuführen
- Laden Sie das Beispielprojekt für einen schnellen Start herunter
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
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.
Einbindung der IronOCR.iOS-Bibliothek
Die Bibliothek kann auf verschiedene Weise hinzugefügt werden. Am einfachsten ist es vielleicht, wenn Sie NuGet verwenden.
Klicken Sie in Visual Studio mit der rechten Maustaste auf "Dependencies > Nuget" und wählen Sie "Manage NuGet Packages ...".
Wählen Sie die Registerkarte "Durchsuchen" und suchen Sie nach "IronOcr.iOS".
Wählen Sie das Paket "IronOcr.iOS" und klicken Sie auf "Paket hinzufügen".
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:
Klicken Sie mit der rechten Maustaste auf die *.csproj-Datei für Ihr Projekt und wählen Sie "Projektdatei bearbeiten".
- Erstellen Sie ein neues ItemGroup-Element als solches:
<ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
</ItemGroup>
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>
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);
}
}
}
Imports IronOcr
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
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.
.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"