.NET MAUI'de Android Üzerinde OCR Uygulama Yöntemleri
.NET MAUI (Çok platformlu Uygulama UI), .NET kullanarak Android, iOS, macOS ve Windows için çapraz platformlu uygulamalar geliştirmek üzere tasarlanmış Xamarin.Forms çerçevesinin evrimidir. .NET MAUI, birden fazla platformda çalışabilen yerel kullanıcı arayüzleri oluşturma sürecini basitleştirmeyi amaçlar.
IronOcr.Android paketi, Android'e OCR desteği getirir!
.NET MAUI'de Android'de IronOCR kullanımı
- Android'de OCR uygulamak için C# kütüphanesini indir
- .NET MAUI Uygulaması projesi oluştur
- XAML dosyasını düzenleyerek bir etkinleştirme düğmesi ve çıktı metni görüntüleyin
- İlgili C# dosyasını düzenleyerek OCR uygulayın
- Hızlı başlamak için örnek projeyi indirin
IronOCR Android Paketi
IronOcr.Android paketi, .NET çapraz platform projeleri aracılığıyla Android cihazlarda OCR özelliklerini etkinleştirir. Vanilla IronOCR paketi gerekli değildir.
Install-Package IronOcr.Android
NuGet ile yükleyin
Install-Package IronOcr.Android
.NET MAUI projesi oluştur
Visual Studio'yu açın ve "Yeni proje oluştur"a tıklayın. MAUI arayın, .NET MAUI Uygulamasını seçin ve "İleri" tıklayın.

IronOcr.Android kütüphanesini dahil et
Kütüphane çeşitli şekillerde eklenebilir. Belki de en kolay yol NuGet kullanmaktır.
- Visual Studio içinde "Dependencies" üzerine sağ tıklayın ve "NuGet Paketlerini Yönet..." seçeneğini seçin.
- "Gözat" sekmesini seçin ve "IronOcr.Android" arayın.
- "IronOcr.Android" paketini seçip "Yükle" üzerine tıklayın.

Diğer platformlarla sorun yaşamamak için csproj dosyanızı yalnızca Android platformunu hedefleyerek paketi dahil edecek şekilde değiştirin. Bunu yapmak için:
- Proje üzerine sağ tıklayın ve "Proje Dosyasını Düzenle" seçeneğini seçin.
-
Yeni bir ItemGroup elementi oluşturun:
<ItemGroup Condition="$(TargetFramework.Contains('android')) == true"> </ItemGroup><ItemGroup Condition="$(TargetFramework.Contains('android')) == true"> </ItemGroup>XML - Yeni oluşturduğumuz ItemGroup içine "IronOcr.Android" PackageReference taşırız.
Yukarıdaki adımlar, "IronOcr.Android" paketinin örneğin iOS platformları için kullanılmasını engelleyecektir (bu amaçla IronOcr.iOS yükleyin).
"MainActivity.cs" Düzenle
- Platformlar -> Android dizininden "MainActivity.cs" dosyasını açın.
MainActivityyöntemini ekleyin veInitializeyöntemini çağırın.
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
"MainPage.xaml" Düzenle
OCR sonucunu göstermek için bir düğme ve bir etiket görüntülemek üzere XAML dosyasını düzenleyin. Örneğin:
<?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>
"MainPage.xaml.cs" Düzenle
İlk olarak, IronTesseract nesnesinin bir örneğini oluşturun. Aşağıdaki kodda gösterildiği gibi, IronTesseract'nin sınıf içinde bir kez başlatıldığından emin olun. Bunu bir yöntem içinde örneklemek etkisiz olabilir ve beklenmedik hatalara yol açabilir.
Ardından, FilePicker.PickAsync yöntemini kullanarak bir dosya seçin, ardından FileResult'tan bir okuma akışı açın. Yeni bir OcrInput nesnesi oluşturun ve görüntüyü bu nesneye yükleyin. Görüntü üzerinde OCR gerçekleştirin ve metni geri alın. Sonuçlanan metni nihayet bir etikete gösterin.
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
Son olarak, .csproj dosyasında, projeyi yalnızca Android için derlediğinizden emin olun. Eklediğimiz paket yalnızca Android için olduğundan, projeyi tüm platformlar için derlemek başarısız olacaktır.
Projeyi Çalıştırın
Proje nasıl çalıştırılacağını ve OCR işlemi nasıl yapılacağını gösterecektir.
.NET MAUI Uygulama Projesi İndirin
Bu kılavuzun tüm kodunu indirebilirsiniz. Visual Studio'da .NET MAUI Uygulama projesi olarak açabileceğiniz sıkıştırılmış bir dosya olarak gelir.
Avalonia'da IronOcr.Android Kullanımı
MAUI'ye benzer şekilde, IronOcr.Android, yukarıda açıklanan aynı kurulumla bir Avalonia projesinde kullanılabilir.
iOS üzerinde OCR yapmak isterseniz, daha fazla bilgi edinmek için şu makaleye gidin: ".NET MAUI'de iOS üzerinde OCR Yapma Yöntemleri"
Sıkça Sorulan Sorular
.NET MAUI uygulamasında Android'de OCR işlemini nasıl gerçekleştirebilirim?
Android'de .NET MAUI kullanarak OCR gerçekleştirmek için, Visual Studio ile NuGet üzerinden IronOcr.Android paketini yükleyin. IronTesseract sınıfını kullanarak görüntüleri işleyin ve metin çıkarın. Projenizin Android'i hedefleyecek şekilde yapılandırıldığından emin olmak için .csproj dosyasını uygun şekilde değiştirin.
IronOcr.Android paketinin amacı nedir?
IronOcr.Android paketi, .NET MAUI projeleri kapsamında Android cihazlarda OCR yeteneklerini sunmak üzere özel olarak tasarlanmıştır. Tekstil tanıma özelliklerinin Android'i hedefleyen çoklu platform uygulamalarına entegrasyonunu basitleştirir.
.NET MAUI projesini Android OCR için nasıl yapılandırırım?
IronOcr.Android paketini NuGet üzerinden yükleyerek .NET MAUI projenizi yapılandırın. .csproj dosyasını, Android'i hedef alacak şekilde yeniden gruplandırısız bir UnsurGrubu oluşturup IronOcr.Android PackageReference'yı içine taşıyarak ayarlayın. Bu, diğer platformlar için oluşturma sorunlarını önler.
OCR kurulumu için MainActivity.cs'de hangi değişiklikler gereklidir?
Platformlar -> Android altında bulunan MainActivity.cs dosyasında, MainActivity yöntemini ekleyin ve IronTesseract'tan Initialize yöntemini çağırın. Bu, görüntülerden metin işleme yeteneklerini kurar.
OCR özelliklerini entegre etmek için MainPage.xaml'ı nasıl düzenlerim?
MainPage.xaml'ı, dosya yükleme için bir düğme ve OCR sonuçlarını görüntülemek için bir etiket ekleyerek düzenleyin. Kullanıcı girdiğini etkili bir şekilde yönetmek için OCR işlem mantığıyla etkileşim kuracak gerekli kullanıcı arayüzü unsurlarını tanımlayın.
OCR işlemi sırasında hata ile karşılaşırsam ne yapmalıyım?
Try-catch bloklarını OCR işleme kodunuzun etrafına yerleştirerek istisnaları karşılayın. Hataları tanımlamanıza ve sorunları çözmenize yardımcı olması için Debug.WriteLine veya başka bir kayıt tutma mekanizmasını kullanarak herhangi bir hatayı kaydedin.
IronOcr.Android paketini Avalonia projelerinde kullanmak mümkün müdür?
Evet, IronOcr.Android paketi, .NET MAUI'deki gibi benzer bir kurulum işlemiyle Avalonia projelerinde kullanılabilir. OCR işlevselliğini etkinleştirmek için proje yapılandırmasını buna göre ayarlayın.
Android OCR için .NET MAUI kullanarak tamamlanmış bir örnek projeyi nerede bulabilirim?
Android OCR için .NET MAUI ile kullanarak IronOCR kütüphanesiyle tamamlanmış bir örnek proje, rehberde sağlanan bir bağlantı ile indirilebilir. Proje, Visual Studio'da açılmaya hazır bir şekilde sıkıştırılmış dosya olarak gelir.
IronOcr.Android paketi, çoklu platform projesinde yalnızca Android'i nasıl hedef alır?
IronOcr.Android paketinin yalnızca Android'i hedeflemesini sağlamak için, .csproj dosyasını Android için koşullu bir UnsurGrubu oluşturarak ayarlayın ve IronOcr.Android PackageReference'yi bu grubun içine taşıyın. Bu, diğer platformlar için oluştururken çatışmaları önler.
IronOCR ile OCR sonuçlarının doğruluğunu nasıl artırırım?
IronOCR ile OCR doğruluğunu artırmak için yüksek kaliteli giriş görüntülerini sağlamaya, uygun dil paketlerini kullanmaya ve kütüphanenin görüntü ön işleme özelliklerinden yararlanmaya özen gösterin.

