.NET MAUI Android'de Dil Paketi Bulunamadı

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

Çince gibi İngilizce olmayan bir dili bir .NET MAUI Android projesinde yüklemek, eğitilmiş veriler Assets/tessdata içindeyken ve AndroidAsset olarak işaretlenmiş olsa bile çalışma zamanında başarısız olabilir.

System.IO.FileNotFoundException: Language Pack Not Found: chi_sim.traineddata

Visual Studio Code veya CLI üzerinden bir MAUI Android projesi derlemek, IronOCR'nin ihtiyaç duyduğu dil veri dosyalarının çözülmesini atlayabilir. *.traineddata dosyaları asla APK'ya giremez, bu nedenle motor çalışma zamanında onları bulamaz.

Çözüm

1. Visual Studio 2022'de Derleyin

Projeyi tam Visual Studio 2022 IDE'sinde (v17.10 veya daha sonraki sürümlerde) açın ve derleyin. Tam IDE, Android APK'sine bağımlılıkları eklerken, CLI ve VS Code yolları kaçırabilir.

2. OcrData Klasörünü Yeniden Konumlandırın

Derlemeden sonra, OcrData klasörünü bin dışına ve proje köküne, örneğin OcrData/chi_sim.traineddata taşıyın.

ProjectRoot/
├── OcrData/
│   └── chi_sim.traineddata
├── Resources/
│   └── Fonts/
│       └── NotoSansSC-Regular.ttf
├── MyMauiApp.csproj

3. Eğitilmiş Verileri Android Varlıkları Olarak Kaydedin

Taşınan dosyaları APK ile gönderilmesi için .csproj içine ekleyin:

<ItemGroup>
  <AndroidAsset Include="OcrData\chi_sim.traineddata" />
  <AndroidAsset Include="ocrData\chi_tra.traineddata" />
</ItemGroup>
<ItemGroup>
  <AndroidAsset Include="OcrData\chi_sim.traineddata" />
  <AndroidAsset Include="ocrData\chi_tra.traineddata" />
</ItemGroup>
XML

4. Karakterlerinizi Destekleyen Bir Yazı Tipi Ekleyin

Tanınan metin hala uygulama arayüzünde görüntülenebilmek için uygun bir yazı tipine ihtiyaç duyar. Noto Sans SC gibi bir fontu Resources/Fonts içine bırakın ve MauiProgram.cs içinde kaydedin:

using Microsoft.Extensions.Logging;
namespace MauiApp2
{
    public static class MauiProgram
    {
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();
            builder
                .UseMauiApp<App>()
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });
#if DEBUG
            builder.Logging.AddDebug();
#endif
            return builder.Build();
        }
    }
}
using Microsoft.Extensions.Logging;
namespace MauiApp2
{
    public static class MauiProgram
    {
        public static MauiApp CreateMauiApp()
        {
            var builder = MauiApp.CreateBuilder();
            builder
                .UseMauiApp<App>()
                .ConfigureFonts(fonts =>
                {
                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
                });
#if DEBUG
            builder.Logging.AddDebug();
#endif
            return builder.Build();
        }
    }
}
Imports Microsoft.Extensions.Logging

Namespace MauiApp2

    Public Module MauiProgram

        Public Function CreateMauiApp() As MauiApp
            Dim builder = MauiApp.CreateBuilder()
            builder _
                .UseMauiApp(Of App)() _
                .ConfigureFonts(Sub(fonts)
                                    fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular")
                                    fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold")
                                End Sub)
#If DEBUG Then
            builder.Logging.AddDebug()
#End If
            Return builder.Build()
        End Function

    End Module

End Namespace
$vbLabelText   $csharpLabel

Hata Ayıklama İpuçları

  • NuGet paketini teyit edin: IronOcr.Android yüklendiğinden ve geri yüklendiğinden emin olun.
  • IronOCR'nin dil dosyaları arama yollarını görmek için günlüğe kaydetmeyi açın:
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
IronSoftware.Logger.LogFilePath = "OcrMaui.log";
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
IronSoftware.Logger.LogFilePath = "OcrMaui.log";
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All
IronSoftware.Logger.LogFilePath = "OcrMaui.log"
$vbLabelText   $csharpLabel

UyarıCLI veya VS Code derlemelerinde, Assets/altında bir .tessdata klasörü sessizce başarısız olabilir; bu nedenle, .traineddata dosyalarını manuel olarak yeniden konumlandırmak bazen gereklidir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 6,136,090 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronOcr
örnek çalıştır görüntünüzün aranabilir metin haline gelmesini izleyin.