.NET MAUIでiOSでOCRを実行する方法

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

によって チャクニット・ビン

.NET MAUI (マルチプラットフォームアプリUI) は、.NETを使用してAndroid、iOS、macOS、およびWindows向けのクロスプラットフォームアプリを作成するために設計されたXamarin.Formsフレームワークの進化形です。 MAUIは、複数のプラットフォームで動作するネイティブユーザインターフェースの構築プロセスを簡素化することを目指しています。

IronOcr.iOSパッケージは、iOSにOCRサポートを提供します。!!

IronOCR iOS パッケージ

IronOcr.iOSパッケージは、.NETのクロスプラットフォームプロジェクトを通じてiOSデバイス上でOCR機能を有効にします。 バニラのIronOCRパッケージは必要ありません。

PM > Install-Package IronOcr.iOS

申し訳ありませんが、翻訳するコンテンツのテキストを提供してください。その後、英語から日本語に翻訳いたします。!-- NUGET ライブラリ ダウンロード ディレクティブ タグ :: スタート -->

PDF用C# NuGetライブラリ

でインストール NuGet

Install-Package IronOcr.iOS

申し訳ありませんが、翻訳するコンテンツのテキストを提供してください。その後、英語から日本語に翻訳いたします。!-- NUGETライブラリダウンロード指示タグ :: 終了 -->

.NET MAUIプロジェクトを作成

マルチプラットフォームセクションの下で、.NET MAUI Appを選択して続行します。

.NET MAUIアプリプロジェクトを作成

IronOCR.iOSライブラリを含める

ライブラリはさまざまな方法で追加できます。 おそらく最も簡単なのは、NuGetを使用することです。

  1. Visual Studio内で、「依存関係 > Nuget」を右クリックし、「NuGet パッケージの管理 ...」を選択してください。

  2. 「ブラウズ」タブを選択し、「IronOcr.iOS」を検索してください。

  3. 「IronOcr.iOS」パッケージを選択し、「パッケージを追加」をクリックしてください。

    IronOcr.iOSパッケージをダウンロード

    他のプラットフォームでの問題を防ぐために、csprojファイルを修正してiOSプラットフォームをターゲットにする場合のみパッケージを含めるようにしてください。 そうするためには:

  4. プロジェクトの *.csproj ファイルを右クリックし、「プロジェクト ファイルの編集」を選択します。

  5. 次のとおり、新しい ItemGroup 要素を作成します:
    <ItemGroup Condition="$(TargetFramework.Contains('ios')) == true">
    </ItemGroup>
XML
  1. 「IronOcr.iOS」のPackageReferenceを、先ほど作成したItemGroupの中に移動してください。

    上記の手順により、「IronOCR.iOS」パッケージがAndroidプラットフォームなどで使用されるのを防ぎます。 (そのために、インストールしてください IronOCR.Android 以下の内容を日本語に翻訳してください:

Instead).

「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

"MainPage.xaml.cs"を編集

IronTesseractオブジェクトをインスタンス化することから始めましょう。 次のコードに示すように、クラス内で一度IronTesseractを初期化してください。 メソッドで直接インスタンス化することは効果的ではなく、予期しないエラーを引き起こす可能性があります。 次に、FilePicker.PickAsync メソッドを使用してファイルを選択します。FileResult から、読み取り用ストリームを開きます。 新しい OcrInput オブジェクトを作成し、このオブジェクトを使用して画像を読み込みます。 tesseractインスタンスを使用して画像でOCRを実行し、テキストを返します。 最終的に、結果のテキストをラベルに表示します。

現在の実装は画像ファイルのみに制限されています。 そのパッケージはまだPDF文書と互換性がありません。 これを念頭に置いて、PDFドキュメントに関連するすべての設定はデフォルトで無効化されているべきであり、そうした設定を維持する必要があります。

using IronOcr;

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 IronOcr;

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);
        }
    }
}
Imports IronOcr

Namespace MAUIIronOCRiOSSample

	Partial Public Class MainPage
		Inherits ContentPage

		' Initialize IronTesseract once in a class
		Private ocrTesseract As New IronTesseract()

		Public Sub New()
			InitializeComponent()
			' Apply License key
			IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
		End Sub

		Private Async Sub ReadFileOnImport(ByVal sender As Object, ByVal e As EventArgs)
			Try
				Dim options = New PickOptions With {.PickerTitle = "Please select a file"}

				Dim result = Await FilePicker.PickAsync(options)
				If result IsNot Nothing Then
					Dim stream = Await result.OpenReadAsync()

					' Instantiate OcrInput
					Dim ocrInput As New OcrInput()

					' Load image stream
					ocrInput.LoadImage(stream)

					' Perform OCR
					Dim ocrResult = ocrTesseract.Read(ocrInput)
					OutputText.Text = ocrResult.Text
				End If
			Catch ex As Exception
				' Handle exceptions
				System.Diagnostics.Debug.WriteLine(ex)
			End Try
		End Sub
	End Class
End Namespace
VB   C#

最後に、ビルドターゲットをiOSシミュレータに切り替えてプロジェクトを実行してください。

プロジェクトを実行

これは、プロジェクトを実行してOCRを行う方法を示します。

.NET MAUIアプリプロジェクトを実行する

.NET MAUI アプリプロジェクトをダウンロード

このガイドの完全なコードをダウンロードできます。これは.zipファイルとして提供され、Visual Studioで.NET MAUIアプリプロジェクトとして開くことができます。

プロジェクトをダウンロードするにはこちらをクリックしてください。

AvaloniaでIronOCR.iOSを使用する

AvaloniaでIronOCR.iOSをセットアップすることはMAUIと似ていますが、重要な違いがあります。最新の.NET SDKバージョンに加えて、次も必要です: .NET SDK 8.0.101 IronOcr.iOSを正常に実行するにはインストールが必要です。 その後、上記の設定と同様に、AvaloniaプロジェクトでIronOCR for .NETを使用できます。

AndroidでOCRを実行したい場合は、次の記事をご覧ください:.NET MAUIでAndroidでOCRを実行する方法"