.NET MAUI Android에서 언어 팩이 발견되지 않음

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

중국어와 같은 비영어 언어를 .NET MAUI Android 프로젝트에서 로드할 때, Assets/tessdata에 학습된 데이터가 있고 AndroidAsset로 표시되어 있어도 런타임에 실패할 수 있습니다.

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

Visual Studio CodeCLI에서 MAUI Android 프로젝트를 빌드하면 IronOCR가 필요로 하는 언어 데이터 파일을 해결하는 것을 생략할 수 있습니다. *.traineddata 파일들이 APK에 포함되지 않아서 엔진이 런타임에 찾을 수 없습니다.

해결책

1. Visual Studio 2022에서 빌드

전체 Visual Studio 2022 IDE(v17.10 이상)에서 프로젝트를 열고 빌드하세요. 전체 IDE는 빌드 중 Android APK에 종속성을 포함시켜 CLI와 VS Code 경로에서 누락될 수 있습니다.

2. OcrData 폴더 이동

빌드 후, OcrData 폴더를 bin에서 프로젝트 루트로 이동하십시오. 예를 들어 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와 같은 글꼴을 Resources/Fonts에 추가하고 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

경고자산 아래의 .tessdata 폴더는 CLI나 VS Code 빌드에서 조용히 실패할 수 있어, .traineddata 파일을 수동으로 이동해야 하는 경우가 있습니다.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 6,136,090 | 버전: 2026.7 방금 출시
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package IronOcr
샘플을 실행하세요 이미지가 검색 가능한 텍스트로 바뀌는 것을 확인해 보세요.