在 .NET MAUI Android 中找不到语言包
This article was translated from English: Does it need improvement?
Translated
View the article in English
在.NET MAUI Android项目中加载非英语语言(例如中文)时,即使训练数据位于AndroidAsset,运行时也可能会失败。
System.IO.FileNotFoundException: Language Pack Not Found: chi_sim.traineddata
从Visual Studio Code或CLI构建MAUI Android项目时可能会跳过解决IronOCR所需的语言数据文件。 *.traineddata文件从未被打包到APK中,因此引擎在运行时无法找到它们。
解决方案
1. 在Visual Studio 2022中构建
在完整的Visual Studio 2022 IDE(v17.10或更高版本)中打开并构建项目。 完整的IDE在构建过程中将依赖项包括在Android APK中,而CLI和VS Code路径可能会遗漏它们。
2. 重新定位OcrData文件夹
构建后,将OcrData/chi_sim.traineddata。
ProjectRoot/
├── OcrData/
│ └── chi_sim.traineddata
├── Resources/
│ └── Fonts/
│ └── NotoSansSC-Regular.ttf
├── MyMauiApp.csproj
3. 将已训练的数据注册为Android资产
将重新定位的文件添加到您的.csproj中,以便它们能够与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. 添加支持您的字符的字体
识别的文本仍然需要一个可以在应用程序UI中呈现的字体。 将Noto Sans SC这样的字体放入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
调试提示
- 确认NuGet包:确保
IronOcr.Android已安装并恢复。 - 打开日志记录以查看IronOCR使用的语言文件搜索路径:
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
警告在Assets/下面的.tessdata文件夹在CLI或VS Code构建时可能会静默失败,因此有时需要手动重新定位.traineddata文件。
准备开始了吗?
Nuget 下载 6,136,090 | 版本: 2026.7 刚刚发布

