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結果を得ます。

  1. IronOCR をNuGetパッケージマネージャでインストール

    PM > Install-Package IronOcr
  2. このコード スニペットをコピーして実行します。

    new IronTesseract().Read(new IronOcr.OcrImageInput("sample.jpg").SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60));
  3. 実際の環境でテストするためにデプロイする

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

    arrow pointer


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

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

2値化はなぜOCRの精度を向上させるのでしょうか

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

二値化は、照明ムラや背景ノイズのあるスキャン文書に適しています。このアルゴリズムは画像を分析し、前景テキストと背景を分離するための最適なしきい値を決定します。 高度な前処理技術については、OCR Image Optimization Filters ガイドを参照してください。

二値化のコード実装とは

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

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

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Apply binarize affect
imageInput.Binarize();

// Export the modified image
imageInput.SaveAsImages("binarize.jpg");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Apply binarize affect
imageInput.Binarize()

' Export the modified image
imageInput.SaveAsImages("binarize.jpg")
$vbLabelText   $csharpLabel

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

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

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

二値化前の OCR の課題を示す、青灰色の背景に赤と黒のテキストがあるサンプル画像
最適な OCR 処理のために、純白の背景に鮮明な黒いテキストを示す二値化バージョン

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

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

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

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();
' Apply grayscale affect
imageInput.ToGrayScale()
$vbLabelText   $csharpLabel

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

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

グレースケール変換前の複数の色を示す、赤い見出しと黒い本文テキストのサンプルテキスト
変換後の読み取りやすさの向上を示す、テック企業幹部に関する鮮明なテキストを含むグレースケールのドキュメント

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

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

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

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

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

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

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

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

Invertメソッドをグレースケールありおよびなしで比較します:

元の色チャンネルを維持しつつ値を反転させた色反転済みのドキュメント
色反転効果を示す、暗い背景に白いテキストを表示した色反転済みのビジネステキスト

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

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

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

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");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
Private currentColor As New IronSoftware.Drawing.Color("#DB645C")
Private newColor As IronSoftware.Drawing.Color = 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-6.cs
/* :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);
Imports IronSoftware.Drawing

' Replace multiple colors in sequence
Using imageInput As New OcrImageInput("multi-color-document.jpg")

    ' Replace red text with black
    imageInput.ReplaceColor(Color.Red, Color.Black, 70)

    ' Replace blue headers with dark gray
    imageInput.ReplaceColor(Color.Blue, Color.DarkGray, 60)

    ' Replace light yellow background with white
    imageInput.ReplaceColor(New Color("#FFFACD"), Color.White, 40)

    ' Perform OCR on the cleaned image
    Dim result = ocrTesseract.Read(imageInput)

End Using
$vbLabelText   $csharpLabel

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

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

置換前の元の色を示す、青い背景にオレンジレッド色の名前と内容があるテキストサンプル
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);
Imports IronOcr
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Text color to focus on
Private focusColor As New IronSoftware.Drawing.Color("#DB645C")

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

' Perform OCR
Dim ocrResult As 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;

// Create OCR engine: filters are applied at the OcrInput level, so no configuration changes are needed here
var ocr = new IronTesseract();
var ocrInput = new OcrInput();

// Load the scanned PDF as the OCR source
ocrInput.LoadPdf("invoice.pdf");

// Convert to grayscale: removes color noise that can reduce OCR accuracy on color-printed documents
ocrInput.ToGrayScale();
// Run OCR on the preprocessed input
OcrResult result = ocr.Read(ocrInput);

// Write the searchable PDF; true = embed the grayscale-filtered image rather than the original color scan
result.SaveAsSearchablePdf("outputGrayscale.pdf", true);
Imports IronOcr

' Create OCR engine: filters are applied at the OcrInput level, so no configuration changes are needed here
Dim ocr As New IronTesseract()
Dim ocrInput As New OcrInput()

' Load the scanned PDF as the OCR source
ocrInput.LoadPdf("invoice.pdf")

' Convert to grayscale: removes color noise that can reduce OCR accuracy on color-printed documents
ocrInput.ToGrayScale()
' Run OCR on the preprocessed input
Dim result As OcrResult = ocr.Read(ocrInput)

' Write the searchable PDF; True = embed the grayscale-filtered image rather than the original color scan
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結果を得ることができます。

IronOCRは既存のアプリケーションに統合できますか?

IronOCRはC#を使用して既存のアプリケーションに簡単に統合できるよう設計されており、開発者がソフトウェアにOCR機能を少ない手間で追加できるようにします。

ドキュメント管理でIronOCRを使用する利点は何ですか?

IronOCRを使用することで、スキャンされた文書を検索可能かつ編集可能なテキストに変換し、手作業によるデータ入力を減らし、文書のアクセス性を向上させることでワークフローを効率化します。

IronOCRはデータ精度をどのように向上させますか?

IronOCRはその高度な認識アルゴリズムと画像補正機能により、信頼性が高く正確なテキスト抽出プロセスを保証します。

IronOCRの無料トライアルを利用できますか?

はい、Iron SoftwareはIronOCRの無料トライアルを提供しており、ユーザーが購入決定をする前にその機能と能力をテストできます。

Curtis Chau
テクニカルライター

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 ダウンロード 6,136,090 | バージョン: 2026.7 リリースされたばかり
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronOcr
サンプルを実行 あなたの画像が検索可能なテキストになるのをご覧ください。