IRONOCRの使用

C#で文字認識を作成する方法

公開済み 2024年4月29日
共有:

イントロダクション

光学文字認識技術 (Optical Character Recognition)(OCR (光学式文字認識))印刷されたテキストや手書きのテキストを機械で読み取れるデジタルフォーマットに変換することができます。ドキュメントがスキャンされると(請求書や領収書など)スキャンされた画像はコンピューターによって画像ファイルとして保存されます。しかし、スキャンされた画像内のテキストは通常のテキストエディタでは編集、検索、またはカウントすることができません。

ただし、OCRは画像を処理し、テキストを抽出し、それをコンピューターが読み取れるテキスト形式に変換できます。 これは、PDFファイルやその他のスキャン画像を含む様々なソースからのテキスト抽出を可能にします。 さらに、OCR機能は単純なテキスト抽出を超えて、主要な画像形式やPDFドキュメントを変換し、検索可能なOCRデータにすることができます。

C#では、開発者は様々なライブラリを利用してOCRの力を活用できます。その中でも、強力なライブラリの一つがIronOCRです。IronOCRからIron Software. このチュートリアルでは、OCRの基本を探り、「IronOCR」をどのように使用するかを示します。IronOCRC#で効率的に文字認識を行う。

C#で文字認識を作成する方法

  1. Visual Studio で新しい C# プロジェクトを作成し、プロジェクトに名前を付けます。

  2. インストールIronOCR.NETライブラリをプロジェクトフォルダーに含めます。

    1. 以下の内容を日本語に翻訳してください。

をご利用くださいIronOCRTesseractを使用して画像からテキストを読み取ります。

  1. 以下の内容を日本語に翻訳してください。

をご利用くださいIronOCR画像内のテキストを読み取るための高度な機能

  1. パフォーマンスチューニングIronOCR読み取り操作。

IronOCRの使い始め方

IronOCR開発されたC#ライブラリIron Softwareは、高度なOCR機能を提供するツールです。 画像、PDF、およびスキャンされた文書からの正確なテキスト抽出を提供します。 コードに入る前に、プロジェクトにIronOCRがインストールされていることを確認してください。

IronOCR の主な特徴は、Iron Softwareから提供されています

改良されたTesseract OCRエンジン

IronOCR広く使用されているTesseract OCRエンジンの精度と速度を向上させ、その能力を高めます。 これは、画像、PDF、さまざまなドキュメント形式を含むさまざまなソースからテキストを抽出するための堅牢なソリューションです。

広範な言語対応

127以上の言語に対応しているIronOCRは、多言語要件を処理するのに長けており、言語の多様性を求めるアプリケーションにとって理想的な選択です。

多用途の出力オプション

抽出されたテキストは、後続の処理パイプラインにシームレスに統合するために、プレーンテキストまたは構造化データとして便利に出力できます。 さらに、IronOCRは画像から直接検索可能なPDFの作成を可能にします。

クロスプラットフォーム適応性

C#、F#、およびVB.NETとの互換性を考慮して設計されたIronOCRは、バージョン8、7、6、Core、Standard、およびFrameworkを含むさまざまな.NET環境でシームレスに動作します。

Tesseract 5 を活用する

IronOCR.NETエコシステム内での最適なパフォーマンスのために、Tesseract 5の力を活用しています。

ゾーンベースのOCR機能

IronOCRを使用すると、ユーザーはドキュメント内の特定の領域を正確に定義し、ターゲットを絞ったOCR処理を実現できます。 この機能は、必要な箇所に処理能力を集中させることで、精度と効率を向上させます。

画像前処理ツール

ライブラリは、スキュー除去やノイズ除去などの画像前処理機能を一式提供します。 これらのツールは、不完全なソース画像を扱う際でも優れた結果を保証し、最終的に全体のOCR体験を向上させます。

次に、画像からテキストを読み取るためにIronOCRを利用するデモアプリケーションを開発します。

前提条件

  1. Visual Studio: インストールされていることを確認してくださいビジュアルスタジオまたはその他のC#開発環境。

  2. NuGet パッケージ マネージャー: プロジェクト内のパッケージを管理するために NuGet をインストールしていることを確認してください。

ステップ1: Visual Studioで新しいC#プロジェクトを作成する

まず、以下のようにVisual Studioを使用して新しいコンソールアプリケーションを作成しましょう。

C#で文字認識を作成する方法: 図1 - Visual Studioで新しいC#プロジェクトを作成する

以下にプロジェクト名と場所を入力してください。

C#で文字認識を作成する方法:図2 - プロジェクト名と保存先を指定してください

プロジェクトに必要な.NETバージョンを選択してください。

C#で文字認識を作成する方法: 図3 - プロジェクトに適した.NETバージョンを選択

新しいプロジェクトを作成するには、「Create」ボタンをクリックしてください。

ステップ2: IronOCRライブラリをインストールし、プロジェクトに統合します。

IronOCRにありNuGet以下に示されるようにパッケージ マネージャー コンソール。 パッケージをインストールするために、提供されたコマンドを使用してください。

C#で文字認識を作成する方法: 図4 – IronOCR NuGet パッケージ マネージャーのダウンロードページ

Visual StudioのNuGetパッケージマネージャーを使用して、IronOCRを検索し、プロジェクトフォルダーにインストールしてください。

C#で文字認識を作成する方法:図5 - NuGetパッケージマネージャーを使用してブラウズタブからIronOCRを検索

インストールが完了すると、アプリケーションは利用可能となりますIronOCR画像からテキストを読み取るために。

ステップ 3:IronOCRのTesseractを利用して、画像からテキストを読み取ります。

IronOCRは、Tesseract 5 OCR機能を提供する唯一の.NETライブラリとして際立っています。 現時点で、あらゆるプログラミング言語において最も高度なTesseract 5ライブラリとしての地位を保持しています。 IronOCRは、Tesseract 5をフレームワーク、スタンダード、コア、Xamarin、Monoなどのさまざまな.NET環境にシームレスに統合し、エコシステム全体で包括的なサポートを保証します。

以下の画像ファイルを入力として考慮してください。 それでは、この画像ファイルのテキストを読む方法を見てみましょう。

C#で文字認識を作成する方法: 図6 - 例の入力

using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
Imports IronOcr
Public Class Program
	Public Shared Sub Main(ByVal args() As String)
		Dim ocrTesseract = New IronTesseract()
	Dim ocrInput As New OcrInput()
	ocrInput.LoadImage("sample1.png")
	Dim ocrResult = ocrTesseract.Read(ocrInput)
	Console.WriteLine(ocrResult.Text)
	End Sub
End Class
VB   C#

コードの説明

  1. 必要な構成でIronTesseractを作成することから始めます。

  2. 次に、サンプル画像をOcrInputオブジェクトに読み込みます。

  3. 最後に、画像のテキストを読み取り、それをコンソールに出力します。

出力

C#で文字認識を作成する方法: 図7 - IronOCRを使用して抽出されたテキスト

ステップ4:IronOCRの高度な機能を利用して画像内のテキストを読み取る

IronTesseract.Configurationオブジェクトは、高度なユーザーにC#/.NET内でTesseract APIへのアクセスを提供し、細かい調整や最適化のための詳細な設定を可能にします。 以下は可能な高度な構成の一部です

言語選択

OCRの言語は、Languageプロパティを使用して指定できます。 例えば、言語を英語に設定するには、次を使用します:

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
VB   C#

ページセグメンテーションモード

PageSegmentationModeは、Tesseractが入力画像をどのようにセグメント化するかを決定します。 オプションには、AutoOsd、SingleBlock、SingleLineなどが含まれます。 例えば:

ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
VB   C#

カスタムTesseract変数

特定の変数を設定することで、Tesseractを微調整することができます。 たとえば、並列化を無効にするには:

ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ("tessedit_parallelize") = False
VB   C#

ホワイトリストとブラックリストの文字

WhiteListCharactersとBlackListCharactersを使用して、Tesseractが認識する文字を制御します。 例えば:

ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë ^"
VB   C#

追加の構成変数

ご自身のニーズに合わせて動作をカスタマイズするために、他のTesseract設定変数を探索してください。 例えば:

ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables ("classify_num_cp_levels") = 3
ocr.Configuration.TesseractVariables ("textord_debug_tabfind") = 0
' ... (more variables)
VB   C#

同じ画像を高度な設定を使ってデコードしてみましょう。

using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // create instance
        {
            Language = OcrLanguage.EnglishBest, // configure best english language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // read bar codes false
                BlackListCharacters = "`ë
^", // black listed characters
                WhiteListCharacters = null, // no white list, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // no custom variable used
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); // create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // load the sample image 
        var ocrResult = ocrTesseract.Read(ocrInput); // read the text from the image
        Console.WriteLine(ocrResult.Text);// output the image
    }
}
using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // create instance
        {
            Language = OcrLanguage.EnglishBest, // configure best english language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // read bar codes false
                BlackListCharacters = "`ë
^", // black listed characters
                WhiteListCharacters = null, // no white list, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // no custom variable used
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); // create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // load the sample image 
        var ocrResult = ocrTesseract.Read(ocrInput); // read the text from the image
        Console.WriteLine(ocrResult.Text);// output the image
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

コードの説明

  1. IronOCR 設定: IronTesseract のインスタンス(メイン IronOCR クラス)ocrTesseractという変数に作成され、割り当てられます。

    構成設定はocrTesseractに適用されます:

    1. 言語:OCRのために指定された言語(この場合、英語).

    2. 設定: さらなるカスタマイズを可能にする TesseractConfiguration オブジェクトです:

    3. ReadBarCodes: バーコードの読み取りを無効にします。

    4. BlackListCharacters: 制限する文字を指定(認識しない文字).

    5. WhiteListCharacters: ホワイトリストが指定されていないため、すべての文字が許可されます。

    6. PageSegmentationMode: ページ分割モードを「AutoOsd」に設定します。

    7. Tesseract変数: カスタム変数は使用されませんでした。
    1. マルチスレッド: マルチスレッドを無効化します。
  1. OCR入力と画像の読み込み: using ブロックは、OcrInput型の使い捨てのocrInputオブジェクトを作成します。 画像ファイル「sample1.png」がocrInputに追加されました。

  2. テキスト抽出: ReadメソッドはocrTesseractに呼び出され、ocrInputを渡します。

  3. 結果はocrResult変数に保存されます。

  4. 出力: 抽出されたテキストは、Console.WriteLine を使用してコンソールに出力されます。(ocrResult.Text).

出力

C#での文字認識の作成方法: 図8 - IronOCRを使用して抽出されたテキスト

ステップ5:IronOCRの読み取り操作のパフォーマンスチューニング。

IronOCR を使用すると、OCRを実行する前に画像を前処理するのに役立つさまざまな画像フィルターにアクセスできます。 これらのフィルターは画像品質を最適化し、視認性を向上させ、ノイズやアーティファクトを低減します。 それらはOCR操作のパフォーマンスを向上させるのに役立ちます。

  1. 回転

    回転フィルターは、指定された度数に従って画像を時計回りに回転することができます。反時計回りに回転するには、負の数値を使用してください。

  2. Deskew(傾き補正):

    Deskewフィルターは画像の傾きを修正し、テキストが直立し直角になるようにします。 これは、Tesseractが適切に方向づけられたスキャンで最も良く機能するため、特にOCRにとって有用です。

  3. スケール:

    スケールフィルターは、OCR入力ページを比例してスケールします。

  4. 二値化

    バイナライズフィルターは、すべてのピクセルを黒または白に変換し、中間色を排除します。 それは、テキストと背景の間のコントラストが非常に低い場合にOCRのパフォーマンスを向上させることができます。

  5. グレースケールにする

    ToGrayScaleフィルターは、すべてのピクセルをグレースケールの色合いに変換します。 OCRの精度を大幅に向上させる可能性は低いですが、速度が向上するかもしれません。

  6. 反転:

    Invertフィルタは色を反転させます—白は黒に、黒は白になります。

  7. ReplaceColor

    置換色フィルターは、特定のしきい値を考慮して、画像内の特定の色を他の色に置き換えます。

  8. コントラスト

    コントラストフィルターは自動的にコントラストを向上させます。これにより、低コントラストのスキャンにおけるOCRの速度と精度が向上することが多いです。

  9. 膨張(ダイレート)と収縮(エロード):

    これらの高度なモルフォロジーフィルターは、画像内のオブジェクトの境界を操作します。

    1. ダイレートはオブジェクトの境界にピクセルを追加します。
    1. エロードはオブジェクトの境界からピクセルを除去します。

    2. シャープン:

    シャープフィルターはぼやけたOCRドキュメントを鮮明にし、アルファチャネルを白に平坦化します。

    1. デノイズ:

    DeNoiseフィルターはデジタルノイズを除去します。ノイズが予想される場合に使用してください。

    1. 背景ノイズを徹底的に除去

    極端なドキュメントの背景ノイズが既知の場合のみ、この重い背景ノイズ除去フィルターを使用する必要があります。 クリーンなドキュメントのOCR精度を低下させる可能性があり、CPU負荷が高いです。

    1. EnhanceResolution: 解像度を向上させる

    解像度を高めるフィルターは、低品質の画像の解像度を向上させます。 自動解像度処理のため、頻繁に必要とされるわけではありません。

    以下は、C#でIronOCRを使用してフィルターを適用する方法の例です:

var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Dim ocr = New IronTesseract()
Dim input = New OcrInput()
input.LoadImage("sample.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

一般的なOCRアプリケーション

  1. ドキュメントのデジタル化: OCRは、請求書、領収書、フォーム、契約書などのスキャンされた紙のドキュメントをデジタル形式に変換するために広く使用されています。 このデジタル化プロセスは、文書の保管、検索、および管理を合理化し、紙の煩雑さを軽減し、効率を向上させます。

  2. データ抽出: OCRはスキャンされた文書、画像、およびPDFからテキストやデータを抽出できるようにします。 この抽出されたデータは、自動データ入力、コンテンツ分析、インデックス作成、データベースやビジネスシステムへの統合に使用することができます。

  3. 画像の文字認識: OCR技術は、印刷されたテキストや手書きのテキスト画像から文字を抽出し、インデックス付けや検索目的で利用できます。 この機能は、拡張現実、画像ベースの検索エンジン、および翻訳サービスを含むさまざまなアプリケーションで利用されています。

  4. 自動ナンバープレート認識(自動ナンバープレート認識 (自動ナンバープレート認識 (ALPR))): ALPRシステムは、交通監視、駐車管理、料金徴収、および法執行アプリケーションに設置されたカメラによって撮影された画像やビデオストリームからナンバープレート番号を読み取るためにOCRを利用します。

  5. アクセシビリティソリューション: OCRは、視覚障害者向けのアクセシブルなコンテンツを作成する上で重要な役割を果たします。 画像や文書からテキストを音声や点字に変換することで、OCRは障害を持つ人々が情報にアクセスできるように支援します。

  6. 身分証明: OCR技術は、パスポート、運転免許証、身分証明書などの身分証明書をスキャンして処理する際に、身分証明プロセスで使用されます。 それは書類の真正性を確認し、身分証明のために関連情報を抽出するのに役立ちます。

  7. 銀行と金融: OCRは、金融取引において小切手の読み取り、請求書の処理、既存のPDF文書の変換、財務諸表からのデータ抽出、文書ベースのワークフローの自動化などの業務に使用され、金融業務の正確性および効率性を向上させます。

  8. 医療記録管理: ヘルスケア分野では、OCRは手書きまたは印刷された医療記録を電子フォーマットに変換するのを助け、電子健康記録の管理を支援します。(電子健康記録 (電子健康記録 (EHR)))管理、データ分析、意思決定プロセス。

  9. 自動翻訳: OCR技術は、翻訳ツールや語学学習アプリに統合され、印刷されたテキストをある言語から別の言語に変換します。 ユーザーはデバイスを使用してテキストをキャプチャし、OCRを使用してリアルタイムで希望する言語に翻訳することができます。

    1. アーカイブおよび歴史的文書の保存: OCRはアーカイブ資料や歴史的文書のデジタル化に利用され、将来的なアクセス、研究、分析のためにデジタル形式で保存されると同時に、貴重な文化遺産の保存も確保されます。

ライセンス要件

IronOCR. キーをメールIDに送付するために、以下の詳細を提供してください

C#で文字認識を作成する方法:図9 - IronPDF試用ライセンスページ

キーを購入または無料トライアルで取得した後、以下の手順に従ってキーを使用してください。

ライセンスキーの設定: コードを使用してIronOCRのライセンスキーを設定します。 アプリケーションのスタートアップに次の行を追加します(IronOCRを使用する前に):

IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
VB   C#

グローバルアプリケーションキー(Web.Config または App.Config)**: アプリケーション全体にキーを適用するには、設定ファイルを使用してください。(Web.Config または App.Config). 以下のキーをappSettingsに追加してください:

<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<configuration> <!-- Other settings -- > <appSettings> <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/> </appSettings> </configuration>
VB   C#

.NET Coreのappsettings.jsonの使用: .NET Coreアプリケーションの場合、プロジェクトのルートディレクトリにappsettings.jsonファイルを作成します。 "IronOcr.LicenseKey"キーをライセンス値に置き換えてください。

{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
If True Then
	"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
End If
VB   C#

ライセンスキーのテスト: キーが正しくインストールされているか確認するために、テストしてください。

bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
Dim result As Boolean = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01")
VB   C#

結論

結論として、IronOCR$749から開始されます。IronOCRの力を受け入れましょう。IronOCRあなたのC#プロジェクトにおいて、可能性の世界を解き放ちます。

< 以前
C#で車両登録のOCRを実行する方法
次へ >
C#でOCRを使用して身分証明書を読み取る方法