Pack linguistique non trouvé sur .NET MAUI Android

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

Le chargement d'une langue non anglaise (par exemple le chinois) dans un projet .NET MAUI Android peut échouer à l'exécution, même lorsque les données d'entraînement se trouvent dans Assets/tessdata et sont marquées comme AndroidAsset.

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

Construire un projet MAUI Android à partir de Visual Studio Code ou du CLI peut éviter de résoudre les fichiers de données linguistiques dont IronOCR a besoin. Les fichiers *.traineddata n'arrivent jamais dans l'APK, donc le moteur ne peut pas les trouver à l'exécution.

Solution

1. Compilez dans Visual Studio 2022

Ouvrez et construisez le projet dans l'IDE complet Visual Studio 2022 (v17.10 ou plus). L'IDE complet inclut les dépendances dans l'APK Android lors de la construction, ce que les chemins CLI et VS Code peuvent omettre.

2. Déplacez le dossier OcrData

Après la construction, déplacez le dossier OcrData hors de bin et dans la racine du projet, par exemple OcrData/chi_sim.traineddata.

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

3. Enregistrez les données d'entraînement en tant que ressources Android

Ajoutez les fichiers déplacés à votre .csproj afin qu'ils soient inclus dans l'APK :

<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. Ajoutez une police qui prend en charge vos caractères

Le texte reconnu a toujours besoin d'une police qui peut le rendre dans l'UI de l'application. Déposez une police comme Noto Sans SC dans Resources/Fonts et enregistrez-la dans 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

Conseils de débogage

  • Confirmez le package NuGet : assurez-vous que IronOcr.Android est installé et restauré.
  • Activez la journalisation pour voir les chemins de recherche qu'utilise IronOCR pour les fichiers de langue :
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

AvertissementUn dossier .tessdata sous Assets/peut échouer silencieusement sur les builds CLI ou VS Code, c'est pourquoi il est parfois nécessaire de déplacer manuellement les fichiers .traineddata.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 6,136,090 | Version : 2026.7 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronOcr
lancez un échantillon regardez votre image se transformer en texte consultable.