.NET MAUI OCRを使用したIronOCR
イントロダクション
マイクロソフトは、.NET Frameworkを使用してクロスプラットフォームアプリケーションを構築するためのフレームワークである.NET MAUI (マルチプラットフォーム アプリ UI) をリリースしました。 コードベースを共通にして、Android、iOS、Windowsで動作するコードを書けるようになり、時間、リソース、労力を節約できます。 .NET MAUIはオープンソースです。 .NET MAUI プロジェクトのソースコードは、[GitHub](https://github.com/dotnet/maui" target="_blank" rel="nofollow noreferrer noopener)で例とともに入手できます。
このハウツーガイドでは、IronOCRライブラリを使用した例を通じて、.NET MAUIでOCRプロセッサアプリを作成する方法を学びます。
.NET MauiでOCRを実行する方法
IronOCR: .NET OCRライブラリ
IronOCRは、開発者がプロジェクトに簡単に光学文字認識(OCR)の機能を統合できる.NET OCR NuGetライブラリです。 IronOCRを使用すると、PDFドキュメントをスキャンして、データ品質を損なうことなく検索可能および編集可能なテキスト/データに変換できます。 これにより、ユーザーはPDFドキュメントから必要な情報を簡単に見つけたり、必要に応じて変更や修正を加えたりすることができます。
IronOCRは、あらゆるプラットフォームで利用可能なTesseractバイナリの中で最も高度なビルドです。 それは、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](https://www.youtube.com/watch?v=2QTEb6x8NJ4" target="_blank" rel="nofollow noopener noreferrer)ビデオをご覧ください。
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ライブラリをインストールしてください。
Install-Package IronOcr
フロントエンドデザイン
このセクションでは、アプリケーションのフロントエンドを設計します。 MainPage.xaml ファイルを開きます。

MainPage.xaml
OCRのために画像やPDFドキュメントを選択するためのボタンを指定します。 ボタンのclicked
プロパティはIOCR
関数を実行するように設定されています。 次のセクションでこの関数を定義します。
<Button
x:Name="OCR"
Text="Click to OCR"
Clicked="IOCR"
HorizontalOptions="Center" />
ここでは、OCRImage
という名前のImage
ボックスを作成します。 この画像ボックスは、選択したファイルを表示するのに役立ちます。
<Image
x:Name="OCRImage"
SemanticProperties.Description="Selected Image"
HeightRequest="300"
HorizontalOptions="Center" />
次に、Editor
コントロールを作成します。 それは画像またはPDFドキュメントから抽出されたテキストを表示するために使用されます。
<Editor
x:Name="outputText"
HorizontalOptions="Center"
WidthRequest="600"
HeightRequest="300"
/>
以下は完成した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>
さて、OCR機能のコードを記述する時が来ました。
IronOCRを使用したOCRのコード
「MainPage.xaml.cs」クラスファイルを開き、以下の関数を記述します。

MainPage.xaml.cs
private async void IOCR(object sender, EventArgs e)
{
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
OCRImage.Source = path;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
}
private async void IOCR(object sender, EventArgs e)
{
var images = await FilePicker.Default.PickAsync(new PickOptions
{
PickerTitle = "Pick image",
FileTypes = FilePickerFileType.Images
});
var path = images.FullPath.ToString();
OCRImage.Source = path;
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddImage(path);
OcrResult result = ocr.Read(input);
string text = result.Text;
outputText.Text = text;
}
}
上記のコードを分解してみましょう。
以下のコードは、C#のFilePicker
オブジェクトを使用して画像を選択するのに役立ちます。 FilePicker
タイトルと 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();
Image
ボックスコントロールは、上記の path
変数で指定された画像を使用するように次に設定されます。
OCRImage.Source = path;
OCRImage.Source = path;
その後、IronTesseract
クラスの新しいインスタンスを作成して、IronOCRを利用し始めます。 選択した画像からテキストを抽出し、その内容をエディタコントロールに表示するために使用します。
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;
}
出力
プロジェクトを実行すると、以下のUIが表示されます。ボタンをクリックすると、任意の場所から画像/PDFを選択するよう促されます。

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

OCR画像
結果によると、IronOCRはパターンを伴う複雑な画像を処理する際に素晴らしい仕事を行い、正確な結果を示しています。 IronOCRは、事前にトレーニングされたモデルを使用して文字の赤い点を検出し、必要な正確な文字を選択することができます。
デバッグを付加した状態でリリースモードでプロジェクトを実行することは、問題を引き起こす可能性があります。 そのような場合、以下のリンクで示されているように、プロジェクトをアンパッケージされた.NET MAUIアプリとして公開することで、アプリが正しく動作するようにすることができます。
結論
詳細については、IronOCRを使用して画像からテキストを読み取る方法に関する追加情報を提供するこのチュートリアルを参照してください。
IronOCRは開発目的で無料です。 非常に低価格で、たった$liteLicenseから購入できます。 価格プランはこちらをご覧ください。