C#を使用してより良いOCR結果のために画像品質を向上させる方法|IronOCR

OCRの読み取りを向上させる画像補正フィルター

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

IronOCRは、テキスト抽出の前に、テキストの鮮明度を高め、ノイズを減らすことにより、OCR精度を大幅に向上させるために、画像を前処理する5つの重要な画像補正フィルター(シャープ、解像度を高める、ノイズ除去、膨張、侵食)を提供します。

クイックスタート: クリアテキストにシャープフィルターを適用する

IronOCRのOcrImageInputを使って、1行のコードでぼやけた画像を鮮明にしてください。 この例では、正確なOCRのための画像補正を示します。

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

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

    PM > Install-Package IronOcr

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

    new IronOcr.OcrImageInput("sample.png").Sharpen().SaveAsImages("output.png");
  3. 実際の環境でテストするためにデプロイする

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


シャープ フィルターを適用するにはどうすればよいですか?

このフィルタは、画像のエッジに沿ってコントラストを高め、テキストの境界をより明確にします。 テキストを明瞭にし、文字認識をより正確にします。

なぜシャープにすると OCR の精度が向上するのですか?

シャープフィルタは、エッジのコントラストを強調することで、テキストと背景の境界を強調します。文字認識アルゴリズムが正しく機能するためには、明確ではっきりした文字の形が必要です。 スキャンした文書や低品質の写真によく見られる、エッジがぼやけたテキストは、OCRエンジンが文字の境界を誤認識する原因となります。 OCR 用の最適な画像処理についての詳細は、OCR 画像最適化フィルターの包括的なガイドをご覧ください。

シャープフィルターを適用するには、OcrImageInputオブジェクトのSharpenメソッドを呼び出します:

:path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-sharpen-filter.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Apply sharpen filter
imageInput.Sharpen();

// Export filtered image
imageInput.SaveAsImages("sharpen.jpg");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Apply sharpen filter
imageInput.Sharpen()

' Export filtered image
imageInput.SaveAsImages("sharpen.jpg")
$vbLabelText   $csharpLabel

シャープ フィルターはいつ使用すべきですか?

少しピントのずれた画像や、テキストのエッジが柔らかいスキャン文書、照明が弱い場所で撮影された写真には、シャープネス処理を使用してください。 明確なテキストをシャープにしすぎることは避けてください。 極端にぼやけたスキャン画像については、シャープネス処理と他のフィルタを組み合わせるか、低画質スキャンと画像の修正のガイドを参照してください。

SaveAsImagesメソッドを使用して、フィルタリングされた画像をエクスポートします。 以下は、翻訳前と翻訳後の比較です。

Blurred text sample showing business article content before applying sharpen filter
Text sample after sharpen filter application showing improved edge definition and character clarity

より良い OCR のために解像度を高めるにはどうすればよいですか?

このフィルタはピクセル密度を高め、シャープネスと鮮明度を向上させます。 OCRエンジンが低解像度画像のテキストをより正確に読み取れるようにします。

OCRはどのDPIをターゲットにすべきですか?

OCRエンジンは、300 DPI(ドット/インチ)で最高のパフォーマンスを発揮します。 解像度が低いと、文字の誤認識が発生します; 解像度が高いと、精度が上がらずに処理が遅くなります。 IronOCRのエンハンスメントフィルターは、画像を最適なDPIレベルにインテリジェントにアップスケールします。 詳細なガイダンスについては、DPI 設定ガイドを参照してください。

このフィルタを適用するには、EnhanceResolutionメソッドを呼び出します。 デフォルトのターゲットは225DPIです:

using IronOcr;

// Create OCR input
var imageInput = new OcrImageInput("low-res-scan.jpg");

// Apply enhance resolution filter with default 225 DPI
imageInput.EnhanceResolution();

// Or specify a custom DPI
imageInput.EnhanceResolution(300);

// Combine with OCR reading
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
Console.WriteLine($"Extracted text: {result.Text}");
using IronOcr;

// Create OCR input
var imageInput = new OcrImageInput("low-res-scan.jpg");

// Apply enhance resolution filter with default 225 DPI
imageInput.EnhanceResolution();

// Or specify a custom DPI
imageInput.EnhanceResolution(300);

// Combine with OCR reading
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
Console.WriteLine($"Extracted text: {result.Text}");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

解像度の向上が最も重要なのはいつですか?

解像度の向上は、以下の点で非常に重要です:

  • スクリーンショットは画面解像度(72-96 DPI)でキャプチャしてください。
  • インターネットからダウンロードしたウェブ画像
  • 低解像度でスキャンされた歴史的文書
  • 解像度の低いファックス送信

OCR Tesseract Image DPIの例は、DPIがドキュメントの種類によって精度にどのように影響するかについての洞察を提供します。

Low-resolution text sample showing blurry, pixelated business article requiring OCR enhancement
Resolution-enhanced text showing clearer characters after DPI improvement for better OCR accuracy

画像からノイズを除去するにはどうすればよいですか?

ノイズ除去フィルタは、画像の不要なアーチファクトを低減します。 ノイズリダクションは、テキストを背景の干渉から分離し、よりクリーンで正確なOCR結果を生成します。

2x2形態素と3x3形態素の違いは何ですか?

モルフォロジーのサイズはノイズ除去の強さを決定する。 2x2モルフォロジーを使用することで、繊細なテキストを保持しながらも、アーチファクトを最小限に抑えるための穏やかなノイズリダクションが適用されます。 3x3形態素は、劣化の激しい文書に対して積極的なノイズ除去を行いますが、非常に小さなテキストに影響を与える可能性があります。

ノイズ除去フィルターを適用するには、 DeNoiseメソッドを使用します。 デフォルトの形態素は2x2です。3x3の形態素には'true'を渡してください:

using IronOcr;

// Load noisy document
var imageInput = new OcrImageInput("noisy-scan.pdf");

// Apply denoise filter with default 2x2 morphology
imageInput.DeNoise();

// Apply stronger denoising with 3x3 morphology
imageInput.DeNoise(true);

// Combine with other filters for severely degraded images
imageInput.DeNoise()
         .Sharpen()
         .EnhanceResolution(300);

// Process with OCR
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);

// Check confidence levels
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page confidence: {page.Confidence}%");
}
using IronOcr;

// Load noisy document
var imageInput = new OcrImageInput("noisy-scan.pdf");

// Apply denoise filter with default 2x2 morphology
imageInput.DeNoise();

// Apply stronger denoising with 3x3 morphology
imageInput.DeNoise(true);

// Combine with other filters for severely degraded images
imageInput.DeNoise()
         .Sharpen()
         .EnhanceResolution(300);

// Process with OCR
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);

// Check confidence levels
foreach (var page in result.Pages)
{
    Console.WriteLine($"Page confidence: {page.Confidence}%");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

自分の画像にノイズ除去が必要かどうかを知るにはどうすればよいですか?

これらのノイズ指標を探してください:

  • 背景のランダムな斑点またはドット
  • スキャン不良による塩・コショウノイズ
  • 高ISO撮影による粒状感
  • 再生紙を使用した背景テクスチャ

自動ノイズ検出については、フィルタウィザードをご覧ください。

Noisy scanned document with speckles and artifacts degrading text about Japanese tech executives
Clean document after denoise filter removes background speckles and improves text clarity

ディレート フィルターはどのように使用しますか?

画像内の明るい領域を拡張します。 テキストを太くすることで、より目立たせ、OCRソフトウェアが解釈しやすくします。

テキストにディレーションを適用するのはいつですか?

ダイレーションは、以下のような薄い文字や改行文字に最適です:

  • インクが安定しない古いタイプライター文書
  • 色あせたレシートや感熱紙の印刷物
  • ヘアラインフォントを使用した文書
  • 画像形式の圧縮されすぎたテキスト

ダイレーションは、文字内の小さな隙間を埋め、弱いストロークのつながりを強化します。 これは、OCRエンジンが壊れた文字を複数の記号と誤認するのを防ぐためです。

拡張フィルターを適用するには、 Dilateメソッドを使用します。 デフォルトの形態素は2x2です; 3x3には"true"を渡してください:

using IronOcr;

// Create OCR engine
var ocrTesseract = new IronTesseract();

// Apply dilate filter
var imageInput = new OcrImageInput("thin-text.jpg");
imageInput.Dilate();

// For more aggressive dilation
imageInput.Dilate(true);

// Practical example for faded receipt processing
var receiptInput = new OcrImageInput("faded-receipt.jpg");
receiptInput.Dilate()
           .DeNoise()
           .EnhanceResolution(300);

// Configure for better receipt reading
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;
ocrTesseract.Configuration.ReadBarCodes = true;

// Perform OCR
var result = ocrTesseract.Read(receiptInput);
using IronOcr;

// Create OCR engine
var ocrTesseract = new IronTesseract();

// Apply dilate filter
var imageInput = new OcrImageInput("thin-text.jpg");
imageInput.Dilate();

// For more aggressive dilation
imageInput.Dilate(true);

// Practical example for faded receipt processing
var receiptInput = new OcrImageInput("faded-receipt.jpg");
receiptInput.Dilate()
           .DeNoise()
           .EnhanceResolution(300);

// Configure for better receipt reading
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;
ocrTesseract.Configuration.ReadBarCodes = true;

// Perform OCR
var result = ocrTesseract.Read(receiptInput);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

オーバーダイレーションでよくある問題とは

過度な拡張は、以下を引き起こす可能性があります:

  • 隣接する文字が合体する文字化け
  • 内部詳細の損失('e'または'8'の穴)
  • 太字テキストの精度低下

結果をモニターし、適宜調整してください。 テキストの重みが混在する文書には、画質補正フィルターを選択的に使用してください。

Document with thin text strokes that would benefit from dilation filtering for OCR
Text after dilation filter showing thickened character strokes and improved legibility

どのようにエロード フィルターを適用しますか?

Erosionは、画像の明るい領域を縮小し、太い文字や歪んだ文字を洗練させ、文字の分離を改善します。

なぜ侵食は分厚いテキストに役立つのでしょうか

浸食は、テキストのストロークを細くし、触れている文字を分離します。 このフィルターが得意とする分野

  • 墨塗り印刷物
  • 文字にじみのあるコピー
  • マージされた太字テキスト
  • 低品質のファックス送信

文字区切りを復元し、個々の文字の認識を向上させることで、単語全体の誤読を防ぎます。

このフィルタを適用するには、Erodeメソッドを使用してください。 デフォルトの形態素は2x2です; 3x3には"true"を渡してください:

using IronOcr;

// Create OCR instance
var ocrTesseract = new IronTesseract();

// Load image with thick text
var imageInput = new OcrImageInput("thick-text.jpg");

// Apply erode filter
imageInput.Erode();

// Stronger erosion for heavily bleeding text
imageInput.Erode(true);

// Example: Processing a poor-quality photocopy
var photocopyInput = new OcrImageInput("thick-text-photocopy.pdf");

// Apply erosion followed by sharpening for best results
photocopyInput.Erode()
              .Sharpen()
              .EnhanceResolution(300);

// Configure OCR for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\\:\";<>?,./";
ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";

var ocrResult = ocrTesseract.Read(photocopyInput);

// Extract with confidence check
var highConfidenceText = ocrResult.Blocks
    .Where(b => b.Confidence > 90)
    .Select(b => b.Text);
using IronOcr;

// Create OCR instance
var ocrTesseract = new IronTesseract();

// Load image with thick text
var imageInput = new OcrImageInput("thick-text.jpg");

// Apply erode filter
imageInput.Erode();

// Stronger erosion for heavily bleeding text
imageInput.Erode(true);

// Example: Processing a poor-quality photocopy
var photocopyInput = new OcrImageInput("thick-text-photocopy.pdf");

// Apply erosion followed by sharpening for best results
photocopyInput.Erode()
              .Sharpen()
              .EnhanceResolution(300);

// Configure OCR for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\\:\";<>?,./";
ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";

var ocrResult = ocrTesseract.Read(photocopyInput);

// Extract with confidence check
var highConfidenceText = ocrResult.Blocks
    .Where(b => b.Confidence > 90)
    .Select(b => b.Text);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

浸食とテキストの読みやすさのバランスはどうすればよいですか?

適切な侵食レベルを見つけるには、入念なテストが必要です:

  • デフォルトの2x2形態素で開始
  • 代表的な文書サンプルでのテスト
  • 句読点が見えるようにする
  • 細いフォントが壊れないようにする

テキストのウェイトが混在する文書については、高度な設定オプションを参照してください。

Document with merged/thick characters that would benefit from erosion filter processing
Text after erosion filter showing separated characters and refined stroke thickness

フィルタリングした画像を検索可能なPDFとして保存するにはどうすればよいですか?

IronOCRを使用すると、フィルタを適用したり、元の状態で変更したPDFを保存することができます。 SaveAsSearchablePdfメソッドの2番目のパラメータは、フィルタを使用して保存するかどうかを決定します。

フィルタの変更を保持する利点は何ですか?

フィルタの変更を保持することには、いくつかの利点があります:

  • よりクリーンで読みやすいドキュメントを作成
  • 文書バッチ間の一貫性を維持
  • テキストの品質向上を視覚的に確認
  • 品質管理の比較が可能

検索可能なPDFを作成するには、視覚的な外観を維持しながら、OCRテキストレイヤーを埋め込みます。 詳しくは、検索可能なPDFの作成に関するガイドをご覧ください。

using IronOcr;

var ocr = new IronTesseract();
var ocrInput = new OcrInput();

// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");

// Apply multiple filters for comprehensive improvement
ocrInput.ToGrayScale()
        .DeNoise()
        .Sharpen()
        .EnhanceResolution(300);

// Perform OCR
OcrResult result = ocr.Read(ocrInput);

// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputFiltered.pdf", true);

// Or save without filters to preserve original appearance
result.SaveAsSearchablePdf("outputOriginal.pdf", false);

// Export to other formats
result.SaveAsTextFile("extracted-text.txt");
result.SaveAsHocrFile("output.html");
using IronOcr;

var ocr = new IronTesseract();
var ocrInput = new OcrInput();

// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");

// Apply multiple filters for comprehensive improvement
ocrInput.ToGrayScale()
        .DeNoise()
        .Sharpen()
        .EnhanceResolution(300);

// Perform OCR
OcrResult result = ocr.Read(ocrInput);

// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputFiltered.pdf", true);

// Or save without filters to preserve original appearance
result.SaveAsSearchablePdf("outputOriginal.pdf", false);

// Export to other formats
result.SaveAsTextFile("extracted-text.txt");
result.SaveAsHocrFile("output.html");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

フィルタリングされたPDFとオリジナルのPDFのどちらを選べばよいですか?

フィルターで保存(true)する場合:

  • 原文の品質が低い
  • 文書間で一貫した外観が必要です。
  • フィルタリングされたバージョンは読みやすさを大幅に改善
  • ドキュメントの長期保存

フィルターなしで保存(false)する場合:

  • 原文の体裁を保つことが法的に義務付けられています。
  • 色情報は重要です
  • 文書の信頼性を維持すること
  • フィルターは、OCRの精度のためにのみ必要です。

高度な PDF 処理オプションについては、PDF OCR テキスト抽出ガイドを参照してください。 最適なフィルタの組み合わせについては、フィルタウィザードチュートリアルを参照してください。

よくある質問

C#でOCRの精度を向上させる画像フィルターとは?

IronOCRは5つの重要な画像補正フィルターを提供します:シャープ、解像度の向上、ノイズ除去、膨張、侵食。これらのフィルターは、テキスト抽出の前に、テキストの鮮明度を高め、ノイズを減らすことによって、OCR精度を大幅に向上させるために画像を前処理します。

テキスト認識を向上させるために、ぼやけた画像をシャープにするにはどうすればよいですか?

IronOCRのOcrImageInputを使用すると、1行のコードでぼやけた画像をシャープにすることができます: new IronOcr.OcrImageInput("sample.png").Sharpen().このフィルタは画像のエッジに沿ってコントラストを上げ、より明確なテキスト境界を作成し、文字認識を向上させます。

なぜシャープニングするとOCRの精度が向上するのですか?

IronOCRのシャープフィルターは、エッジのコントラストを強調することで、テキストと背景の境界を強調します。文字認識アルゴリズムが正しく機能するためには、明確ではっきりした文字の形が必要なので、これは非常に重要です。エッジがソフトでぼやけたテキストは、OCRエンジンが文字の境界を誤認識する原因となります。

OCRにシャープフィルターを使用するのはどのような場合ですか?

IronOCRのシャープニングフィルターは、少しピンぼけした画像や、テキストのエッジが柔らかいスキャン文書、照明の悪い場所で撮影された写真などにお使いください。鮮明なテキストをシャープにしすぎると、アーチファクトが発生し、精度が落ちるので避けてください。

最適なOCRパフォーマンスを得るには、どのDPIを目標にすればよいですか?

IronOCRは300 DPI (dots per inch)の画像で最高のパフォーマンスを発揮します。解像度が低いと文字の誤認識を引き起こし、解像度が高いと精度が向上せずに処理が遅くなります。低解像度の画像のピクセル密度を上げるには、解像度強化フィルターを使用してください。

補正後にフィルタリングした画像をエクスポートできますか?

はい、IronOCRではSaveAsImagesメソッドを使ってフィルタリングした画像をエクスポートすることができます。これにより、OCRを実行する前に、画像補正の前後比較を表示し、改善点を確認することができます。

画像フィルタを適用するための最小限のワークフローを教えてください。

IronOCRの最小ワークフローは5つのステップで構成されています:ライブラリのダウンロード、PDFや画像のインポート、必要なフィルターの適用(シャープ、解像度の向上、ノイズ除去、膨張、侵食)、閲覧のための補正画像のエクスポート、OCR処理のための読み取りメソッドの使用。

Chaknith Bin
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeに取り組んでいます。彼はC#と.NETの深い専門知識を持ち、ソフトウェアの改善や顧客サポートに貢献しています。ユーザーとの対話から得られる洞察が、より良い製品、ドキュメント、および全体的な経験に寄与しています。
準備はできましたか?
Nuget ダウンロード 5,246,844 | バージョン: 2025.12 リリース