Sprachpaket nicht gefunden in .NET MAUI Android
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>
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();
}
}
}
Debug-Tipps
- Bestätigen Sie das NuGet-Paket: Stellen Sie sicher, dass
IronOcr.Androidinstalliert 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";

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 Handbücher.