Sprachpaket nicht gefunden in .NET MAUI Android

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

Das Laden einer nicht-englischen Sprache (zum Beispiel Chinesisch) in einem .NET MAUI Android-Projekt kann zur Laufzeit fehlschlagen, selbst wenn die trainierten Daten in Assets/tessdata liegen und als AndroidAsset markiert sind.

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

Beim Erstellen eines MAUI Android-Projekts von Visual Studio Code oder der CLI kann das Auflösen der Sprachdatendateien, die IronOCR benötigt, übersprungen werden. Die *.traineddata Dateien gelangen nie in die APK, daher kann die Engine sie zur Laufzeit nicht finden.

Lösung

1. In Visual Studio 2022 bauen

Öffnen und bauen Sie das Projekt in der vollständigen Visual Studio 2022 IDE (v17.10 oder später). Die vollständige IDE schließt die Abhängigkeiten in die Android APK während des Builds ein, die die CLI- und VS-Code-Pfade übersehen können.

2. Verlegen Sie den OcrData-Ordner

Nach dem Build verschieben Sie den OcrData Ordner aus bin in das Projektverzeichnis, zum Beispiel OcrData/chi_sim.traineddata.

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

3. Registrieren Sie die trainierten Daten als Android-Anlagen

Fügen Sie die verschobenen Dateien zu Ihrem .csproj hinzu, damit sie mit der APK ausgeliefert werden:

<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. Fügen Sie eine Schriftart hinzu, die Ihre Zeichen unterstützt

Erkannter Text benötigt immer noch eine Schriftart, die ihn in der App-UI rendern kann. Legen Sie eine Schriftart wie Noto Sans SC in Resources/Fonts ab und registrieren Sie sie in MauiProgram.cs:

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

Debug-Tipps

  • Bestätigen Sie das NuGet-Paket: Stellen Sie sicher, dass IronOcr.Android installiert und wiederhergestellt ist.
  • Aktivieren Sie das Protokollieren, um die Suchpfade zu sehen, die IronOCR für Sprachdateien verwendet:
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

WarnungEin .tessdata-Ordner unter Assets/kann bei CLI- oder VS-Code-Builds stillschweigend fehlschlagen, weshalb das manuelle Verlegen der .traineddata-Dateien manchmal erforderlich ist.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen
Bereit anzufangen?
Nuget Downloads 6,136,090 | Version: 2026.7 gerade veröffentlicht
Still Scrolling Icon

Scrollst du immer noch?

Sie brauchen schnell einen Beweis? PM > Install-Package IronOcr
Führen Sie ein Beispiel aus und beobachten Sie, wie Ihr Bild zu durchsuchbarem Text wird.