# .NET MAUI에서 IronOCR을 사용한 OCR
## 소개
마이크로소프트는 .NET Framework를 사용하여 크로스 플랫폼 애플리케이션을 구축하기 위한 프레임워크인 .NET MAUI(멀티 플랫폼 앱 UI)를 출시했습니다. 이는 동일한 코드베이스를 사용하여 Android, iOS, Windows에서 실행되는 코드를 작성할 수 있게 하여, 시간, 자원, 노력을 절약할 수 있게 합니다. .NET MAUI는 오픈 소스입니다. 당신은 [GitHub](https://github.com/dotnet/maui)에서 예제와 함께 .NET MAUI 프로젝트의 소스 코드를 받을 수 있습니다.
이 가이드에서는 IronOCR 라이브러리를 사용하여 .NET MAUI에서 OCR 프로세서 앱을 만드는 방법에 대해 예제를 통해 배워볼 것입니다.
<div class="hsg-featured-snippet">
<h2>.NET MAUI에서 OCR 수행 방법</h2>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">.NET MAUI에서 OCR을 수행하기 위한 C# 라이브러리 다운로드</a></li>
<li>MAUI 프로젝트의 프론트엔드를 구성하세요</li>
<li><strong>FilePicker</strong> 클래스를 사용하여 이미지의 전체 경로를 전달합니다</li>
<li><code>Read</code> 메서드를 호출하여 이미지에 OCR을 수행합니다</li>
<li>추출된 텍스트에 액세스하여 <strong>Text</strong> 속성을 통해 표시합니다</li>
</ol>
</div>
## IronOCR: .NET OCR 라이브러리
[IronOCR](/csharp/ocr/)는 개발자가 OCR 기능을 쉽게 프로젝트에 통합할 수 있도록 하는 .NET OCR NuGet 라이브러리입니다. IronOCR를 사용하여 PDF 문서를 스캔하고 검색 가능하고 편집 가능한 텍스트/데이터로 변환할 수 있으며 데이터 품질이 손실되지 않습니다. 이는 사용자들이 PDF 문서에서 필요한 정보를 쉽게 찾을 수 있도록 하고, 필요시 변경 및 수정할 수 있도록 합니다.
IronOCR는 어떤 플랫폼에서도 사용 가능한 가장 발전된 Tesseract 바이너리 빌드를 제공합니다. 이는 향상된 속도, 정확도를 제공하며 Tesseract 3에서 Tesseract 5까지의 모든 버전을 지원하는 네이티브 DLL/API를 제공하여 하나의 설치/다운로드로 쉽게 사용할 수 있습니다.
IronOCR의 언어 지원은 광범위하며 사용자가 125개 이상의 국제 언어를 사용할 수 있습니다. 영어는 툴/DLL에 기본적으로 설치됩니다. 그러나 당신은 쉽게 NuGet을 통해 설치하거나 DLL을 다운로드하여 더 많은 언어를 추가할 수 있습니다.
## Tesseract와의 비교
IronOCR는 C# 개발자를 위해 설계되었으며 .NET 애플리케이션과 원활하게 통합됩니다. 그에 비해, Tesseract는 C#과 사용하려면 개발자가 자체 래퍼를 작성해야 하는 일반적인 OCR 라이브러리입니다. 또한, IronOCR는 혁신적인 인공지능 알고리즘 덕분에 다른 라이브러리보다 뛰어난 정확성과 속도를 제공합니다.
IronOCR는 포괄적인 문서와 기술 지원을 제공하여 초보 개발자도 쉽게 빠르게 시작할 수 있도록 합니다.
IronOCR는 Tesseract보다 훨씬 더 정확합니다. 실제로, IronOCR의 정확도는 99% 이상이며 Tesseract의 정확도는 약 70.2%에서 92.9%에 불과합니다. IronOCR와 Tesseract 비교에 대한 더 많은 정보와 지원은 이 [YouTube 비디오](https://www.youtube.com/watch?v=2QTEb6x8NJ4)에서 확인할 수 있습니다.
## OCR MAUI 앱 생성 단계
IronOCR를 사용하여 .NET MAUI 프레임워크에서 OCR 앱을 만드는 절차는 다음과 같습니다.
### 필수 조건
.NET MAUI에서 OCR 앱을 만들기 위한 필수 조건은 다음과 같습니다:
1. Visual Studio 2022 (최신 버전)
2. .NET 6 또는 7
3. Visual Studio에 설치된 MAUI 패키지
4. Visual Studio에서 실행 중인 .NET MAUI 프로젝트
### IronOCR 설치
첫 번째 단계는 NuGet 패키지 관리자 콘솔을 사용하여 IronOCR 라이브러리를 설치하는 것입니다. 솔루션 탐색기에서 오른쪽 클릭하여 NuGet 패키지 관리자 콘솔을 열고 IronOCR 라이브러리를 설치하기 위해 다음 명령을 실행하세요:
```shell
:ProductInstall
```
### 프론트엔드 디자인
이 섹션에서는 애플리케이션의 프론트엔드를 디자인할 것입니다. *MainPage.xaml* 파일을 엽니다.
<div class="content-img-align-center">
<img src="/static-assets/ocr/how-to/net-maui-ocr-tutorial/net-maui-ocr-tutorial-1.webp" alt="IronOCR를 사용하는 .NET MAUI OCR 튜토리얼 - 그림 1: MainPage.xaml" class="img-responsive add-shadow" />
<p class="content__image-caption content-align">MainPage.xaml</p>
</div>
이미지 또는 PDF 문서를 OCR하기 위해 선택할 수 있게 해주는 버튼을 지정합니다. 버튼의 `Clicked` 속성은 다음 섹션에서 정의할 `IOCR` 함수를 실행하도록 설정되어 있습니다.
```xml
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
```
여기서 `Image` 요소를 `OCRImage`이름으로 생성합니다. 이 이미지 박스는 선택된 파일을 표시할 것입니다.
```xml
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
```
다음으로, `Editor` 컨트롤을 생성합니다. 이는 이미지 또는 PDF 문서로부터 추출된 텍스트를 보여주는 데 사용될 것입니다.
```xml
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
```
아래는 완성된 XAML 사용자 인터페이스 마크업입니다.
```xml
<?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="IronOCR_MAUI_Test.MainPage">
<ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center">
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300" />
</VerticalStackLayout>
</ScrollView>
</ContentPage>
```
이제 OCR 기능을 위한 코드를 작성할 시간입니다.
### IronOCR를 사용한 OCR 코드
`MainPage.xaml.cs` 클래스 파일을 열고 다음 함수를 작성하십시오:
<div class="content-img-align-center">
<img src="/static-assets/ocr/how-to/net-maui-ocr-tutorial/net-maui-ocr-tutorial-2.webp" alt="IronOCR를 사용하는 .NET MAUI OCR 튜토리얼 - 그림 2: MainPage.xaml.cs" class="img-responsive add-shadow" />
<p class="content__image-caption content-align">MainPage.xaml.cs</p>
</div>
```csharp
private async void IOCR(object sender, EventArgs e)
{
// Prompt user to select an image using FilePicker
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
// Get the full path of the selected image
var path = images.FullPath.ToString();
// Display the selected image in the Image control
OCRImage.Source = path;
// Create an IronTesseract object to perform OCR
var ocr = new IronTesseract();
// Perform OCR and extract text from the selected image
using (var input = new OcrInput())
{
input.AddImage(path); // Add image to the OCR input
OcrResult result = ocr.Read(input); // Perform OCR
string text = result.Text; // Extract text
// Display extracted text in the Editor control
outputText.Text = text;
}
}
```
위의 코드를 분석해 봅시다:
- 코드는기기에서 이미지 파일을 선택할 수 있도록 `FilePicker`을 사용합니다. 파일 선택기는 이미지에만 허용되도록 구성됩니다.
```csharp
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
```
- `Image` 컨트롤은 선택한 이미지를 파일 경로를 사용하여 표시하도록 설정되어 있습니다.
```csharp
OCRImage.Source = path;
```
- OCR을 수행하기 위해 `IronTesseract` 객체가 생성됩니다. 선택한 이미지는 `OcrInput` 객체에 추가됩니다. 이미지에서 텍스트를 추출하도록 `Read` 메서드가 호출되며, 이 텍스트는 `Editor` 컨트롤에 표시됩니다.
```csharp
:path=/static-assets/ocr/content-code-examples/get-started/net-maui-ocr-tutorial-9.cs
```
## 출력
프로젝트를 실행한 후 아래 UI가 나타납니다. 버튼을 클릭하면 어느 위치에서든 이미지/PDF를 선택하도록 프롬프트됩니다.
<div class="content-img-align-center">
<img src="/static-assets/ocr/how-to/net-maui-ocr-tutorial/net-maui-ocr-tutorial-3.webp" alt=".NET MAUI OCR Tutorial Using IronOCR - Figure 3: OCR 출력" class="img-responsive add-shadow" />
<p class="content__image-caption content-align">OCR 출력</p>
</div>
이미지를 선택한 후, IronOCR는 이미지를 처리하고 인식된 단어를 에디터 컨트롤에 표시합니다. 에디터 컨트롤에서 텍스트를 복사할 수 있습니다.
<div class="content-img-align-center">
<img src="/static-assets/ocr/how-to/net-maui-ocr-tutorial/net-maui-ocr-tutorial-4.webp" alt=".NET MAUI OCR Tutorial Using IronOCR - Figure 4: OCR 이미지" class="img-responsive add-shadow" />
<p class="content__image-caption content-align">OCR 이미지</p>
</div>
결과에서 IronOCR가 패턴이 있는 복잡한 이미지를 처리하는 데 있어서 뛰어난 성능을 보여주며, 정확한 결과를 나타내는 것을 보여줍니다. IronOCR는 사전 훈련된 모델을 사용하여 작은 세부 정보를 감지하고 필요한 정확한 문자를 선택할 수 있습니다.
[[i:(Running the project in release mode with debugging attached might cause issues. 이러한 경우, 아래 링크에 표시된 대로 패키징되지 않은 .NET MAUI 앱으로 프로젝트를 게시하여 앱이 제대로 작동하는지 확인할 수 있습니다.)]]
## 결론
더 많은 정보를 얻고자 한다면, IronOCR를 사용하여 [이미지에서 텍스트를 읽는 방법](/csharp/ocr/tutorials/how-to-read-text-from-an-image-in-csharp-net/)에 대한 추가 정보를 제공하는 [튜토리얼](/csharp/ocr/tutorials/how-to-read-text-from-an-image-in-csharp-net/)을 참조하십시오.
IronOCR는 개발 목적에 대해 무료입니다. 아주 낮은 가격으로 `$liteLicense`부터 구매할 수 있습니다. 여기에서 가격 계획을 [확인하세요](/csharp/ocr/licensing/).
마이크로소프트는 .NET Framework를 사용하여 크로스 플랫폼 애플리케이션을 구축하기 위한 프레임워크인 .NET MAUI(멀티 플랫폼 앱 UI)를 출시했습니다. 이는 동일한 코드베이스를 사용하여 Android, iOS, Windows에서 실행되는 코드를 작성할 수 있게 하여, 시간, 자원, 노력을 절약할 수 있게 합니다. .NET MAUI는 오픈 소스입니다. 당신은 GitHub에서 예제와 함께 .NET MAUI 프로젝트의 소스 코드를 받을 수 있습니다.
이 가이드에서는 IronOCR 라이브러리를 사용하여 .NET MAUI에서 OCR 프로세서 앱을 만드는 방법에 대해 예제를 통해 배워볼 것입니다.
IronOCR는 개발자가 OCR 기능을 쉽게 프로젝트에 통합할 수 있도록 하는 .NET OCR NuGet 라이브러리입니다. IronOCR를 사용하여 PDF 문서를 스캔하고 검색 가능하고 편집 가능한 텍스트/데이터로 변환할 수 있으며 데이터 품질이 손실되지 않습니다. 이는 사용자들이 PDF 문서에서 필요한 정보를 쉽게 찾을 수 있도록 하고, 필요시 변경 및 수정할 수 있도록 합니다.
IronOCR는 어떤 플랫폼에서도 사용 가능한 가장 발전된 Tesseract 바이너리 빌드를 제공합니다. 이는 향상된 속도, 정확도를 제공하며 Tesseract 3에서 Tesseract 5까지의 모든 버전을 지원하는 네이티브 DLL/API를 제공하여 하나의 설치/다운로드로 쉽게 사용할 수 있습니다.
IronOCR의 언어 지원은 광범위하며 사용자가 125개 이상의 국제 언어를 사용할 수 있습니다. 영어는 툴/DLL에 기본적으로 설치됩니다. 그러나 당신은 쉽게 NuGet을 통해 설치하거나 DLL을 다운로드하여 더 많은 언어를 추가할 수 있습니다.
Tesseract와의 비교
IronOCR는 C# 개발자를 위해 설계되었으며 .NET 애플리케이션과 원활하게 통합됩니다. 그에 비해, Tesseract는 C#과 사용하려면 개발자가 자체 래퍼를 작성해야 하는 일반적인 OCR 라이브러리입니다. 또한, IronOCR는 혁신적인 인공지능 알고리즘 덕분에 다른 라이브러리보다 뛰어난 정확성과 속도를 제공합니다.
IronOCR는 포괄적인 문서와 기술 지원을 제공하여 초보 개발자도 쉽게 빠르게 시작할 수 있도록 합니다.
IronOCR는 Tesseract보다 훨씬 더 정확합니다. 실제로, IronOCR의 정확도는 99% 이상이며 Tesseract의 정확도는 약 70.2%에서 92.9%에 불과합니다. IronOCR와 Tesseract 비교에 대한 더 많은 정보와 지원은 이 YouTube 비디오에서 확인할 수 있습니다.
OCR MAUI 앱 생성 단계
IronOCR를 사용하여 .NET MAUI 프레임워크에서 OCR 앱을 만드는 절차는 다음과 같습니다.
필수 조건
.NET MAUI에서 OCR 앱을 만들기 위한 필수 조건은 다음과 같습니다:
Visual Studio 2022 (최신 버전)
.NET 6 또는 7
Visual Studio에 설치된 MAUI 패키지
Visual Studio에서 실행 중인 .NET MAUI 프로젝트
IronOCR 설치
첫 번째 단계는 NuGet 패키지 관리자 콘솔을 사용하여 IronOCR 라이브러리를 설치하는 것입니다. 솔루션 탐색기에서 오른쪽 클릭하여 NuGet 패키지 관리자 콘솔을 열고 IronOCR 라이브러리를 설치하기 위해 다음 명령을 실행하세요:
PM > Install-Package IronOcr
Install-Package IronOcr
프론트엔드 디자인
이 섹션에서는 애플리케이션의 프론트엔드를 디자인할 것입니다. MainPage.xaml 파일을 엽니다.
MainPage.xaml
이미지 또는 PDF 문서를 OCR하기 위해 선택할 수 있게 해주는 버튼을 지정합니다. 버튼의 Clicked 속성은 다음 섹션에서 정의할 IOCR 함수를 실행하도록 설정되어 있습니다.
<Button x:Name="OCR" Text="Click to OCR" Clicked="IOCR" HorizontalOptions="Center" />
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
XML
여기서 Image 요소를 OCRImage이름으로 생성합니다. 이 이미지 박스는 선택된 파일을 표시할 것입니다.
private async voidIOCR(object sender, EventArgs e){ // Prompt user to select an image using FilePicker var images = awaitFilePicker.Default.PickAsync(new PickOptions {PickerTitle = "Pick image",FileTypes = FilePickerFileType.Images }); // Get the full path of the selected image var path = images.FullPath.ToString(); // Display the selected image in the Image controlOCRImage.Source = path; // Create an IronTesseract object to perform OCR var ocr = new IronTesseract(); // Perform OCR and extract text from the selected image using (var input = new OcrInput()) { input.AddImage(path); // Add image to the OCR input OcrResult result = ocr.Read(input); // Perform OCR string text = result.Text; // Extract text // Display extracted text in the Editor control outputText.Text = text; }}
private async void IOCR(object sender, EventArgs e)
{
// Prompt user to select an image using FilePicker
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
// Get the full path of the selected image
var path = images.FullPath.ToString();
// Display the selected image in the Image control
OCRImage.Source = path;
// Create an IronTesseract object to perform OCR
var ocr = new IronTesseract();
// Perform OCR and extract text from the selected image
using (var input = new OcrInput())
{
input.AddImage(path); // Add image to the OCR input
OcrResult result = ocr.Read(input); // Perform OCR
string text = result.Text; // Extract text
// Display extracted text in the Editor control
outputText.Text = text;
}
}
PrivateAsync Sub IOCR(sender AsObject, e AsEventArgs) ' Prompt user to select an image using FilePicker Dim images = AwaitFilePicker.Default.PickAsync(New PickOptionsWith { .PickerTitle = "Pick image", .FileTypes = FilePickerFileType.Images }) ' Get the full path of the selected image Dim path = images.FullPath.ToString() ' Display the selected image in the Image controlOCRImage.Source = path ' Create an IronTesseract object to perform OCR Dim ocr = New IronTesseract() ' Perform OCR and extract text from the selected imageUsing input = New OcrInput() input.AddImage(path) ' Add image to the OCR input Dim result AsOcrResult = ocr.Read(input) ' Perform OCR Dim text AsString = result.Text' Extract text ' Display extracted text in the Editor control outputText.Text = textEndUsingEnd Sub
Private Async Sub IOCR(sender As Object, e As EventArgs)
' Prompt user to select an image using FilePicker
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
' Get the full path of the selected image
Dim path = images.FullPath.ToString()
' Display the selected image in the Image control
OCRImage.Source = path
' Create an IronTesseract object to perform OCR
Dim ocr = New IronTesseract()
' Perform OCR and extract text from the selected image
Using input = New OcrInput()
input.AddImage(path) ' Add image to the OCR input
Dim result As OcrResult = ocr.Read(input) ' Perform OCR
Dim text As String = result.Text ' Extract text
' Display extracted text in the Editor control
outputText.Text = text
End Using
End Sub
위의 코드를 분석해 봅시다:
코드는기기에서 이미지 파일을 선택할 수 있도록 FilePicker을 사용합니다. 파일 선택기는 이미지에만 허용되도록 구성됩니다.
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
.PickerTitle = "Pick image",
.FileTypes = FilePickerFileType.Images
})
Dim path = images.FullPath.ToString()
Image 컨트롤은 선택한 이미지를 파일 경로를 사용하여 표시하도록 설정되어 있습니다.
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
OCRImage.Source = path
OCR을 수행하기 위해 IronTesseract 객체가 생성됩니다. 선택한 이미지는 OcrInput 객체에 추가됩니다. 이미지에서 텍스트를 추출하도록 Read 메서드가 호출되며, 이 텍스트는 Editor 컨트롤에 표시됩니다.
var ocr = new IronTesseract();using (var input = new OcrInput()){ input.LoadImage(path); OcrResult result = ocr.Read(input); string text = result.Text; outputText.Text = text; }
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.LoadImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
C#
출력
프로젝트를 실행한 후 아래 UI가 나타납니다. 버튼을 클릭하면 어느 위치에서든 이미지/PDF를 선택하도록 프롬프트됩니다.
OCR 출력
이미지를 선택한 후, IronOCR는 이미지를 처리하고 인식된 단어를 에디터 컨트롤에 표시합니다. 에디터 컨트롤에서 텍스트를 복사할 수 있습니다.
OCR 이미지
결과에서 IronOCR가 패턴이 있는 복잡한 이미지를 처리하는 데 있어서 뛰어난 성능을 보여주며, 정확한 결과를 나타내는 것을 보여줍니다. IronOCR는 사전 훈련된 모델을 사용하여 작은 세부 정보를 감지하고 필요한 정확한 문자를 선택할 수 있습니다.
참고해 주세요: Running the project in release mode with debugging attached might cause issues. 이러한 경우, 아래 링크에 표시된 대로 패키징되지 않은 .NET MAUI 앱으로 프로젝트를 게시하여 앱이 제대로 작동하는지 확인할 수 있습니다.
커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.