Android에서 .NET MAUI로 OCR 수행하는 방법

This article was translated from English: Does it need improvement?
Translated
View the article in English
Android related to Android에서 .NET MAUI로 OCR 수행하는 방법

.NET MAUI(멀티 플랫폼 앱 UI)는 Xamarin.Forms 프레임워크의 진화로, .NET을 사용하여 Android, iOS, macOS 및 Windows에 대한 크로스 플랫폼 앱을 만들 수 있도록 설계되었습니다. .NET MAUI는 여러 플랫폼에서 실행할 수 있는 네이티브 사용자 인터페이스 구축 과정을 간소화하는 것을 목표로 합니다.

IronOcr.Android 패키지는 Android에 OCR 지원을 제공합니다!

IronOCR Android 패키지

IronOcr.Android 패키지는 .NET 크로스 플랫폼 프로젝트를 통해 Android 기기에서 OCR 기능을 사용할 수 있게 합니다. 기본 IronOCR 패키지는 필요 없습니다.

Install-Package IronOcr.Android
PDF용 C# NuGet 라이브러리
### NuGet을 사용하여 설치하세요
Install-Package IronOcr.Android

.NET MAUI 프로젝트 생성

Visual Studio를 열고 'Create a new project'를 클릭합니다. MAUI를 검색하고 .NET MAUI App을 선택한 후 'Next'를 클릭합니다.

. .NET MAUI 앱 프로젝트 생성

IronOcr.Android 라이브러리 포함

라이브러리는 다양한 방법으로 추가할 수 있습니다. 가장 쉬운 방법은 아마도 NuGet을 사용하는 것입니다.

  1. Visual Studio 안에서 'Dependencies'를 마우스 오른쪽 버튼으로 클릭하고 'Manage NuGet Packages ...'를 선택합니다.
  2. 'Browse' 탭을 선택하고 'IronOcr.Android'를 검색합니다.
  3. 'IronOcr.Android' 패키지를 선택하고 'Install'을 클릭합니다.

 IronOcr.Android 패키지 다운로드

다른 플랫폼과의 문제를 방지하기 위해 csproj 파일을 수정하여 Android 플랫폼을 대상으로 할 때만 패키지를 포함하도록 합니다. 이를 수행하려면:

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 'Edit Project File'을 선택합니다.
  2. 새로운 ItemGroup 요소를 만듭니다:

    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('android')) == true">
    </ItemGroup>
    XML
  3. 우리가 방금 만든 ItemGroup 안에 'IronOcr.Android' PackageReference를 이동합니다.

위 단계를 따르면 'IronOcr.Android' 패키지가 예를 들어 iOS 플랫폼에서 사용되지 않도록 방지할 수 있습니다 (그 목적을 위해서는 IronOcr.iOS를 설치하세요).

'MainActivity.cs' 편집하기

  • Platforms -> Android로 이동하여 'MainActivity.cs' 파일을 엽니다.
  • MainActivity 메서드를 추가하고 Initialize 메서드를 호출합니다.
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.OS;
using IronOcr;

namespace MAUIIronOCRAndroidSample
{
    [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
    public class MainActivity : MauiAppCompatActivity
    {
        public MainActivity()
        {
            // Initialize IronTesseract for OCR purposes
            IronTesseract.Initialize(this);
        }
    }
}
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using Android.OS;
using IronOcr;

namespace MAUIIronOCRAndroidSample
{
    [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
    public class MainActivity : MauiAppCompatActivity
    {
        public MainActivity()
        {
            // Initialize IronTesseract for OCR purposes
            IronTesseract.Initialize(this);
        }
    }
}
$vbLabelText   $csharpLabel

'MainPage.xaml' 편집하기

XAML 파일을 편집하여 버튼과 OCR 결과를 표시할 레이블을 만듭니다. 예를 들어:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MAUIIronOCRAndroidSample.MainPage">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button
            Text="Import File"
            Clicked="ReadFileOnImport"
            Grid.Row="0"
            HorizontalOptions="Center"
            Margin="20, 20, 20, 10"/>

        <ScrollView
            Grid.Row="1"
            BackgroundColor="LightGray"
            Padding="10"
            Margin="10, 10, 10, 30">
            <Label x:Name="OutputText"/>
        </ScrollView>
    </Grid>

</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MAUIIronOCRAndroidSample.MainPage">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button
            Text="Import File"
            Clicked="ReadFileOnImport"
            Grid.Row="0"
            HorizontalOptions="Center"
            Margin="20, 20, 20, 10"/>

        <ScrollView
            Grid.Row="1"
            BackgroundColor="LightGray"
            Padding="10"
            Margin="10, 10, 10, 30">
            <Label x:Name="OutputText"/>
        </ScrollView>
    </Grid>

</ContentPage>
XML

'MainPage.xaml.cs' 편집하기

먼저, IronTesseract 객체의 인스턴스를 생성합니다. 아래 코드에서 보여주는 것처럼 IronTesseract가 클래스 내에서 한 번만 초기화되었는지 확인하십시오. 메서드 내에서 인스턴스화하는 것은 비효율적일 수 있으며 예기치 않은 오류를 초래할 수 있습니다.

다음으로, FilePicker.PickAsync 메서드를 사용하여 파일을 선택한 다음 FileResult 에서 읽기 스트림을 엽니다. 새로운 OcrInput 객체를 생성하고 이미지를 해당 객체에 로드합니다. tesseract 인스턴스를 사용하여 이미지에서 OCR을 수행하고 텍스트를 가져옵니다. 마지막으로, 얻은 텍스트를 레이블에 표시합니다.

using IronOcr;
using Microsoft.Maui.Controls;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;

namespace MAUIIronOCRAndroidSample
{
    public partial class MainPage : ContentPage
    {
        // Initialize IronTesseract once in a class
        private readonly IronTesseract ocrTesseract = new IronTesseract();

        public MainPage()
        {
            InitializeComponent();
            // Apply License key if required
            IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01";
        }

        private async void ReadFileOnImport(object sender, EventArgs e)
        {
            try
            {
                // Configure the file picker
                var options = new PickOptions
                {
                    PickerTitle = "Please select a file"
                };

                // Await user's file selection
                var result = await FilePicker.PickAsync(options);
                if (result != null)
                {
                    using var stream = await result.OpenReadAsync();
                    // Instantiate OcrInput
                    using var ocrInput = new OcrInput();
                    // Load image stream for OCR processing
                    ocrInput.AddImage(stream);
                    // Perform OCR
                    var ocrResult = ocrTesseract.Read(ocrInput);
                    // Display extracted text
                    OutputText.Text = ocrResult.Text;
                }
            }
            catch (Exception ex)
            {
                // Log and handle exceptions
                Debug.WriteLine(ex);
            }
        }
    }
}
using IronOcr;
using Microsoft.Maui.Controls;
using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;

namespace MAUIIronOCRAndroidSample
{
    public partial class MainPage : ContentPage
    {
        // Initialize IronTesseract once in a class
        private readonly IronTesseract ocrTesseract = new IronTesseract();

        public MainPage()
        {
            InitializeComponent();
            // Apply License key if required
            IronOcr.License.LicenseKey = "IRONOCR.MYLICENSE.KEY.1EF01";
        }

        private async void ReadFileOnImport(object sender, EventArgs e)
        {
            try
            {
                // Configure the file picker
                var options = new PickOptions
                {
                    PickerTitle = "Please select a file"
                };

                // Await user's file selection
                var result = await FilePicker.PickAsync(options);
                if (result != null)
                {
                    using var stream = await result.OpenReadAsync();
                    // Instantiate OcrInput
                    using var ocrInput = new OcrInput();
                    // Load image stream for OCR processing
                    ocrInput.AddImage(stream);
                    // Perform OCR
                    var ocrResult = ocrTesseract.Read(ocrInput);
                    // Display extracted text
                    OutputText.Text = ocrResult.Text;
                }
            }
            catch (Exception ex)
            {
                // Log and handle exceptions
                Debug.WriteLine(ex);
            }
        }
    }
}
$vbLabelText   $csharpLabel

마지막으로, .csproj 파일에서 프로젝트가 Android용으로만 빌드되는지 확인하십시오. 추가한 패키지는 Android 전용이므로 모든 플랫폼에 대해 프로젝트를 빌드하면 실패합니다.

프로젝트 실행

이것은 프로젝트를 실행하고 OCR을 수행하는 방법을 보여줄 것입니다.

Execute .NET MAUI App project

.NET MAUI App 프로젝트 다운로드

이 가이드의 전체 코드를 다운로드할 수 있습니다. 이는 Visual Studio에서 .NET MAUI App 프로젝트로 열 수 있는 압축된 파일 형태로 제공됩니다.

프로젝트를 다운로드하려면 여기를 클릭하세요.

Avalonia에서 IronOcr.Android 사용

MAUI와 유사하게 IronOcr.Android는 위에서 설명한 동일한 설정으로 Avalonia 프로젝트에서도 사용할 수 있습니다.

iOS에서 OCR을 수행하려면, 다음 기사에서 더 많은 정보를 확인하세요: ".NET MAUI에서 iOS에서 OCR 수행하는 방법"

자주 묻는 질문

.NET MAUI 애플리케이션에서 안드로이드 기기에 OCR을 구현하려면 어떻게 해야 할까요?

.NET MAUI를 사용하여 Android에서 OCR을 수행하려면 Visual Studio에서 NuGet을 통해 IronOcr.Android 패키지를 설치하세요. IronTesseract 클래스를 사용하여 이미지를 처리하고 텍스트를 추출합니다. .csproj 파일을 적절히 수정하여 프로젝트가 Android를 대상으로 구성되었는지 확인하세요.

IronOcr.Android 패키지의 목적은 무엇입니까?

IronOcr.Android 패키지는 .NET MAUI 프로젝트 내에서 Android 기기에 OCR 기능을 제공하기 위해 특별히 설계되었습니다. 이 패키지를 사용하면 Android를 대상으로 하는 크로스 플랫폼 애플리케이션에 텍스트 인식 기능을 쉽게 통합할 수 있습니다.

.NET MAUI 프로젝트를 Android OCR용으로 구성하려면 어떻게 해야 하나요?

NuGet을 통해 IronOcr.Android 패키지를 설치하여 .NET MAUI 프로젝트를 구성하십시오. .csproj 파일에서 새로운 ItemGroup 요소를 생성하고 IronOcr.Android PackageReference를 그 안에 넣어 Android를 대상으로 지정하십시오. 이렇게 하면 다른 플랫폼에서 발생하는 빌드 문제를 방지할 수 있습니다.

OCR 설정을 위해 MainActivity.cs 파일에 어떤 수정이 필요합니까?

Platforms -> Android 폴더에 있는 MainActivity.cs 파일에 MainActivity 메서드를 추가하고 IronTesseract의 Initialize 메서드를 호출하세요. 이렇게 하면 이미지에서 텍스트를 처리하는 데 필요한 OCR 기능이 설정됩니다.

MainPage.xaml 파일을 수정하여 OCR 기능을 통합하려면 어떻게 해야 하나요?

MainPage.xaml 파일을 수정하여 파일 가져오기 버튼과 OCR 결과 표시 레이블을 추가하세요. OCR 처리 로직과 상호 작용하고 사용자 입력을 효율적으로 관리하는 데 필요한 UI 요소를 정의하세요.

OCR 처리 중 오류가 발생하면 어떻게 해야 하나요?

OCR 처리 코드에 try-catch 블록을 사용하여 예외를 처리하세요. Debug.WriteLine 또는 다른 로깅 메커니즘을 사용하여 오류를 기록하면 문제 진단 및 해결에 도움이 됩니다.

IronOcr.Android 패키지를 Avalonia 프로젝트에서 사용할 수 있습니까?

네, IronOcr.Android 패키지는 .NET MAUI에서와 유사한 설정 과정을 통해 Avalonia 프로젝트에서 사용할 수 있습니다. OCR 기능을 활성화하려면 프로젝트 구성을 적절히 조정하십시오.

.NET MAUI를 사용한 안드로이드 OCR용 전체 샘플 프로젝트는 어디에서 찾을 수 있나요?

.NET MAUI에서 IronOCR 라이브러리를 사용한 Android OCR 샘플 프로젝트 전체 버전을 가이드에 제공된 링크를 통해 다운로드할 수 있습니다. 프로젝트는 압축 파일 형태로 제공되며, Visual Studio에서 바로 열 수 있습니다.

멀티 플랫폼 프로젝트에서 IronOcr.Android 패키지가 Android만 대상으로 하도록 하려면 어떻게 해야 하나요?

IronOcr.Android 패키지가 Android만을 대상으로 하도록 하려면 .csproj 파일을 수정하여 Android용 조건부 ItemGroup을 생성하고 IronOcr.Android PackageReference를 그 안에 넣으세요. 이렇게 하면 다른 플랫폼용으로 빌드할 때 충돌을 방지할 수 있습니다.

커티스 차우
기술 문서 작성자

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

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

시작할 준비 되셨나요?
Nuget 다운로드 5,525,971 | 버전: 2026.3 방금 출시되었습니다
Still Scrolling Icon

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

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