在 .NET MAUI Android 中找不到语言包
Curtis Chau
Updated: 2026年6月29日
在.NET MAUI Android项目中加载非英语语言(例如中文)时,即使训练数据位于AndroidAsset,运行时也可能会失败。
System.IO.FileNotFoundException: Language Pack Not Found: chi_sim.traineddata
Text
从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
Text
3. 将已训练的数据注册为Android资产
将重新定位的文件添加到您的.csproj中,以便它们能够与APK一起发布。
<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();
}
}
}
C#
调试提示
- **确认NuGet包:**确保
IronOcr.Android已安装并恢复。 - 打开日志记录以查看IronOCR使用的语言文件搜索路径:
IronSoftware.Logger.LoggingMode = IronSoftware.Logger.LoggingModes.All;
IronSoftware.Logger.LogFilePath = "OcrMaui.log";
C#
警告: 在Assets/下面的.tessdata文件夹在CLI或VS Code构建时可能会静默失败,因此有时需要手动重新定位.traineddata文件。

技术作家
Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
...
阅读更多