.NET MAUI Androidで言語パックが見つからない
非英語の言語(たとえば中国語)を.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は、CLIとVS Codeのパスが見逃す依存関係をAndroid APKに含めてビルドします。
2. OcrDataフォルダを移動する
ビルド後、OcrData/chi_sim.traineddataに移動します。
ProjectRoot/
├── OcrData/
│ └── chi_sim.traineddata
├── Resources/
│ └── Fonts/
│ └── NotoSansSC-Regular.ttf
├── MyMauiApp.csproj
3. 訓練済みデータをAndroidのアセットとして登録する
APKと一緒に出荷するために、移動したファイルを.csprojに追加します。
<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>
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
デバッグのヒント
- 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"

