Pakiet językowy nie znaleziony w .NET MAUI Android

Curtis Chau
Curtis Chau
Updated: 29 czerwca 2026

Ładując język nieangielski (na przykład chiński) w projekcie .NET MAUI Android, może zakończyć się niepowodzeniem w czasie wykonywania, nawet gdy przeszkolone dane znajdują się w Assets/tessdata i są oznaczone jako AndroidAsset.

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

Budowanie projektu MAUI Android z Visual Studio Code lub Konsoli może omijać rozwiązywanie plików danych językowych, których potrzebuje IronOCR. Pliki *.traineddata nigdy nie trafiają do pliku APK, więc silnik nie może ich znaleźć w czasie wykonania.

Rozwiązanie

1. Kompiluj w Visual Studio 2022

Otwórz i zbuduj projekt w pełnym IDE Visual Studio 2022 (v17.10 lub późniejszym). Pełne IDE zawiera zależności w pliku Android APK podczas budowy, co może przegapić ścieżki Konsoli i Visual Studio Code.

2. Przesuń folder OcrData

Po zbudowaniu, przenieś folder OcrData z bin do głównego katalogu projektu, na przykład OcrData/chi_sim.traineddata.

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

3. Zarejestruj przeszkolone dane jako zasoby Androida

Dodaj przeniesione pliki do .csproj, aby były dostarczane z APK:

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

4. Dodaj czcionkę obsługującą twoje znaki

Rozpoznany tekst nadal potrzebuje czcionki, która może go renderować w interfejsie użytkownika aplikacji. Upuść czcionkę taką jak Noto Sans SC do Resources/Fonts i zarejestruj ją w 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();
        }
    }
}

Wskazówki dotyczące debugowania

  • Potwierdź pakiet NuGet: upewnij się, że IronOcr.Android jest zainstalowany i przywrócony.
  • Włącz logowanie, aby zobaczyć ścieżki wyszukiwania używane przez IronOCR dla plików językowych:
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
IronSoftware.Logger.LogFilePath = "OcrMaui.log";
Ostrzeżenie: Folder .tessdata pod Assets/może cicho zgłaszać błąd przy budowaniu z Konsoli lub Visual Studio Code, dlatego ręczne przeniesienie plików .traineddata bywa niezbędne.

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 6,357,159Wersja:2026.11właśnie wydany