.NET MAUI OCRを使用したIronOCR

チャクニット・ビン
チャクニット・ビン
2023年2月1日
更新済み 2024年12月11日
共有:
This article was translated from English: Does it need improvement?
Translated
View the article in English

イントロダクション

マイクロソフトは、.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プロセッサアプリを作成する方法を学びます。

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アプリを作成するには、いくつかの前提条件があります。

  1. Visual Studio 2022(最新バージョン)

  2. .NET 6 または 7

  3. Visual StudioにインストールされたMAUIパッケージ

  4. Visual Studioで実行されている.NET MAUIプロジェクト

IronOCRをインストールする

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

Install-Package IronOcr

フロントエンドデザイン

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

.NET MAUI OCRチュートリアル IronOCRの使用 - 図1: MainPage.xaml

MainPage.xaml

OCRのために画像やPDFドキュメントを選択するためのボタンを指定します。 ボタンのclickedプロパティはIOCR関数を実行するように設定されています。 次のセクションでこの関数を定義します。

<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" />
XML

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

<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

さて、OCR機能のコードを記述する時が来ました。

IronOCRを使用したOCRのコード

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

.NET MAUI OCR チュートリアル Using IronOCR - 図2: 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を選択するよう促されます。

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

OCR出力

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

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

OCR画像

結果によると、IronOCRはパターンを伴う複雑な画像を処理する際に素晴らしい仕事を行い、正確な結果を示しています。 IronOCRは、事前にトレーニングされたモデルを使用して文字の赤い点を検出し、必要な正確な文字を選択することができます。

デバッグを付加した状態でリリースモードでプロジェクトを実行することは、問題を引き起こす可能性があります。 そのような場合、以下のリンクで示されているように、プロジェクトをアンパッケージされた.NET MAUIアプリとして公開することで、アプリが正しく動作するようにすることができます。

結論

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

IronOCRは開発目的で無料です。 非常に低価格で、たった$liteLicenseから購入できます。 価格プランはこちらをご覧ください。

チャクニット・ビン
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeで作業しています。彼はC#と.NETに深い専門知識を持ち、ソフトウェアの改善と顧客サポートを支援しています。ユーザーとの対話から得た彼の洞察は、より良い製品、文書、および全体的な体験に貢献しています。