より良い OCR のために C#35 のフィルター ウィザードを使用する方法

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

IronOCRフィルターウィザードは自動的に最適なOCR設定を見つけるために画像上ですべての前処理フィルターの組み合わせをテストし、最高の信頼スコアと結果を再現するために必要な正確なC#コードの両方を返します。

OCRのための画像の前処理は困難です。 複数のフィルターを使用することで、認識を向上させることができますが、適切な組み合わせを見つけるには、広範な試行錯誤が必要です。 画像にはそれぞれ独自の課題があり、手作業によるテストには時間がかかります。 これは、低画質のスキャン画像や、ノイズや歪みのレベルがさまざまな画像を扱う場合に特に当てはまります。

IronOCRのOcrInputFilterWizardはこの問題を解決します。 フィルタウィザードは、フィルタの組み合わせを自動的に評価し、OCRの信頼性と精度を最大化します。 最適な設定を徹底的にテストし、最適なフィルタの組み合わせをコード・スニペットとして返すので、結果を簡単に再現できます。 この機能は、OcrInputクラスとシームレスに統合され、画像へのフィルタ適用を簡素化します。

このガイドでは、フィルタウィザードがどのように動作するかを示し、それが使用するコードスニペットとパラメータを紹介します。 その他の OCR ワークフローの最適化については、画質補正に関するガイドをご覧ください。

クイックスタート: 理想的な画像フィルターチェーンを自動的に検出する

IronOCRのフィルターウィザードを使用して、すべての前処理フィルターの組み合わせをテストし、最適なコードスニペットを入手してください。 1行で最高信頼度スコアと、類似画像に対する正確なC#フィルターチェーンを返します。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronOCR をインストールします

    PM > Install-Package IronOcr

  2. このコード スニペットをコピーして実行します。

    string code = OcrInputFilterWizard.Run("image.png", out double confidence, new IronTesseract());
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronOCR を使い始めましょう
    arrow pointer

フィルター ウィザードはどのように機能しますか?

OcrInputFilterWizard.Runメソッドは3つのパラメータを取ります:入力画像、結果の信頼度を表すoutパラメータ、そしてTesseract Engineインスタンスです。 高度なエンジン制御については、Tesseract詳細設定のガイドをご覧ください。

最高の信頼スコアを達成するために、前処理フィルタの複数の組み合わせをテストします。 最高信頼度スコアは、入力画像に適用するフィルタセットを決定します。 このアプローチは、画像の向き補正やその他の複雑な前処理ステップを必要とする難しい画像に効果的に作用します。

フィルターウィザードには、プリセットや組み合わせの制限はありません。 また、包括的なフィルターテストにより、最高の信頼スコアを達成することに重点を置いています。 処理中のリアルタイムのフィードバックのために、ウィザードの操作を監視する進捗追跡を実装してください。

組み合わせテストで利用可能なフィルタ:

  • input.Contrast() - テキストを明瞭にするためにコントラストを調整します。
  • input.Sharpen() - エッジの定義を強化します。
  • input.Binarize() - 白黒に変換します。
  • input.ToGrayScale() - 色情報を削除します。
  • input.Invert() - 色を反転します。
  • input.Deskew() - 斜めのテキストを修正します。
  • input.Scale(...) - 最適な寸法にリサイズします。
  • input.Denoise() - ピクセルノイズを除去します。
  • input.DeepCleanBackgroundNoise()-高度なノイズ除去
  • input.EnhanceResolution() - 低画質の解像度を改善します。
  • input.Dilate()input.Erode() - テキストの絞り込み操作

フィルタの詳細については、画像フィルタに関するチュートリアルを参照してください。 その他の前処理テクニックは、画像補正フィルターガイドにあります。

この徹底的なテスト方法には、処理時間が必要です。大規模な処理には、マルチスレッド サポートを使用して、複数の画像を同時に処理します。

テストにはどのような画像を使用すればよいですか?

この例では、フィルターウィザードの機能を示すために、人工ノイズの多いスクリーンショットを使用しています。 フィルタ ウィザードは、スキャンしたドキュメントからテキスト付き写真まで、さまざまな画像タイプを効果的に処理します。

フィルターウィザードのデモンストレーションのために劣化したテキストを示すノイズパターンで重く破損したテスト画像.

テスト画像を選択する際には、以下の要素を考慮してください:

  • 画像解像度:通常、DPIが高い画像ほど良い結果が得られます。 最適化のヒントについては、DPI設定に関するガイドを参照してください。
  • ドキュメントタイプ:異なるドキュメントタイプは、特定のフィルタの組み合わせから恩恵を受けます。 アイデンティティ文書は、標準的なテキスト文書とは異なる前処理が必要な場合があります。
  • ソースの品質: フィルターウィザードは問題のある画像を得意としますが、可能な限り利用可能な最高品質のソースから始めます。

自分のコードでフィルタ ウィザードを実行するにはどうすればよいですか?

:path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-process.cs
using IronOcr;
using System;

// Initialize the Tesseract engine
var ocr = new IronTesseract();

// 1. Pass the image path ("noise.png").
// 2. Pass an 'out' variable to store the best confidence score found.
// 3. Pass the tesseract instance to be used for testing.
string codeToRun = OcrInputFilterWizard.Run("noise.png", out double confidence, ocr);

// The 'confidence' variable is now populated with the highest score achieved.
Console.WriteLine($"Best Confidence Score: {confidence}");

// 'codeToRun' holds the exact C# code snippet that achieved this score.
// The returned string is the code you can use to filter similar images.
Console.WriteLine("Recommended Filter Code:");
Console.WriteLine(codeToRun);
Imports IronOcr
Imports System

' Initialize the Tesseract engine
Dim ocr As New IronTesseract()

' 1. Pass the image path ("noise.png").
' 2. Pass an 'out' variable to store the best confidence score found.
' 3. Pass the tesseract instance to be used for testing.
Dim confidence As Double
Dim codeToRun As String = OcrInputFilterWizard.Run("noise.png", confidence, ocr)

' The 'confidence' variable is now populated with the highest score achieved.
Console.WriteLine($"Best Confidence Score: {confidence}")

' 'codeToRun' holds the exact C# code snippet that achieved this score.
' The returned string is the code you can use to filter similar images.
Console.WriteLine("Recommended Filter Code:")
Console.WriteLine(codeToRun)
$vbLabelText   $csharpLabel

フィルタウィザードは、さまざまな入力形式を処理します。 サポートされているフォーマットについては、入力画像に関するガイドを参照してください。 PDFファイルを処理したり、動的な画像ソースのストリームを直接操作することもできます。

バッチ処理のシナリオについては、次の例を参考にしてください:

/* :path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-batch.cs */
using IronOcr;
using System;
using System.IO;

// Process multiple similar images
var ocr = new IronTesseract();
string[] imageFiles = Directory.GetFiles(@"C:\Images", "*.png");

// Run Filter Wizard on first image to discover optimal settings
string optimalCode = OcrInputFilterWizard.Run(imageFiles[0], out double baselineConfidence, ocr);
Console.WriteLine($"Baseline confidence: {baselineConfidence:P2}");
Console.WriteLine($"Optimal filter sequence discovered");

// Apply discovered filters to all images
foreach (string imagePath in imageFiles)
{
    using (var input = new OcrImageInput(imagePath))
    {
        // Apply the filter sequence discovered by the wizard
        // The actual filters would be applied here based on the wizard output
        var result = ocr.Read(input);
        Console.WriteLine($"Processed: {Path.GetFileName(imagePath)} - Confidence: {result.Confidence:P2}");
    }
}
/* :path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-batch.cs */
using IronOcr;
using System;
using System.IO;

// Process multiple similar images
var ocr = new IronTesseract();
string[] imageFiles = Directory.GetFiles(@"C:\Images", "*.png");

// Run Filter Wizard on first image to discover optimal settings
string optimalCode = OcrInputFilterWizard.Run(imageFiles[0], out double baselineConfidence, ocr);
Console.WriteLine($"Baseline confidence: {baselineConfidence:P2}");
Console.WriteLine($"Optimal filter sequence discovered");

// Apply discovered filters to all images
foreach (string imagePath in imageFiles)
{
    using (var input = new OcrImageInput(imagePath))
    {
        // Apply the filter sequence discovered by the wizard
        // The actual filters would be applied here based on the wizard output
        var result = ocr.Read(input);
        Console.WriteLine($"Processed: {Path.GetFileName(imagePath)} - Confidence: {result.Confidence:P2}");
    }
}
Imports IronOcr
Imports System
Imports System.IO

' Process multiple similar images
Dim ocr As New IronTesseract()
Dim imageFiles As String() = Directory.GetFiles("C:\Images", "*.png")

' Run Filter Wizard on first image to discover optimal settings
Dim baselineConfidence As Double
Dim optimalCode As String = OcrInputFilterWizard.Run(imageFiles(0), baselineConfidence, ocr)
Console.WriteLine($"Baseline confidence: {baselineConfidence:P2}")
Console.WriteLine("Optimal filter sequence discovered")

' Apply discovered filters to all images
For Each imagePath As String In imageFiles
    Using input As New OcrImageInput(imagePath)
        ' Apply the filter sequence discovered by the wizard
        ' The actual filters would be applied here based on the wizard output
        Dim result = ocr.Read(input)
        Console.WriteLine($"Processed: {Path.GetFileName(imagePath)} - Confidence: {result.Confidence:P2}")
    End Using
Next
$vbLabelText   $csharpLabel

フィルタウィザードはどのような結果を返しますか?

信頼度65%のスコアと画像処理メソッドを含む生成されたC#コードを示すフィルターウィザードのコンソール出力.

フィルターウィザードの出力は、この特定の画像に対して達成可能な最良の結果として65%の信頼度を示しています。 信頼度スコアは、OCRの精度を評価するための重要な指標です。 結果の信頼性については、専用ガイドをご覧ください。

入力画像には極端な歪みと人工的なノイズが含まれています。これは、困難なシナリオにおけるフィルタウィザードの機能を示しています。 本番用には、可能な限り高品質のソース画像から始めてください。

生成されたコード・スニペットは以下を提供します:

  • 正確なフィルタシーケンス: 最適な結果を得るためには、操作の順序が重要です。
  • メソッドチェイニング:実装が簡単な、クリーンで読みやすいコード
  • 推測するパラメータはありません: 各フィルタは最高のパフォーマンスを発揮するように設定されています。

推奨されるフィルタの組み合わせを適用するにはどうすればよいですか?

フィルタウィザードを実行した後、提供されたコードスニペット設定を入力画像に適用して、結果と信頼性を確認してください。 これにより、文書処理パイプラインの類似画像間で再現可能な結果が保証されます。

どのように推奨コードを実装しますか?

:path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-best-combination.cs
using IronOcr;
using System;

// Initialize the Tesseract engine
var ocrTesseract = new IronTesseract();

// Load the image into an OcrInput object
using (var input = new OcrImageInput("noise.png"))
{
    // Apply the exact filter chain recommended by the Wizard's output
    input.Invert();
    input.DeNoise();
    input.Contrast();
    input.AdaptiveThreshold();

    // Run OCR on the pre-processed image
    OcrResult result = ocrTesseract.Read(input);

    // Print the final result and confidence
    Console.WriteLine($"Result: {result.Text}");
    Console.WriteLine($"Confidence: {result.Confidence}");
}
Imports IronOcr
Imports System

' Initialize the Tesseract engine
Dim ocrTesseract As New IronTesseract()

' Load the image into an OcrInput object
Using input As New OcrImageInput("noise.png")
    ' Apply the exact filter chain recommended by the Wizard's output
    input.Invert()
    input.DeNoise()
    input.Contrast()
    input.AdaptiveThreshold()

    ' Run OCR on the pre-processed image
    Dim result As OcrResult = ocrTesseract.Read(input)

    ' Print the final result and confidence
    Console.WriteLine($"Result: {result.Text}")
    Console.WriteLine($"Confidence: {result.Confidence}")
End Using
$vbLabelText   $csharpLabel

フィルターアプリケーションの順序は非常に重要です。 フィルタウィザードは、使用するフィルタとその最適な順序の両方を決定します。 このインテリジェントな順序付けにより、フィルタウィザードは複雑な前処理シナリオで威力を発揮します。

OCRプロセスの制御を強化するために、エラー処理と検証の実装を検討してください:

/* :path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-validation.cs */
using IronOcr;
using System;

var ocrEngine = new IronTesseract();

try
{
    using (var input = new OcrImageInput(@"C:\Images\document.png"))
    {
        // Apply Filter Wizard recommended sequence
        input.Invert();
        input.DeNoise();
        input.Contrast();
        input.AdaptiveThreshold();

        // Configure additional OCR settings
        ocrEngine.Configuration.ReadBarCodes = false;
        ocrEngine.Configuration.RenderSearchablePdf = true;

        // Perform OCR with timeout protection
        var result = ocrEngine.Read(input);

        // Validate results
        if (result.Confidence >= 0.6)
        {
            Console.WriteLine("OCR successful with high confidence");
            // Process the extracted text
        }
        else
        {
            Console.WriteLine("Low confidence result - consider manual review");
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine($"OCR processing error: {ex.Message}");
}
/* :path=/static-assets/ocr/content-code-examples/how-to/filter-wizard-validation.cs */
using IronOcr;
using System;

var ocrEngine = new IronTesseract();

try
{
    using (var input = new OcrImageInput(@"C:\Images\document.png"))
    {
        // Apply Filter Wizard recommended sequence
        input.Invert();
        input.DeNoise();
        input.Contrast();
        input.AdaptiveThreshold();

        // Configure additional OCR settings
        ocrEngine.Configuration.ReadBarCodes = false;
        ocrEngine.Configuration.RenderSearchablePdf = true;

        // Perform OCR with timeout protection
        var result = ocrEngine.Read(input);

        // Validate results
        if (result.Confidence >= 0.6)
        {
            Console.WriteLine("OCR successful with high confidence");
            // Process the extracted text
        }
        else
        {
            Console.WriteLine("Low confidence result - consider manual review");
        }
    }
}
catch (Exception ex)
{
    Console.WriteLine($"OCR processing error: {ex.Message}");
}
Imports IronOcr
Imports System

Dim ocrEngine As New IronTesseract()

Try
    Using input As New OcrImageInput("C:\Images\document.png")
        ' Apply Filter Wizard recommended sequence
        input.Invert()
        input.DeNoise()
        input.Contrast()
        input.AdaptiveThreshold()

        ' Configure additional OCR settings
        ocrEngine.Configuration.ReadBarCodes = False
        ocrEngine.Configuration.RenderSearchablePdf = True

        ' Perform OCR with timeout protection
        Dim result = ocrEngine.Read(input)

        ' Validate results
        If result.Confidence >= 0.6 Then
            Console.WriteLine("OCR successful with high confidence")
            ' Process the extracted text
        Else
            Console.WriteLine("Low confidence result - consider manual review")
        End If
    End Using
Catch ex As Exception
    Console.WriteLine($"OCR processing error: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

フィルターを適用した後の最終的なOCR結果はどうなりますか?

OCR 結果を表示するターミナル: 抽出されたテキスト 'Testing:フィルタウィザードを適用した後、65.61%の信頼度でテスト中

IronOCRは大きく歪んだ状態でもほとんどのテキストを抽出します。 信頼度は、フィルタウィザードのレポートと一致します。 OCR結果の詳細な処理については、データ出力に関するガイドを参照してください。

どのような高度な使い方を考慮すべきですか?

フィルタウィザードを実運用で使用する場合は、以下のベストプラクティスを考慮してください:

1.バッチ処理:代表的なサンプルでテストし、類似した画像にフィルターチェーンを適用します。

2.パフォーマンスの最適化: フィルターウィザードは徹底していますが、時間がかかります。 高速 OCR については、高速 OCR 設定を参照してください。

3.カスタム言語サポート:英語以外のテキストについては、複数の言語を探索し、認識を最適化します。

4.APIインテグレーションAPIリファレンスで完全なドキュメントをご覧ください。

5.ドキュメント固有の最適化:文書の種類によって、特化したアプローチの恩恵を受けることができます:

  • フォームについては、テーブルを読むを検討してください。
  • コンテンツが混在している場合は、BarCode読み取りを有効にしてください。
  • 複数ページのドキュメントについては、TIFF処理を参照してください。

6.メモリ管理using ステートメントを使用して、OcrInput オブジェクトを適切に破棄してください。

7.エラーリカバリー: 信頼性の低い結果に対するフォールバック戦略を実装します。 重要な文書については、手作業によるレビューを検討してください。

フィルタウィザードは、最適なOCR結果を得るための強力な自動前処理ディスカバリを提供します。 特定の画像に最適な前処理パイプラインを自動的に見つけることで、画像の準備から推測を排除し、アプリケーション全体で一貫した高品質のテキスト抽出を保証します。

よくある質問

OCR Filter Wizardとは何ですか?また、画像の前処理にどのように役立ちますか?

IronOCRフィルターウィザードは、最適なOCR設定を見つけるために、画像上ですべての可能な前処理フィルターの組み合わせをテストする自動化されたツールです。OCRの信頼性と精度を最大化するために様々なフィルターの組み合わせを自動的に評価し、最適なフィルターの組み合わせをすぐに使えるC#コードスニペットとして返すことで、手作業による試行錯誤のプロセスを排除します。

C# アプリケーションでフィルタウィザードを使用するにはどうすればよいですか?

OcrInputFilterWizard.Run()に画像パス、信頼度スコアのoutパラメータ、IronTesseractインスタンスを指定するだけです。例えば: string code = OcrInputFilterWizard.Run("image.png", out double confidence, new IronTesseract());

OcrInputFilterWizard.Runメソッドはどのようなパラメータを受け取りますか?

IronOCRのOcrInputFilterWizard.Runメソッドは3つのパラメーターを受け取ります:入力画像(ファイルパス)、結果の信頼度を返すoutパラメーター、そして処理用のIronTesseractエンジンのインスタンスです。

フィルタを手動でテストする代わりにフィルタウィザードを使用する理由は何ですか?

手作業による前処理フィルターのテストは時間がかかり、特に低画質スキャンやノイズレベルの異なる画像では困難です。IronOCRのフィルターウィザードはこのプロセスを自動化し、フィルターの組み合わせを徹底的にテストし、必要なC#コードで最高の信頼スコアを返すことで、開発時間を大幅に節約します。

フィルタウィザードは、どのようにして最適なフィルタの組み合わせを決定するのですか?

IronOCRのフィルターウィザードは、前処理フィルターの複数の組み合わせを画像上でテストし、それぞれの組み合わせのOCR信頼度スコアを測定します。そして、最も高い信頼スコアを達成するフィルターセットを選択し、この最適な組み合わせを実行可能なC#コードとして返します。

フィルタウィザードは、低画質画像やノイズの多い画像でも機能しますか?

はい、IronOCRのフィルターウィザードは、低画質スキャンや様々なノイズや歪みレベルの画像を含む困難な画像に特に効果的です。難しい原稿でもOCRの精度を最大にする最適な前処理の組み合わせを自動的に見つけます。

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

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

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

準備はできましたか?
Nuget ダウンロード 5,384,824 | バージョン: 2026.2 リリース