Jak przeprowadzic OCR na iOS w .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) to ewolucja frameworka Xamarin.Forms, zaprojektowana do tworzenia aplikacji wielopłatformowych dla systemów Android, iOS, macOS i Windows przy użyciu .NET. MAUI ma na celu uproszczenie procesu tworzenia natywnych interfejsow użytkownika, ktore mogą działać na wielu platformach.

Pakiet IronOcr.iOS wprowadza obsługę OCR na iOS!

Pakiet IronOCR iOS

Pakiet IronOcr.iOS umożliwia funkcje OCR na urządzeńiach iOS za pośrednictwem projektow krzyzowopłatformowych .NET. Standardowy pakiet IronOCR nie jest potrzebny.

Install-Package IronOcr.iOS
Biblioteka C# NuGet dla plików PDF

Zainstaluj za pomocą NuGet

Install-Package IronOcr.iOS

Utworz projekt .NET MAUI

W sekcji "Multiplatform" wybierz opcję "Aplikacja .NET MAUI" i kontynuuj.

Utwórz projekt aplikacji .NET MAUI

Dolacz biblioteke IronOCR.iOS

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

  1. W programie Visual Studio kliknij prawym przyciskiem myszy "Zależności > NuGet" i wybierz "Zarządzaj pakietami NuGet...".
  2. Wybierz zakladke "Przeglądaj" i wyszukaj "IronOcr.iOS".
  3. Wybierz pakiet "IronOcr.iOS" i kliknij "Dodaj pakiet".

Pobierz pakiet IronOcr.iOS

Aby uniknąć problemów z innymi platformami, zmodyfikuj plik csproj tak, aby dołączał pakiet tylko w przypadku platformy iOS. Aby to zrobic:

  1. Kliknij prawym przyciskiem na plik *.csproj w swoim projekcie i wybierz "Edit Project File".
  2. Utwórz nowy element ItemGroup w następującej postaci:

    <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. Przenieś odwołanie do pakietu "IronOcr.iOS" do właśnie utworzonego ItemGroup.

Powyższe kroki zapobiegna użyciu pakietu "IronOcr.iOS" na platformach takich jak Android (w tym celu zainstaluj zamiast tego IronOcr.Android).

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

Edytuj "MainPage.xaml.cs"

Zacznij od utworzenia instancji obiektu IronTesseract. Pamiętaj, aby zainicjować IronTesseract raz w klasie, tak jak pokazano w poniższym kodzie. Zainicjowanie go bezpośrednio w metodzie nie jest efektywne i może prowadzic do nieoczekiwanych błędów. Następnie użyj metody FilePicker.PickAsync, aby wybrać plik. Z FileResult otwórz strumień do odczytu. Utwórz nowy obiekt OcrInput i użyj go do załadowania obrazu. Użyj instancji Tesseract do wykonania OCR na obrazie i zwróć tekst. Na koniec wyświetl wynikowy tekst w etykiecie.

Obecna implementacja jest ograniczona tylko do plików obrazów. Pakiet nie działa jeszcze z dokumentami PDF. Majac to na uwadze, wszelkie konfiguracje związane z dokumentami PDF powinny pozostac wyłączone.

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

Na koniec zmień cel kompilacji na iOS Simulator i uruchom projekt.

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 pobrac projekt.

Uzycie IronOcr.iOS w Avalonia

Konfiguracja IronOcr.iOS w Avalonia jest podobna do MAUI, z jedna kluczowa roznica: oprócz najnowszej wersji SDK .NET musisz również mieć zainstalowane .NET SDK 8.0.101, aby pomyślnie uruchomić IronOcr.iOS. Następnie, IronOcr.iOS można używać w projekcie Avalonia z taka sama konfiguracja, jak opisano powyzej.

Jeśli chcesz przeprowadzic OCR na Androidzie, przejdź do nastepnego artykułu, aby dowiedziec sie więcej: "Jak przeprowadzic OCR na Androidzie w .NET MAUI"

Często Zadawane Pytania

Jak zintegrować funkcjonalność OCR z aplikacją .NET MAUI na iOS?

Możesz zintegrować funkcjonalność OCR z aplikacją .NET MAUI na iOS używając pakietu IronOCR.iOS. Zainstaluj go za pomocą NuGet w Visual Studio, a następnie zmodyfikuj plik projektu, aby uwzględnić pakiet warunkowo dla platformy iOS. Użyj IronTesseract do przetwarzania obrazów i wyodrębniania tekstu.

Czy mogę używać pakietu IronOCR.iOS do przetwarzania dokumentów PDF?

Nie, pakiet IronOCR.iOS jest obecnie ograniczony do przetwarzania tylko plików obrazów i nie obsługuje dokumentów PDF. Upewnij się, że wszelkie konfiguracje związane z PDF są wyłączone w Twoim projekcie.

Jakie kroki są wymagane do skonfigurowania OCR dla aplikacji iOS używając .NET MAUI?

Konfiguracja OCR dla aplikacji iOS używając .NET MAUI wymaga pobrania pakietu IronOcr.iOS przez NuGet, modyfikacji pliku projektu w celu warunkowego uwzględnienia pakietu dla iOS oraz edycji plików MainPage.xaml i MainPage.xaml.cs w celu stworzenia interfejsu użytkownika i obsługi przetwarzania OCR.

Jakie dodatkowe wymagania są potrzebne do używania IronOCR w projektach Avalonia?

Podczas używania IronOCR w projektach Avalonia, musisz zapewnić, że masz zainstalowaną najnowszą wersję .NET SDK oraz .NET SDK 8.0.101. Ta konfiguracja jest podobna do konfiguracji dla MAUI, ale wymaga dodatkowego SDK.

Jak mogę wykonać OCR na obrazie używając IronOCR w projekcie .NET MAUI?

W projekcie .NET MAUI użyj obiektu IronTesseract, aby wykonać OCR na obrazie. Użyj FilePicker.PickAsync, aby wybrać plik obrazu, załaduj go do obiektu OcrInput, a następnie użyj IronTesseract, aby odczytać obraz i wyodrębnić tekst.

Czy istnieje przykładowy projekt do implementacji OCR na iOS używając .NET MAUI?

Tak, możesz pobrać przykładowy projekt .NET MAUI używający IronOCR.iOS ze strony Iron Software. Ten przykładowy projekt jest dostępny jako spakowany plik, który możesz otworzyć w Visual Studio, aby przyspieszyć proces rozwoju.

Czy IronOCR jest łatwy do zintegrowania z istniejącymi projektami?

Tak, IronOCR jest prosty do zintegrowania z istniejącymi projektami C#. Dzięki szczegółowej dokumentacji i wsparciu, programiści mogą łatwo dodać funkcjonalność OCR do swoich aplikacji.

Czy IronOCR oferuje jakieś funkcje przetwarzania wstępnego obrazów?

IronOCR zawiera funkcje przetwarzania wstępnego obrazów, aby zwiększyć dokładność OCR, takie jak redukcja szumów, korekcja rotacji i dostosowanie kontrastu.

Czy IronOCR może być używany w aplikacjach chmury?

Istotnie, IronOCR może być wdrożony w środowiskach chmurowych, co czyni go odpowiednim dla aplikacji webowych i usług wymagających funkcji OCR.

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 5,896,332 | Wersja: 2026.5 just released
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.