C#でOCRを使用した文字認識の作成方法
光学文字認識 (OCR) の技術により、テキストを機械が読み取れるデジタル形式に変換できます。 請求書や領収書などの書類をスキャンすると、コンピュータに画像ファイルとして保存されます。ただし、スキャンした画像内のテキストは、通常のテキストエディタでは編集、検索、カウントできません。
OCR は、画像を処理してテキストを抽出し、コンピューターで読み取れるテキスト形式に変換します。 これにより、PDF ファイルやその他のスキャンされた画像など、さまざまなソースからテキストを抽出できるようになります。 さらに、OCR 機能は単純なテキスト抽出にとどまらず、主要な画像形式や PDF ドキュメントも対象とし、検索可能な OCR データに変換します。
C# では、開発者はさまざまなライブラリを通じて OCR のパワーを活用できます。その 1 つがIron Softwareの強力なライブラリIronOCRです。 このチュートリアルでは、OCR の基本を説明し、 IronOCRを使用して C# で効率的に文字認識を実行する方法を説明します。
C#で文字認識を作成する方法
IronOCRを使い始める
Iron Softwareが開発した C# ライブラリであるIronOCR は、高度な OCR 機能を提供します。 画像、PDF、スキャンされたドキュメントから正確なテキスト抽出を提供します。 コードに進む前に、プロジェクトに IronOCR がインストールされていることを確認してください。
Iron SoftwareのIronOCRの主な機能
改良されたTesseract OCRエンジン
IronOCR は、精度と速度の両方を強化することで、広く使用されている Tesseract OCR エンジンの機能を向上させます。 これは、画像、PDF、さまざまなドキュメント形式など、さまざまなソースからテキストを抽出するための強力なソリューションとして機能します。
幅広い言語に対応
IronOCR は 125 以上の言語をサポートしており、多言語要件の処理に優れているため、言語の多様性が要求されるアプリケーションに最適です。
多彩な出力オプション
抽出されたテキストは、プレーンテキストまたは構造化データとして簡単に出力できるため、後続の処理パイプラインにシームレスに統合できます。 さらに、IronOCR を使用すると、画像入力から直接検索可能な PDF を作成できます。
クロスプラットフォーム適応性
IronOCR は C#、F#、VB.NET との互換性を考慮して設計されており、バージョン 8、7、6、Core、Standard、Framework など、さまざまな .NET 環境でシームレスに動作します。
Tesseract 5を活用する
IronOCR は、.NET エコシステム内で最適なパフォーマンスが得られるように細かく調整された Tesseract 5 のパワーを活用します。
ゾーンベースのOCR機能
IronOCR を使用すると、ユーザーはドキュメント内の特定のゾーンを正確に定義し、ターゲットを絞った OCR 処理が可能になります。 この機能により、最も必要な場所に処理能力を集中させることで、精度と効率が向上します。
画像前処理ツール
このライブラリは、歪み補正やノイズ低減などの画像前処理機能スイートを提供します。 これらのツールは、不完全なソース イメージを処理する場合でも優れた結果を保証し、最終的には全体的な OCR エクスペリエンスを向上させます。
ここでは、IronOCR を利用して画像からテキストを読み取るデモ アプリケーションを開発します。
前提条件
- Visual Studio: Visual Studioまたはその他の C# 開発環境がインストールされていることを確認します。
- NuGet パッケージ マネージャー:プロジェクト内のパッケージを管理するには、NuGet が存在していることを確認します。
ステップ1: Visual Studioで新しいC#プロジェクトを作成する
まず、以下に示すように Visual Studio を使用して新しいコンソール アプリケーションを作成します。
C#で文字認識を作成する方法: 図1 - Visual Studioで新しいC#プロジェクトを作成する
以下にプロジェクト名と場所を入力してください。
C#で文字認識を作成する方法: 図2 - プロジェクト名と保存場所を指定します
プロジェクトに必要な .NET バージョンを選択します。
C#で文字認識を作成する方法: 図3 - プロジェクトに適切な.NETバージョンを選択する
"作成"ボタンをクリックして新しいプロジェクトを作成します。
ステップ 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 を Framework、Standard、Core、Xamarin、Mono などのさまざまな .NET 環境にシームレスに統合し、エコシステム全体にわたる包括的なサポートを保証します。
以下の画像ファイルを入力として考えます。 ここで、この画像ファイル内のテキストを読み取る方法を見てみましょう。
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コードの説明
- IronTesseract インスタンス:まず、OCR 操作を実行するための IronTesseract のインスタンスを作成します。 2.画像の読み込み:サンプル画像を OcrInput オブジェクトに読み込みます。 3.テキストの読み取り:画像内のテキストが読み取られ、結果がコンソールに出力されます。
出力
ステップ4: IronOCRの高度な機能を活用して画像内のテキストを読み取る
IronTesseract.Configuration オブジェクトは、上級ユーザーに C#/.NET 内の基盤となる Tesseract API へのアクセスを許可し、微調整と最適化のための詳細なセットアップ構成を可能にします。 以下に、実行可能な高度な構成の一部を示します。
言語の選択
Language プロパティを使用して、OCR の言語を指定できます。 たとえば、言語を英語に設定するには、次のようにします。
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ページ分割モード
PageSegmentationMode は、Tesseract が入力画像をどのようにセグメント化するかを決定します。 オプションには、AutoOsd、SingleBlock、SingleLine などがあります。 例えば:
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsdカスタム Tesseract 変数
特定の変数を設定することで、Tesseract を微調整できます。 たとえば、並列化を無効にするには:
ocr.Configuration.TesseractVariables["tessedit_parallelize"] = false;ocr.Configuration.TesseractVariables["tessedit_parallelize"] = false;ocr.Configuration.TesseractVariables("tessedit_parallelize") = False文字のホワイトリストとブラックリスト
WhiteListCharacters と BlackListCharacters を使用して、Tesseract が認識する文字を制御します。 例えば:
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë|^";ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë|^";ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë|^"追加の設定変数
ニーズに応じて動作をカスタマイズするには、他の 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)では、高度な設定を使って同じ画像をデコードしてみましょう。
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, // Disable reading barcodes
BlackListCharacters = "`ë|^", // Blacklisted characters
WhiteListCharacters = null, // No whitelist, allow all
PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
TesseractVariables = null, // No custom variables 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 text
}
}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, // Disable reading barcodes
BlackListCharacters = "`ë|^", // Blacklisted characters
WhiteListCharacters = null, // No whitelist, allow all
PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
TesseractVariables = null, // No custom variables 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 text
}
}Imports IronOcr
Public Class Program
Public Shared Sub Main()
Console.WriteLine("Decoding using advanced features")
Dim ocrTesseract = New IronTesseract() With {
.Language = OcrLanguage.EnglishBest,
.Configuration = New TesseractConfiguration() With {
.ReadBarCodes = False,
.BlackListCharacters = "`ë|^",
.WhiteListCharacters = Nothing,
.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
.TesseractVariables = Nothing
},
.MultiThreaded = False
}
Dim ocrInput As New OcrInput() ' Create a disposible ocr input object
ocrInput.AddImage("sample1.png") ' Load the sample image
Dim ocrResult = ocrTesseract.Read(ocrInput) ' Read the text from the image
Console.WriteLine(ocrResult.Text) ' Output the text
End Sub
End Classコードの説明
IronOCR 構成: IronTesseract (メインの IronOCR クラス) のインスタンスが作成され、変数
ocrTesseractに割り当てられます。ocrTesseractには以下の構成設定が適用されます。-言語: OCR の言語を指定します (この場合は英語)。 -構成:さらにカスタマイズできる TesseractConfiguration オブジェクト:
ReadBarCodes: バーコードの読み取りを無効にします。BlackListCharacters: ブラックリストに登録する文字 (認識しない文字) を指定します。WhiteListCharacters: ホワイトリストが指定されておらず、すべての文字が許可されます。PageSegmentationMode: ページ分割モードを"AutoOsd"に設定します。TesseractVariables: カスタム変数は使用されませんでした。MultiThreaded: マルチスレッドを無効にします。
- OCR 入力と画像の読み込み:
usingブロックは、OcrInput 型の使い捨てのocrInputオブジェクトを作成します。 画像ファイル"sample1.png"がocrInputに追加されます。 3.テキスト抽出:ocrTesseractReadメソッドが呼び出され、ocrInputが渡されます。 結果はocrResult変数に保存されます。 4.出力:抽出されたテキストは、Console.WriteLine(ocrResult.Text)を使用してコンソールに出力されます。
出力
ステップ 5: IronOCR読み取り操作のパフォーマンス チューニング。
IronOCRを使用する場合、OCR を実行する前に画像を前処理するのに役立つさまざまな画像フィルターにアクセスできます。 これらのフィルターは、画像の品質を最適化し、視認性を高め、ノイズやアーティファクトを削減します。 これらは、OCR 操作のパフォーマンスを向上させるのに役立ちます。
1.回転:
回転フィルターを使用すると、画像を時計回りに指定した角度だけ回転させることができます。反時計回りに回転させるには、負の数を使用します。
2.デスク:
デスキュー フィルターは画像の傾きを修正し、テキストが垂直になるようにします。 Tesseract は適切な方向のスキャンで最高のパフォーマンスを発揮するため、これは OCR に特に役立ちます。
Scale:
スケール フィルターは、OCR 入力ページを比例的に拡大縮小します。
2値化:
2 値化フィルターは、すべてのピクセルを中間のない黒または白に変換します。 テキストと背景のコントラストが非常に低い場合に、OCR のパフォーマンスを向上させることができます。
5.グレースケール化:
ToGrayScale フィルターは、すべてのピクセルをグレースケールのシェードに変換します。 OCR の精度が大幅に向上する可能性は低いですが、速度は向上する可能性があります。
6.反転:
反転フィルターは色を反転します。白は黒になり、黒は白になります。
7.色の置き換え:
ReplaceColor フィルターは、特定のしきい値を考慮して、画像内の特定の色を別の色に置き換えます。
8.コントラスト:
コントラストフィルターは自動的にコントラストを高めます。これにより、コントラストの低いスキャンでもOCRの速度と精度が向上することがよくあります。
9.膨張と侵食:
これらの高度な形態学フィルターは、画像内のオブジェクトの境界を操作します。
- Dilate はオブジェクトの境界にピクセルを追加します。
- 侵食はオブジェクトの境界からピクセルを削除します。
10.研ぐ:
シャープニング フィルターは、ぼやけた OCR ドキュメントをシャープにし、アルファ チャネルを白に平坦化します。11.ノイズ除去:
DeNoiseフィルターはデジタルノイズを除去します。ノイズが予想される場合に使用してください。12.ディープクリーンバックグラウンドノイズ:
この強力なバックグラウンド ノイズ除去フィルターは、ドキュメントのバックグラウンド ノイズが非常に大きいことがわかっている場合にのみ使用してください。 クリーンなドキュメントの OCR 精度が低下する可能性があり、CPU に負荷がかかります。13.解像度の向上:
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)一般的なOCRアプリケーション
1.文書のデジタル化: OCR は、請求書、領収書、フォーム、契約書などのスキャンされた紙の文書をデジタル形式に変換するために広く使用されています。 このデジタル化プロセスにより、文書の保管、検索、管理が合理化され、紙の乱雑さが軽減され、効率が向上します。 2.データ抽出: OCR を使用すると、スキャンされたドキュメント、画像、PDF からテキストとデータを抽出できます。 抽出されたデータは、自動データ入力、コンテンツ分析、インデックス作成、データベースやビジネス システムへの統合に使用できます。 3.画像内のテキスト認識: OCR テクノロジーにより、印刷された文書や画像からテキストを抽出し、インデックス作成や検索を行うことができます。 この機能は、拡張現実、画像ベースの検索エンジン、翻訳サービスなど、さまざまなアプリケーションで活用されています。 4.自動ナンバープレート認識 (ALPR): ALPR システムは、交通監視、駐車管理、料金徴収、法執行アプリケーションに設置されたカメラで撮影された画像またはビデオ ストリームから OCR を使用してナンバー プレートの番号を読み取ります。 5.アクセシビリティ ソリューション: OCR は、視覚障害のある人が利用できるコンテンツを作成する上で重要な役割を果たします。 OCR は、画像や文書のテキストを音声や点字に変換することで、障害のある人が情報にアクセスできるようにします。 6.本人確認: OCR テクノロジは、パスポート、運転免許証、ID などの身分証明書のスキャンや処理などの本人確認プロセスで使用されます。 文書の真正性を検証し、本人確認の目的で関連情報を抽出するのに役立ちます。 7.銀行および金融: OCR は、銀行および金融において、小切手の読み取り、請求書の処理、既存の PDF 文書の変換、財務諸表からのデータの抽出、文書ベースのワークフローの自動化などのタスクに使用され、財務業務の精度と効率性を高めます。 8.自動翻訳: OCR テクノロジーは翻訳ツールや言語学習アプリに統合されており、印刷されたテキストをある言語から別の言語に変換します。 ユーザーはデバイスでテキストをキャプチャし、OCR によってそれを希望の言語にリアルタイムで翻訳することができます。 9.アーカイブおよび歴史文書の保存: 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"グローバル アプリケーション キー (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>.NET Core appsettings.json の使用: .NET Core アプリケーションの場合は、プロジェクトのルート ディレクトリにappsettings.jsonファイルを作成します。 "IronOcr.LicenseKey"キーをライセンス値に置き換えます。
{
"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}ライセンス キーのテスト: キーが正しくインストールされているかどうかをテストして確認します。
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")結論
結論として、 IronOCR は、 $799から始まる OCR のための堅牢なソリューションを提供します。 IronOCRで OCR のパワーを活用し、C# プロジェクトの可能性の世界を広げましょう。
よくある質問
C#で文字認識を行うにはどうすればいいですか?
C#で文字認識を行うには、IronOCRを使用できます。まずVisual Studioで新しいC#プロジェクトを作成し、次にNuGetパッケージマネージャーを通じてIronOCR .NETライブラリをインストールします。IronOCRのクラスとメソッドを使用して、画像、PDF、またはスキャンされたドキュメントからテキストを抽出します。
IronOCRを使用してテキスト抽出を行う利点は何ですか?
IronOCRは、Tesseract OCRエンジンの精度と速度を向上させることでテキスト抽出を強化します。125以上の言語をサポートし、ゾーンベースのOCR機能を提供し、OCR結果を最適化するための画像前処理ツールを提供します。
IronOCRを使用してOCR精度を最適化するにはどうすればよいですか?
IronOCRでOCR精度を最適化するには、回転、傾き補正、コントラスト調整などの画像前処理ツールを使用してください。また、言語選択、ページ分割、文字のホワイトリストまたはブラックリストで微調整が可能です。
OCR技術の一般的な用途は何ですか?
OCR技術は、文書のデジタル化、データ抽出、画像内のテキスト認識、自動ナンバープレート認識、アクセシビリティソリューションなどで一般的に使用されます。また、銀行、身元確認、アーカイブ文書の保存にも寄与します。
IronOCRがサポートできる環境にはどんなものがありますか?
IronOCRは、C#、F#、VB.NETなどさまざまな.NET環境と互換性があります。8、7、6、Core、Standard、Frameworkの.NETバージョンをサポートしており、多くの開発セットアップに対応しています。
IronOCRのライセンスをどのように扱えばいいですか?
IronOCRのライセンスを扱うには、アプリケーションのスタートアップでIronOcr.License.LicenseKeyプロパティを使用してライセンスキーを適用します。あるいは、グローバルにWeb.ConfigやApp.Configファイル、または.NET Coreアプリケーションのappsettings.jsonに設定することも可能です。
IronOCRはどのような高度な機能を提供していますか?
IronOCRは、言語選択、ページ分割モード、カスタムTesseract変数、文字のホワイトリストまたはブラックリストを含む高度な機能を提供します。これらの機能は、OCR操作の詳細なカスタマイズと最適化を可能にします。
IronOCRはゾーンベースのOCRをサポートしていますか?
はい、IronOCRはゾーンベースのOCRをサポートしており、テキスト抽出のために画像やドキュメントの特定の領域を指定することができます。この機能は、複雑なレイアウトからのターゲットデータ抽出に役立ちます。
自分のC#プロジェクトにOCRを統合するにはどうすれば良いですか?
C#プロジェクトにOCRを統合するには、NuGetからIronOCRライブラリをインストールしてプロジェクトで参照します。ライブラリのメソッドを利用して、アプリケーションにOCR機能を実装し、画像やスキャンされたドキュメントを処理できるようにします。






