C#で画像の色を修正して読みやすくする方法 | IronOCR

C##35;で読みやすいように画像の色を修正する方法

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

C#でIronOCRの二値化、グレースケール、反転、色置換メソッドを使って画像の色を修正し、テキストの可読性とOCRの精度を向上させます。 ターゲット抽出のために特定のテキストの色をお読みください。

クイックスタート:特定のテキスト色を分離する

IronOCRのSelectTextColorメソッドを使用して、OCRを特定のテキスト色に絞り込みます。 画像を読み込み、テキストの色と許容範囲を選択し、そのテキストのみを抽出して正確なOCR結果を得ます。

```cs:title=IronOCRでテキストの色を素早く修正する。 new IronTesseract().Read(new IronOcr.OcrImageInput("sample.jpg").SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60));


<div class="hsg-featured-snippet">
    <h3>最小限のワークフロー(5ステップ)</h3>
    <ol>
        <li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">画像の色を修正するためのC#ライブラリをダウンロードする</a></li>
        <li>読み取り用にPDFドキュメントと画像をインポートする</li>
        <li>カラー効果の適用:二値化、グレースケール、反転、色置換</li>
        <li>ビューイング用に修正された画像をエクスポート</li>
        <li><code>SelectTextColor</code>を使用して特定のテキスト色を読み取ります。</li>
    </ol>
</div>

<br class="clear">

## OCRを向上させるために画像を2値化するには?

2値化は、画像を2色形式(通常は白黒)に変換します。これにより、テキストと背景が分離され、ノイズが減少するため、テキストがより明瞭になり、読みやすくなります。

### 2値化はなぜOCRの精度を向上させるのでしょうか</h3></p>

`Binarize`メソッドを使用して2値化を適用します。 OCRは、白地に黒文字の高コントラスト画像に最適です。 この方法では、背景と文字が明確に区別されます。

二値化は、照明ムラや背景ノイズのあるスキャン文書に適しています。このアルゴリズムは画像を分析し、前景テキストと背景を分離するための最適なしきい値を決定します。 高度な前処理技術については、[OCR Image Optimization Filters ガイド](https://ironsoftware.com/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/)を参照してください。

### 二値化のコード実装とは</h3></p>

```csharp
:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-binarize-image.cs

バッチ処理では、2値化と他のフィルタを組み合わせてください。 フィルタウィザードを使用して、画像に最適なフィルタの組み合わせを決定します。

結果をエクスポートして比較するにはどうすればよいですか?

SaveAsImagesメソッドを使用して、変更した画像をエクスポートします。 二値化前と二値化後の画像を比較してください。

Sample image with red and black text on blue-gray background showing OCR challenges before binarization
Binarized version showing clear black text on pure white background for optimal OCR processing

読みやすくするために画像をグレースケールに変換するにはどうすればよいですか?

画像をグレースケールに変換することで、視覚的な乱れを減らし、読みやすさを向上させます。 オリジナルカラーがコンテンツの邪魔になる場合にも役立ちます。

他の方法よりもグレースケールを使用すべきなのはどのような場合ですか?

ToGrayScaleメソッドを使用してグレースケールを適用します。 プロセスでは、R、G、Bの値を平均化します。

グレースケールは、テキスト認識の妨げとなる色付きの背景や透かしに適しています。 2値化とは異なり、グレースケールは微妙に変化する画像のディテールを保持します。 テキストが埋め込まれた写真や複雑なレイアウトの写真にお使いください。 低画質スキャンについては、低画質スキャンと画像の修正を参照してください。

グレースケール変換の簡単なコードとは

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-grayscale-image.cs
// Apply grayscale affect
imageInput.ToGrayScale();
$vbLabelText   $csharpLabel

さまざまな画像品質のため、グレースケールと他の前処理ステップを組み合わせてください。 OcrInputクラスのドキュメントでは、複数のフィルタを連結することについて説明しています。

グレースケールはオリジナルと比べてどうですか?

Sample text with red headers and black body text showing multiple colors before grayscale conversion
Grayscale document with clear text about tech executives, demonstrating improved readability after conversion

どのような場合に画像の色を反転させる必要がありますか?

色を反転させるとコントラストが強調されます。黒い背景に白いテキストを白い背景に黒いテキストに変換すると、読みやすさが向上します。

色の反転はどのように実装しますか?

色を反転するには、Invertメソッドを使用してください。 カラーチャンネルを削除してグレースケールを返すには、ブール値を渡します。

色の反転は、ネガ画像や暗いテーマのスクリーンショットを扱います。 最近のアプリケーションは、従来のOCRでは難しかったダークモードのインターフェースを使用しています。 これらの画像を反転させることで、最適な認識を保証します。 さまざまな画像タイプについては、高速 OCR 設定ガイドを参照してください。

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-invert-image.cs
// Apply invert affect
imageInput.Invert();
$vbLabelText   $csharpLabel

ドキュメントの種類が混在するバッチ処理では、自動的に暗い背景を検出する機能を実装します。 IronOCRのコンピュータ・ビジョン機能は、反転が必要なときを特定します。

反転オプションの違いは何ですか?

グレースケールの有無でInvertメソッドを比較してください:

Color-inverted document maintaining original color channels with reversed values
Business text with inverted colors showing white text on dark background demonstrating color inversion effect

画像の特定の色を置き換えるにはどうすればよいですか?

特定の色に置き換えて、要素を強調したり、強調しなかったりします。 テキストを目立たせたり、問題のあるコントラストを修正したりする場合に使用します。

なぜ色の置き換えにおいて公差が重要なのか

ReplaceColorメソッドは、現在の色、新しい色、および許容値を必要とします。 より高い耐性は、ぼやけた画像をよりよく処理します。

許容誤差は、ピクセルがターゲットカラーとどの程度一致しなければならないかを決定します。 低い値(0~50)が均一な色に適しています。 高い値(100~200)は、アンチエイリアステキストや圧縮アーチファクトを処理します。 これは、インクのにじみや紙の質感によってばらつきが生じるスキャン文書に役立ちます。

色の置き換えを実装するにはどうすればよいですか?

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

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

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
IronSoftware.Drawing.Color currentColor = new IronSoftware.Drawing.Color("#DB645C");
IronSoftware.Drawing.Color newColor = IronSoftware.Drawing.Color.DarkCyan;

// Replace color
imageInput.ReplaceColor(currentColor, newColor, 80);

// Export the modified image
imageInput.SaveAsImages("replaceColor");
$vbLabelText   $csharpLabel

高度な色置換シナリオをどのように扱えばよいですか?

複雑なシナリオのために複数の置換を連鎖させます:

/* :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-multiple-replacements.cs */
// Replace multiple colors in sequence
using var imageInput = new OcrImageInput("multi-color-document.jpg");

// Replace red text with black
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Red, IronSoftware.Drawing.Color.Black, 70);

// Replace blue headers with dark gray
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Blue, IronSoftware.Drawing.Color.DarkGray, 60);

// Replace light yellow background with white
imageInput.ReplaceColor(new IronSoftware.Drawing.Color("#FFFACD"), IronSoftware.Drawing.Color.White, 40);

// Perform OCR on the cleaned image
var result = ocrTesseract.Read(imageInput);
/* :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-multiple-replacements.cs */
// Replace multiple colors in sequence
using var imageInput = new OcrImageInput("multi-color-document.jpg");

// Replace red text with black
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Red, IronSoftware.Drawing.Color.Black, 70);

// Replace blue headers with dark gray
imageInput.ReplaceColor(IronSoftware.Drawing.Color.Blue, IronSoftware.Drawing.Color.DarkGray, 60);

// Replace light yellow background with white
imageInput.ReplaceColor(new IronSoftware.Drawing.Color("#FFFACD"), IronSoftware.Drawing.Color.White, 40);

// Perform OCR on the cleaned image
var result = ocrTesseract.Read(imageInput);
$vbLabelText   $csharpLabel

複雑な色の置換については、画像補正フィルターを参照してください。

色置換の視覚的な結果は何ですか?

Text sample with orange-red colored names and content on blue background showing original colors before replacement
Document after color replacement showing dark cyan headers replacing original orange-red text

特定のテキストの色だけを読むにはどうすればよいですか?

SelectTextColorメソッドを使用して、特定のテキスト色を読み取ります。 ターゲットカラーと許容範囲(0~255)を指定してください。 許容誤差は、R、G、B値について、ピクセルと選択された色との間の許容可能な差異を表します。

色の許容範囲は結果にどのように影響しますか?

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-select-text-color.cs
using IronOcr;
using System;

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

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Text color to focus on
IronSoftware.Drawing.Color focusColor = new IronSoftware.Drawing.Color("#DB645C");

// Specify which text color to read
imageInput.SelectTextColor(focusColor, 60);

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output result to console
Console.WriteLine(ocrResult.Text);
$vbLabelText   $csharpLabel

色分けされたセクションのあるフォーム、ハイライトされたテキストの抽出、特定の警告メッセージの読み取りには、選択的なカラー読み取りを使用します。 構造化データ抽出については、高度な処理についてはOcrResult Classを参照してください。

カラー選択からどのような出力が期待できますか?

OCRの結果は、オレンジ色のテキストのみを読み取ります:

OCRで抽出されたオレンジ色のテキストを示すデバッグコンソール:ビジネス文書からMASAYOSHI SONとYASUMITSU SHIGETAを抽出したデバッグコンソール

フィルタを適用して変更した PDF を保存するには?

IronOCRはフィルタの有無にかかわらず、変更されたPDFを保存します。 SaveAsSearchablePdfメソッドの2番目のパラメータは、フィルタを適用して保存するかどうかを指定します。

検索可能なPDFの実装とは何ですか?

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

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

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

// Apply gray scale filter
ocrInput.ToGrayScale();
OcrResult result = ocr.Read(ocrInput);

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

保存したPDFにフィルタを適用するのはいつですか?

よりクリーンで読みやすいドキュメントを作成するには、フィルタを適用します。 これは、アーカイブ目的や異なるデバイス間でのドキュメント共有に役立ちます。 詳細については、OCRで検索可能なPDFを作成するを参照してください。

テーブルを含む複雑なドキュメントについては、Read Table in Document で特殊な抽出をお試しください。 大量の処理については、Multithreaded Tesseract OCR を参照して、複数のドキュメントにまたがるフィルターアプリケーションを最適化してください。

よくある質問

OCRの精度に影響する画像の色の悪さを修正するにはどうすればよいですか?

IronOCRは二値化、グレースケール変換、反転、色置換を含むいくつかの色補正方法を提供します。これらのフィルターは、テキストと背景のコントラストを強調することでテキストの可読性を向上させ、OCRエンジンが色品質の悪い画像からテキストを正確に抽出することを容易にします。

二値化とは何ですか?

二値化は、IronOCRの二値化メソッドを使用して画像を二色形式(通常は白黒)に変換します。画像を分析し、分離に最適なしきい値を決定することで、テキストと背景を明確に区別するため、照明ムラや背景ノイズのあるスキャン文書に特に効果的です。

画像から特定の色のテキストだけを抽出する方法を教えてください。

IronOCRのSelectTextColorメソッドは、複雑な画像操作をすることなく、特定のテキスト色にOCRをフォーカスすることができます。例えばSelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60)のように、対象となる色と許容範囲を指定するだけで、その色範囲のテキストのみを抽出することができます。

画像を2値化せずにグレースケールに変換するのはどのような場合ですか?

IronOCRのToGrayScaleメソッドは、テキスト認識の妨げとなる色付きの背景や透かしを扱う場合に使用します。二値化とは異なり、グレースケールは微妙に変化する画像のディテールを保持するので、視覚的な乱雑さを抑えながら画質を維持する必要がある場合に最適です。

カラーフィルターの結果を見るために、補正した画像をエクスポートできますか?

はい、IronOCRはSaveAsImagesメソッドを提供し、色調補正後の画像をエクスポートします。これにより、補正前と補正後の結果を比較することができ、どの色補正方法が特定の画像に最適かを判断するのに役立ちます。

自分の画像に最適な色調補正フィルタを決定するにはどうすればよいですか?

IronOCRには、画像に最適なフィルターの組み合わせを決定するのに役立つフィルターウィザードツールが含まれています。バッチ処理では、二値化のような複数のフィルターを他の前処理技術と組み合わせることで、文書の種類に最適なOCR結果を得ることができます。

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

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

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

レビュー済み
Jeff Fritz
Jeffrey T. Fritz
プリンシパルプログラムマネージャー - .NETコミュニティチーム
Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。
準備はできましたか?
Nuget ダウンロード 5,299,091 | バージョン: 2025.12 リリース