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

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

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

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

IronOCR iOS 패키지

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

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

.NET MAUI 프로젝트를 생성합니다.

멀티플랫폼 섹션에서 .NET MAUI 앱을 선택하고 계속합니다.

. .NET MAUI 앱 프로젝트 생성

IronOCR.iOS 라이브러리 포함

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

  1. Visual Studio 내에서, "Dependencies > NuGet"을 우클릭하고 "Manage NuGet Packages ..."를 선택합니다.
  2. "Browse" 탭을 선택하고 "IronOcr.iOS"를 검색합니다.
  3. "IronOcr.iOS" 패키지를 선택하고 "Add Package"를 클릭합니다.

 IronOCR.iOS 패키지 다운로드

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

  1. 프로젝트의 *.csproj 파일을 우클릭하고 "Edit Project File"을 선택합니다.
  2. 다음과 같이 새로운 ItemGroup 요소를 생성합니다.

    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
        <PackageReference Include="IronOcr.iOS" Version="YOUR_PACKAGE_VERSION" />
    </ItemGroup>
    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
        <PackageReference Include="IronOcr.iOS" Version="YOUR_PACKAGE_VERSION" />
    </ItemGroup>
    XML
  3. "IronOCR.iOS" PackageReference를 방금 생성한 ItemGroup 안으로 이동합니다.

위의 단계는 "IronOcr.iOS" 패키지가 안드로이드 플랫폼에서는 사용되지 않도록 합니다 (그 목적을 위해서는 대신 IronOcr.Android를 설치하십시오).

'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="MAUIIronOCRiOSSample.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="MAUIIronOCRiOSSample.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을 수행하고 텍스트를 반환합니다. 마지막으로, 얻은 텍스트를 레이블에 표시합니다.

현재 구현은 이미지 파일에만 제한됩니다. 패키지는 아직 PDF 문서와 작동하지 않습니다. 이를 염두에 두고, PDF 문서와 관련된 모든 구성은 비활성화된 상태로 유지해야 합니다.

using System;
using IronOcr;
using Microsoft.Maui.Controls;

namespace MAUIIronOCRiOSSample;

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

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

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

            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
                ocrInput.LoadImage(stream);

                // Perform OCR
                var ocrResult = ocrTesseract.Read(ocrInput);
                OutputText.Text = ocrResult.Text;
            }
        }
        catch (Exception ex)
        {
            // Handle exceptions
            System.Diagnostics.Debug.WriteLine(ex);
        }
    }
}
using System;
using IronOcr;
using Microsoft.Maui.Controls;

namespace MAUIIronOCRiOSSample;

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

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

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

            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
                ocrInput.LoadImage(stream);

                // Perform OCR
                var ocrResult = ocrTesseract.Read(ocrInput);
                OutputText.Text = ocrResult.Text;
            }
        }
        catch (Exception ex)
        {
            // Handle exceptions
            System.Diagnostics.Debug.WriteLine(ex);
        }
    }
}
$vbLabelText   $csharpLabel

마지막으로, 빌드 대상을 iOS 시뮬레이터로 전환하고 프로젝트를 실행하세요.

프로젝트 실행

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

Execute .NET MAUI App project

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

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

프로젝트를 다운로드하려면 여기를 클릭하십시오.

Avalonia에서 IronOcr.iOS 사용하기

Avalonia에서 IronOcr.iOS를 설정하는 것은 MAUI와 유사하지만 중요한 차이점이 하나 있습니다: 최신 .NET SDK 버전 외에도 IronOcr.iOS가 성공적으로 실행되려면 .NET SDK 8.0.101이 설치되어 있어야 합니다. 그 후, IronOcr.iOS는 위에서 설명한 동일한 설정으로 Avalonia 프로젝트에서 사용할 수 있습니다.

안드로이드에서 OCR을 수행하려면, 더 많은 내용을 배우기 위해서는 다음 문서로 이동하십시오: ".NET MAUI에서 안드로이드에 OCR 수행하는 방법"

자주 묻는 질문

.NET MAUI 기반 iOS 앱에 OCR 기능을 통합하려면 어떻게 해야 하나요?

IronOCR.iOS 패키지를 사용하면 iOS for .NET MAUI 앱에 OCR 기능을 통합할 수 있습니다. Visual Studio에서 NuGet을 통해 설치한 다음, 프로젝트 파일을 수정하여 iOS 플랫폼에 대해 조건부로 패키지를 포함시키세요. 이미지를 처리하고 텍스트를 추출하려면 IronTesseract 사용하십시오.

IronOCR.iOS 패키지를 PDF 문서 처리에 사용할 수 있나요?

아니요, IronOCR.iOS 패키지는 현재 이미지 파일만 처리할 수 있으며 PDF 문서는 지원하지 않습니다. 프로젝트에서 PDF 관련 설정을 모두 비활성화했는지 확인하십시오.

.NET MAUI를 사용하여 iOS 앱용 OCR을 설정하는 데 필요한 단계는 무엇입니까?

.NET MAUI를 사용하여 iOS 앱용 OCR을 설정하려면 NuGet을 통해 IronOcr.iOS 패키지를 다운로드하고, 프로젝트 파일을 수정하여 iOS용 패키지를 조건부로 포함시키고, MainPage.xaml 및 MainPage.xaml.cs 파일을 편집하여 사용자 인터페이스를 만들고 OCR 처리를 처리해야 합니다.

Avalonia 프로젝트에서 IronOCR을 사용하기 위한 추가 요구 사항은 무엇입니까?

Avalonia 프로젝트에서 IronOCR을 사용하려면 최신 .NET SDK 버전과 .NET SDK 8.0.101이 설치되어 있는지 확인해야 합니다. 이 설정은 MAUI와 유사하지만 추가 SDK가 필요합니다.

.NET MAUI 프로젝트에서 IronOCR을 사용하여 이미지에 OCR을 적용하려면 어떻게 해야 하나요?

.NET MAUI 프로젝트에서 IronTesseract 객체를 사용하여 이미지에 OCR을 수행합니다. FilePicker.PickAsync 사용하여 이미지 파일을 선택하고, 이를 OcrInput 객체에 로드한 다음, IronTesseract 사용하여 이미지를 읽고 텍스트를 추출합니다.

.NET MAUI를 사용하여 iOS에서 OCR을 구현하는 샘플 프로젝트가 있습니까?

네, Iron Software 웹사이트에서 IronOCR.iOS를 사용하는 샘플 .NET MAUI 프로젝트를 다운로드할 수 있습니다. 이 샘플 프로젝트는 압축 파일 형태로 제공되며, Visual Studio에서 열어 개발 과정을 더욱 빠르게 진행할 수 있습니다.

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

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

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

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

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

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