.NET MAUI OCR za pomocą IronOCR
Wprowadzenie
Microsoft wypuścił .NET MAUI (Multi-platform App UI), który jest frameworkiem do tworzenia aplikacji międzyplatformowych z użyciem .NET Framework. Pozwala pisać kod, który działa na Androidzie, iOS i Windows z użyciem tej samej bazy kodu, oszczędzając czas, zasoby i wysiłek. .NET MAUI jest open source. Możesz uzyskać kod źródłowy projektu .NET MAUI z przykładami na GitHubie.
W tym przewodniku "Jak to zrobić" nauczymy się, jak utworzyć aplikację OCR w .NET MAUI z użyciem biblioteki IronOCR na przykładach.
Jak wykonać OCR w .NET MAUI
- Pobierz bibliotekę C# do wykonywania OCR w .NET MAUI
- Skonfiguruj frontend projektu MAUI
- Przekaż pełną ścieżkę obrazu przy użyciu klasy FilePicker
- Wywołaj metodę
Readby wykonać OCR na obrazie - Uzyskaj dostęp do wyodrębnionego tekstu za pomocą właściwości Text i wyświetl go
IronOCR: .NET OCR library
IronOCR to biblioteka NuGet do OCR dla .NET, która umożliwia deweloperom łatwe zintegrowanie funkcjonalności rozpoznawania znaków w projektach. Za pomocą IronOCR dokumenty PDF mogą być skanowane i konwertowane do postaci wyszukiwalnego i edytowalnego tekstu/danych bez utraty jakości danych. Ułatwia to użytkownikom znalezienie potrzebnych informacji z dokumentów PDF i wprowadzenie zmian lub poprawek, jeśli to konieczne.
IronOCR to najnowocześniejsza wersja binariów Tesseract dostępna na każdej platformie. Oferuje zwiększoną szybkość, dokładność i natywną obsługę DLL/API, która wspiera wszystkie wersje Tesseract (od Tesseract 3 do Tesseract 5) z jedną łatwą instalacją/pobraniem.
IronOCR ma rozbudowaną obsługę języków, z 125 językami dostępnymi dla użytkowników. Język angielski jest domyślnie zainstalowany z narzędziem/DLL. Jednakże można łatwo dodać więcej języków, instalując je przez NuGet lub pobierając DLL.
Porównanie z Tesseract
IronOCR jest specjalnie zaprojektowany dla deweloperów C# i integruje się bezproblemowo z aplikacjami .NET. W przeciwieństwie do tego, Tesseract jest ogólną biblioteką OCR, która wymaga od deweloperów napisania własnych wrapperów do używania z C#. Ponadto IronOCR oferuje wyższą dokładność i szybkość w porównaniu z innymi bibliotekami, dzięki swoim innowacyjnym algorytmom sztucznej inteligencji.
IronOCR jest dostarczany z kompleksową dokumentacją i wsparciem technicznym, co ułatwia nawet początkującym deweloperom szybkie uruchomienie.
IronOCR jest znacznie dokładniejszy niż Tesseract. W rzeczywistości ma dokładność powyżej 99%, podczas gdy dokładność Tesseract wynosi tylko około 70,2% do 92,9%. Uzyskaj więcej informacji i wsparcia na temat porównania IronOCR i Tesseract w tym wideo na YouTube.
Kroki do stworzenia aplikacji OCR MAUI
Postępuj zgodnie z tymi krokami, aby stworzyć aplikację OCR w frameworku .NET MAUI za pomocą IronOCR.
Wymagania wstępne
Aby stworzyć aplikację OCR w .NET MAUI, wymagania wstępne to:
- Visual Studio 2022 (najświeższa wersja)
- .NET 6 lub 7
- Pakiety MAUI zainstalowane w Visual Studio
- Projekt .NET MAUI działający w Visual Studio
Instalacja IronOCR
Pierwszym krokiem jest zainstalowanie biblioteki IronOCR przy użyciu konsoli Menedżera Pakietów NuGet. Otwórz konsolę Menedżera Pakietów NuGet, klikając prawym przyciskiem myszki na eksplorator rozwiązania i wykonując następujące polecenie, aby zainstalować bibliotekę IronOCR:
Install-Package IronOcr
Projektowanie frontendu
W tej sekcji zaprojektujemy frontend aplikacji. Otwórz plik MainPage.xaml.
MainPage.xaml
Wyznaczymy przycisk, który pomoże nam wybrać obraz lub dokument PDF do OCR. Właściwość przycisku Clicked jest ustawiona na wykonanie funkcji IOCR, którą zdefiniujemy w następnej sekcji.
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
Tutaj tworzymy element Image o nazwie OCRImage. Ta ramka na obrazy wyświetli wybrany plik.
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
Następnie tworzymy kontrolkę Editor. Zostanie ona użyta do wyświetlenia wyodrębnionego tekstu z obrazu lub dokumentu PDF.
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
Oto ukończony kod znaczników interfejsu użytkownika XAML.
<?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="IronOCR_MAUI_Test.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
</VerticalStackLayout>
</ScrollView>
</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="IronOCR_MAUI_Test.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
Teraz czas na napisanie kodu dla funkcji OCR.
Kod dla OCR z użyciem IronOCR
Otwórz plik klasy MainPage.xaml.cs i napisz następującą funkcję:
MainPage.xaml.cs
private async void IOCR(object sender, EventArgs e)
{
// Prompt user to select an image using FilePicker
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
// Get the full path of the selected image
var path = images.FullPath.ToString();
// Display the selected image in the Image control
OCRImage.Source = path;
// Create an IronTesseract object to perform OCR
var ocr = new IronTesseract();
// Perform OCR and extract text from the selected image
using (var input = new OcrInput())
{
input.AddImage(path); // Add image to the OCR input
OcrResult result = ocr.Read(input); // Perform OCR
string text = result.Text; // Extract text
// Display extracted text in the Editor control
outputText.Text = text;
}
}
private async void IOCR(object sender, EventArgs e)
{
// Prompt user to select an image using FilePicker
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
// Get the full path of the selected image
var path = images.FullPath.ToString();
// Display the selected image in the Image control
OCRImage.Source = path;
// Create an IronTesseract object to perform OCR
var ocr = new IronTesseract();
// Perform OCR and extract text from the selected image
using (var input = new OcrInput())
{
input.AddImage(path); // Add image to the OCR input
OcrResult result = ocr.Read(input); // Perform OCR
string text = result.Text; // Extract text
// Display extracted text in the Editor control
outputText.Text = text;
}
}
Private Async Sub IOCR(ByVal sender As Object, ByVal e As EventArgs)
' Prompt user to select an image using FilePicker
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
' Get the full path of the selected image
Dim path = images.FullPath.ToString()
' Display the selected image in the Image control
OCRImage.Source = path
' Create an IronTesseract object to perform OCR
Dim ocr = New IronTesseract()
' Perform OCR and extract text from the selected image
Using input = New OcrInput()
input.AddImage(path) ' Add image to the OCR input
Dim result As OcrResult = ocr.Read(input) ' Perform OCR
Dim text As String = result.Text ' Extract text
' Display extracted text in the Editor control
outputText.Text = text
End Using
End Sub
Rozłóżmy powyższy kod:
- Kod wykorzystuje
FilePicker, aby umożliwić użytkownikowi wybranie pliku obrazu z urządzenia. Selekcja plików jest skonfigurowana do akceptowania tylko obrazów.
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
Dim path = images.FullPath.ToString()
- Kontrolka
Imagejest ustawiona do wyświetlania wybranego obrazu używając jego ścieżki pliku.
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
- Tworzony jest obiekt
IronTesseractdo wykonania OCR. Wybrany obraz jest dodawany do obiektuOcrInput. MetodaReadjest wywoływana w celu wyodrębnienia tekstu z obrazu, który jest następnie wyświetlany w kontrolceEditor.
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
input.AddImage(path)
Dim result As OcrResult = ocr.Read(input)
Dim text As String = result.Text
outputText.Text = text
End Using
Wynik
Po uruchomieniu projektu poniższy interfejs użytkownika pojawia się. Gdy klikniesz przycisk, zostanie wyświetlone okno dialogowe umożliwiające wybranie obrazu/PDF z dowolnej lokalizacji.
Wynik OCR
Po wybraniu obrazu, IronOCR przetwarza obraz i pokazuje rozpoznane słowa w kontrolce Editor. Możesz skopiować tekst z kontrolki Editor.
Obraz OCR
Z wyników wynika, że IronOCR świetnie radzi sobie z przetwarzaniem skomplikowanych obrazów z wzorami, pokazując dokładne wyniki. IronOCR jest w stanie wykryć małe szczegóły i wybrać dokładne litery potrzebne, używając swoich wstępnie wytrenowanych modeli.
<{i:(Running the project in release mode with debugging attached might cause issues. W takich przypadkach możesz opublikować projekt jako niepakowaną aplikację .NET MAUI, jak pokazano w linku poniżej, aby zapewnić prawidłowe działanie aplikacji.
Wnioski
Aby uzyskać więcej informacji, zapoznaj się z tym samouczkiem, który dostarcza dodatkowych informacji o tym, jak używać IronOCR do czytania tekstu z obrazów.
IronOCR jest bezpłatny do celów rozwojowych. Możesz go kupić za bardzo niską cenę, zaczynając od zaledwie $799. Sprawdź plan cenowy tutaj.
Często Zadawane Pytania
Do czego służy .NET MAUI w tworzeniu aplikacji?
.NET MAUI (Multi-platform App UI) służy do tworzenia aplikacji wieloplatformowych z jednym kodem źródłowym, umożliwiając programistom tworzenie aplikacji na platformy Android, iOS i Windows.
W jaki sposób programiści mogą przeprowadzić OCR w aplikacji .NET MAUI?
Programiści mogą przeprowadzać rozpoznawanie optyczne (OCR) w aplikacji .NET MAUI poprzez integrację biblioteki IronOCR, biblioteki OCR dla platformy .NET. IronOCR umożliwia konwersję obrazów i plików PDF na tekst, który można przeszukiwać i edytować.
Jakie kroki należy wykonać, aby skonfigurować IronOCR w projekcie .NET MAUI?
Aby skonfigurować IronOCR w projekcie .NET MAUI, zainstaluj bibliotekę IronOCR za pośrednictwem NuGet, skonfiguruj interfejs użytkownika w Visual Studio i zaimplementuj niezbędny kod C# do wykonywania OCR przy użyciu obiektu IronTesseract.
Jak dokładny jest IronOCR podczas przetwarzania tekstu?
IronOCR zapewnia wysoką dokładność przetwarzania tekstu wynoszącą ponad 99%, co czyni go bardziej niezawodnym niż inne rozwiązania OCR, takie jak Tesseract, dzięki zaawansowanym algorytmom sztucznej inteligencji.
Czy IronOCR obsługuje wiele języków?
Tak, IronOCR obsługuje 125 języków międzynarodowych, przy czym angielski jest zainstalowany domyślnie. Dodatkowe języki można dodać za pośrednictwem NuGet lub pobierając biblioteki DLL dla konkretnych języków.
Jak wybrać plik graficzny do OCR w aplikacji .NET MAUI?
W aplikacji .NET MAUI można wybrać plik obrazu do OCR za pomocą klasy FilePicker, która pozwala użytkownikom wybierać obrazy z ich urządzeń w celu wyodrębnienia tekstu.
Jaka jest rola kontrolki Editor w wyświetlaniu wyników OCR?
Kontrolka Editor w aplikacji .NET MAUI służy do wyświetlania tekstu wyodrębnionego z obrazów przetworzonych przez IronOCR, zapewniając użytkownikom interfejs do przeglądania wyników OCR.
Czy korzystanie z IronOCR do celów programistycznych wiąże się z jakimikolwiek kosztami?
IronOCR jest bezpłatny do celów programistycznych. Jednak do użytku produkcyjnego wymagana jest licencja, którą można nabyć w konkurencyjnej cenie.
Co sprawia, że IronOCR jest preferowanym wyborem dla programistów C#?
IronOCR jest preferowanym wyborem dla programistów C# ze względu na płynną integrację z aplikacjami .NET, wysoką dokładność, szybkość oraz obsługę wielu języków, co sprawia, że przewyższa wiele innych bibliotek OCR.
W jaki sposób programiści mogą zwiększyć funkcjonalność swojej aplikacji .NET MAUI OCR?
Programiści mogą ulepszyć swoją aplikację .NET MAUI OCR, korzystając z dodatkowych zasobów udostępnianych przez IronOCR oraz korzystając z jego obszernej dokumentacji i wsparcia technicznego w celu wdrożenia zaawansowanych funkcji.

