IronOCRを使用した.NET MAUI OCR

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

はじめに

Microsoft は、.NET Framework を使用してクロスプラットフォーム アプリケーションを構築するためのフレームワークである .NET MAUI (Multi-platform App UI) をリリースしました。 同じコードベースを使用して Android、iOS、Windows で実行されるコードを記述できるため、時間、リソース、労力を節約できます。 .NET MAUI はオープン ソースです。 .NET MAUI プロジェクトのソース コードとサンプルはGitHubで入手できます。

このハウツー ガイドでは、IronOCR ライブラリを使用して .NET MAUI 上で OCR プロセッサ アプリを作成する方法を例とともに学習します。

IronOCR: .NET OCR ライブラリ

IronOCR は、開発者が光学式文字認識 (OCR) 機能をプロジェクトに簡単に統合できるようにする .NET OCR NuGet ライブラリです。 IronOCR を使用すると、データ品質を損なうことなく、PDF ドキュメントをスキャンして、検索および編集可能なテキスト/データに変換できます。 これにより、ユーザーは PDF ドキュメントから必要な情報を簡単に見つけて、必要に応じて変更や修正を行うことができます。

IronOCR は、あらゆるプラットフォームで利用可能な Tesseract バイナリの最も高度なビルドです。 速度と精度が向上し、1 回の簡単なインストール/ダウンロードで Tesseract のすべてのバージョン (Tesseract 3 から Tesseract 5 まで) をサポートするネイティブ DLL/API が提供されます。

IronOCR の言語サポートは広範囲にわたり、ユーザーは 125 の国際言語を利用できます。 ツール/DLL では、英語がデフォルトでインストールされます。 ただし、NuGet 経由でインストールするか、DLL をダウンロードすることで、簡単に言語を追加できます。

Tesseractとの比較

IronOCR は C# 開発者向けに特別に設計されており、.NET アプリケーションとシームレスに統合されます。 対照的に、Tesseract は汎用 OCR ライブラリであり、開発者は C# で使用するために独自のラッパーを作成する必要があります。 さらに、IronOCR は革新的な人工知能アルゴリズムにより、他のライブラリに比べて優れた精度と速度を提供します。

IronOCR には包括的なドキュメントとテクニカル サポートが付属しており、初心者の開発者でもすぐに使い始めることができます。

IronOCR は Tesseract よりもはるかに正確です。 実際、その精度は 99% を超えていますが、Tesseract の精度は 70.2% ~ 92.9% 程度に過ぎません。 IronOCR と Tesseract の比較に関する詳細情報とサポートについては、このYouTube ビデオをご覧ください。

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プロジェクト

Google OCRのインストール

最初のステップは、NuGet パッケージ マネージャー コンソールを使用して IronOCR ライブラリをインストールすることです。 ソリューション エクスプローラーを右クリックして NuGet パッケージ マネージャー コンソールを開き、次のコマンドを実行して IronOCR ライブラリをインストールします。

Install-Package IronOcr

フロントエンドデザイン

このセクションでは、アプリケーションのフロントエンドを設計します。 MainPage.xamlファイルを開きます。

.NET MAUI OCR Tutorial Using IronOCR - Figure 1: MainPage.xaml

MainPage.xaml

OCR の対象となる画像または PDF ドキュメントを選択するのに役立つボタンを指定します。 ボタンの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

ここでは、 OCRImageという名前のImage要素を作成します。 この画像ボックスには選択したファイルが表示されます。

<Image
    x:Name="OCRImage"
    SemanticProperties.Description="Selected Image"
    HeightRequest="300"
    HorizontalOptions="Center" />
<Image
    x:Name="OCRImage"
    SemanticProperties.Description="Selected Image"
    HeightRequest="300"
    HorizontalOptions="Center" />
XML

次に、 Editorコントロールを作成します。 画像または PDF ドキュメントから抽出されたテキストを表示するために使用されます。

<Editor
    x:Name="outputText"
    HorizontalOptions="Center"
    WidthRequest="600"
    HeightRequest="300" />
<Editor
    x:Name="outputText"
    HorizontalOptions="Center"
    WidthRequest="600"
    HeightRequest="300" />
XML

完成した XAML ユーザー インターフェイス マークアップを次に示します。

<?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>
<?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>
XML

ここで、OCR 機能のコードを記述します。

IronOCRを使用したOCR用コード

MainPage.xaml.csクラス ファイルを開き、次の関数を記述します。

.NET MAUI OCR Tutorial Using IronOCR - Figure 2: MainPage.xaml.cs

MainPage.xaml.cs

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; 
    }
}
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; 
    }
}
Private Async Sub IOCR(ByVal sender As Object, ByVal 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
$vbLabelText   $csharpLabel

上記のコードを分解してみましょう。

  • このコードはFilePickerを使用して、ユーザーがデバイスから画像ファイルを選択できるようにしています。ファイルピッカーは画像のみを許可するように設定されています。
var images = await FilePicker.Default.PickAsync(new PickOptions
{
    PickerTitle = "Pick image",
    FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
var images = await FilePicker.Default.PickAsync(new PickOptions
{
    PickerTitle = "Pick image",
    FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
Dim images = Await FilePicker.Default.PickAsync(New PickOptions With {
	.PickerTitle = "Pick image",
	.FileTypes = FilePickerFileType.Images
})
Dim path = images.FullPath.ToString()
$vbLabelText   $csharpLabel
  • Imageコントロールは、選択した画像をそのファイル パスを使用して表示するように設定されています。
OCRImage.Source = path;
OCRImage.Source = path;
OCRImage.Source = path
$vbLabelText   $csharpLabel
  • OCR を実行するためにIronTesseractオブジェクトが作成されます。 選択した画像がOcrInputオブジェクトに追加されます。 Readメソッドが呼び出され、画像からテキストが抽出され、 Editorコントロールに表示されます。
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    input.AddImage(path);
    OcrResult result = ocr.Read(input);
    string text = result.Text;
    outputText.Text = text; 
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    input.AddImage(path);
    OcrResult result = ocr.Read(input);
    string text = result.Text;
    outputText.Text = text; 
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
	input.AddImage(path)
	Dim result As OcrResult = ocr.Read(input)
	Dim text As String = result.Text
	outputText.Text = text
End Using
$vbLabelText   $csharpLabel

出力

プロジェクトを実行すると、以下のUIが表示されます。ボタンをクリックすると、任意の場所から画像/PDFを選択するように求められます。

.NET MAUI OCR Tutorial Using IronOCR - Figure 3: OCR出力

OCR出力

画像を選択すると、IronOCR は画像を処理し、認識された単語をエディター コントロールに表示します。 エディター コントロールからテキストをコピーできます。

.NET MAUI OCR Tutorial Using IronOCR - Figure 4: OCR画像

OCR画像

結果から、IronOCR はパターンを含む複雑な画像の処理に優れたパフォーマンスを発揮し、正確な結果を示していることがわかります。 IronOCR は、事前にトレーニングされたモデルを使用して、細かい部分を検出し、必要な文字を正確に選択することができます。

<{i:(デバッグを接続したリリース モードでプロジェクトを実行すると、問題が発生する可能性があります。 このような場合は、以下のリンクに示すように、プロジェクトをパッケージ化されていない .NET MAUI アプリとして公開し、アプリが適切に動作することを確認できます。)}>

結論

さらに詳しく知りたい場合は、IronOCR を使用して画像からテキストを読み取る方法についての追加情報を提供するこのチュートリアルを参照してください。

IronOCR は開発目的では無料です。 わずか$799から非常に低価格でご購入いただけます。 料金プランについてはこちらをご覧ください。

よくある質問

.NET MAUIはアプリ開発において何に使用されますか?

.NET MAUI(マルチプラットフォームアプリUI)は、単一のコードベースでクロスプラットフォームアプリケーションを構築するために使用され、開発者がAndroid、iOS、およびWindowsプラットフォームをターゲットにできるようにします。

.NET MAUIアプリでOCRをどのように実行できますか?

開発者は、.NET OCRライブラリであるIronOCRを統合することで、.NET MAUIアプリでOCRを実行できます。IronOCRは画像やPDFを検索可能で編集可能なテキストに変換します。

.NET MAUIプロジェクトにおいてIronOCRをセットアップする手順は何ですか?

IronOCRを.NET MAUIプロジェクトにセットアップするには、NuGetを介してIronOCRライブラリをインストールし、Visual Studioでフロントエンドを構成し、IronTesseractオブジェクトを使用してOCRを実行するために必要なC#コードを実装します。

テキスト処理時のIronOCRの精度はどれくらいですか?

IronOCRはテキスト処理時に99%以上の高い精度を提供し、その進化したAIアルゴリズムにより他のOCRソリューションのようなTesseractよりも信頼性があります。

IronOCRは複数の言語に対応できますか?

はい、IronOCRは125の国際言語をサポートしており、英語はデフォルトでインストールされています。その他の言語はNuGetまたは特定の言語DLLをダウンロードすることで追加できます。

.NET MAUIアプリでOCRのために画像ファイルをどのように選択しますか?

.NET MAUIアプリでは、FilePickerクラスを使用してOCR用の画像ファイルを選択できます。これにより、ユーザーはデバイスから画像を選択してテキストを抽出できます。

OCR結果を表示する際のEditor コントロールの役割は何ですか?

.NET MAUIアプリのEditor コントロールは、IronOCRによって処理された画像から抽出されたテキストを表示するために使用され、ユーザーがOCR結果を確認できるインターフェースを提供します。

開発用にIronOCRを使用する際に費用はかかりますか?

IronOCRは開発目的には無料で使用できます。ただし、商用利用にはライセンスが必要で、競争力のある価格で入手可能です。

IronOCRがC#開発者に選ばれる理由は何ですか?

IronOCRは、そのシームレスな.NETアプリケーションとの統合、高精度、速度、および複数言語のサポートにより、多くの他のOCRライブラリよりも優れているため、C#開発者にとって優れた選択肢です。

開発者は自分の.NET MAUI OCRアプリの機能をどのように強化できますか?

開発者は、IronOCRが提供する追加リソースを探求し、その包括的なドキュメントとサポートを活用して高度な機能を実装することで、.NET MAUI OCRアプリを強化できます。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

レビュー済み
Jeff Fritz
Jeffrey T. Fritz
プリンシパルプログラムマネージャー - .NETコミュニティチーム
Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。
準備はできましたか?
Nuget ダウンロード 5,167,857 | Version: 2025.11 リリース