Paquete de Idiomas No Encontrado en .NET MAUI Android
Cargar un idioma no inglés (por ejemplo, chino) en un proyecto Android de .NET MAUI puede fallar en tiempo de ejecución, incluso cuando los datos entrenados se encuentran en Assets/tessdata y están marcados como AndroidAsset.
System.IO.FileNotFoundException: Language Pack Not Found: chi_sim.traineddata
Construir un proyecto de Android MAUI desde Visual Studio Code o la CLI puede omitir la resolución de los archivos de datos de idioma que necesita IronOCR. Los archivos *.traineddata nunca se integran en el APK, por lo que el motor no puede encontrarlos en tiempo de ejecución.
Solución
1. Build in Visual Studio 2022
Abra y construya el proyecto en el IDE completo de Visual Studio 2022 (v17.10 o posterior). El IDE completo incluye las dependencias en el APK de Android durante la construcción, que las rutas de CLI y VS Code pueden perder.
2. Reubicar la carpeta OcrData
Después de la compilación, mueve la carpeta OcrData fuera de bin y dentro de la raíz del proyecto, por ejemplo OcrData/chi_sim.traineddata.
ProjectRoot/
├── OcrData/
│ └── chi_sim.traineddata
├── Resources/
│ └── Fonts/
│ └── NotoSansSC-Regular.ttf
├── MyMauiApp.csproj
3. Registrar los datos entrenados como activos de Android
Añade los archivos reubicados a tu .csproj para que se incluyan con el APK:
<ItemGroup>
<AndroidAsset Include="OcrData\chi_sim.traineddata" />
<AndroidAsset Include="ocrData\chi_tra.traineddata" />
</ItemGroup>
4. Agregar una fuente que soporte sus caracteres
El texto reconocido aún necesita una fuente que pueda renderizarlo en la UI de la aplicación. Coloca una fuente como Noto Sans SC en Resources/Fonts y regístrala en 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();
}
}
}
Consejos para depuración
- Confirma el paquete NuGet: asegúrate de que
IronOcr.Androidesté instalado y restaurado. - Encienda el registro para ver las rutas de búsqueda que utiliza IronOCR para los archivos de idioma:
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
IronSoftware.Logger.LogFilePath = "OcrMaui.log";

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.