C#で画像の色を修正して文字認識・テキスト抽出の精度を向上させる方法
C#でIronOCRの二値化、グレースケール、反転、色置換メソッドを使って画像の色を修正し、文字認識の可読性とテキスト抽出精度を向上させます。 ターゲット抽出のために特定のテキストの色をお読みください。
クイックスタート: 特定のテキスト色を分離する
IronOCR の SelectTextColor メソッドを使用して、OCR を特定のテキスト色に集中させます。複雑な画像操作は必要ありません。 画像を読み込み、テキストの色と許容範囲を選択し、そのテキストのみを抽出して正確なOCR結果を得ます。
C#で読み取り用に画像の色を修正する方法
- 画像の色を修正するためのC#ライブラリをダウンロードする
- 読み取り用にPDFドキュメントと画像をインポートする
- カラー効果の適用:二値化、グレースケール、反転、色置換
- ビューイング用に修正された画像をエクスポート
- `SelectTextColor`を使用して特定のテキスト色を読み取ります。
OCRを向上させるために画像を2値化するには?
2値化は、画像を2色形式(通常は白黒)に変換します。これにより、テキストと背景が分離され、ノイズが減少するため、テキストがより明瞭になり、読みやすくなります。
2値化はなぜOCRの精度を向上させるのでしょうか
Binarize メソッドを使用して 2 値化を適用します。 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")
バッチ処理では、2値化と他のフィルタを組み合わせてください。 フィルタウィザードを使用して、画像に最適なフィルタの組み合わせを決定します。
結果をエクスポートして比較するにはどうすればよいですか?
SaveAsImages メソッドを使用して変更された画像をエクスポートします。 二値化前と二値化後の画像を比較してください。
ビフォー
アフター
読みやすくするために画像をグレースケールに変換するにはどうすればよいですか?
画像をグレースケールに変換することで、視覚的な乱れを減らし、読みやすさを向上させます。 オリジナルカラーがコンテンツの邪魔になる場合にも役立ちます。
他の方法よりもグレースケールを使用すべきなのはどのような場合ですか?
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()
さまざまな画像品質のため、グレースケールと他の前処理ステップを組み合わせてください。 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()
ドキュメントの種類が混在するバッチ処理では、自動的に暗い背景を検出する機能を実装します。 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")
高度な色置換シナリオをどのように扱えばよいですか?
複雑なシナリオのために複数の置換を連鎖させます:
/* :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);
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
複雑な色の置換については、画像補正フィルターを参照してください。
色置換の視覚的な結果は何ですか?
ビフォー
アフター
特定のテキストの色だけを読むにはどうすればよいですか?
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)
色分けされたセクションのあるフォーム、ハイライトされたテキストの抽出、特定の警告メッセージの読み取りには、選択的なカラー読み取りを使用します。 構造化データ抽出については、高度な処理についてはOcrResult Classを参照してください。
カラー選択からどのような出力が期待できますか?
OCRの結果は、オレンジ色のテキストのみを読み取ります:
フィルタを適用して変更した 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)
保存した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結果を得ることができます。

