C# ガイド: IronOCR 画像フィルターを使用して OCR を向上させる
IronOCR は、フィルターの形で前処理が必要な可能性のある画像を読み取るために必要なツールを提供します。 画像を処理可能な状態にするための、さまざまなフィルターから選択できます。
クイックスタート: フィルターを適用して OCR 画像をクリーンアップする
たった 1 回の簡単な呼び出しの連鎖で、DeNoise、Binarize、Deskew フィルタを適用して、OCR の前にスキャンの鮮明度を向上させることができます。 この例では、IronOCR の組み込みフィルターを使用して画像を簡単に強化し、すぐに開始できる方法を示します。
今すぐ NuGet で PDF を作成してみましょう:
NuGet パッケージ マネージャーを使用して IronOCR をインストールします
このコード スニペットをコピーして実行します。
using var input = new IronOcr.OcrInput("scan.jpg"); input.DeNoise(true).Binarize().Deskew(45); var result = new IronOcr.IronTesseract().Read(input);実際の環境でテストするためにデプロイする
OCR画像フィルターのリスト
次の画像フィルターを使用すると、パフォーマンスを大幅に向上できます。
Filters to change the Image OrientationRotate- 画像を時計回りに指定角度回転します。反時計回りに回転する場合は、負の数を入力してください。Deskew- 画像を正しい向きで直交するように回転します。 Tesseract の斜めスキャンの許容度は 5 度まで低いため、これは OCR に非常に役立ちます。Scale- OCR 入力ページを比例的に拡大縮小します。
Filters to manipulate Image ColorsBinarize- この画像フィルターは、すべてのピクセルを中間のない黒または白に変換します。 これにより、テキストと背景のコントラストが非常に低い場合に OCR のパフォーマンスが向上する可能性があります。ToGrayScale- この画像フィルターは、すべてのピクセルをグレーの階調に変換します。 OCR の精度が向上する可能性は低いですが、速度は向上する可能性があります。Invert- すべての色を反転します。 たとえば、白は黒になり、黒は白になります。ReplaceColor- 特定のしきい値内で、画像内の色を別の色に置き換えます。
Filters to improve Contrast in an ImageContrast- コントラストを自動的に上げます。 このフィルターにより、低コントラストのスキャンでの OCR 速度と精度が向上することがよくあります。Dilate- 高度な形態学。 膨張 は、画像内のオブジェクトの境界にピクセルを追加します。 Erode の反対。Erode- 高度な形態学。 Erosion はオブジェクトの境界からピクセルを削除します。 Dilate の反対。
Filters to reduce Image NoiseSharpen- ぼやけた OCR ドキュメントをシャープ化し、アルファ チャネルを白に平坦化します。DeNoise- デジタルノイズを除去します。このフィルターは、ノイズが予想される場合にのみ使用してください。DeepCleanBackgroundNoise- 重度のバックグラウンド ノイズを除去します。 このフィルターは、クリーンなドキュメントの OCR 精度を低下させる可能性があり、CPU を大量に消費するため、ドキュメントの背景に極端なノイズがあることがわかっている場合にのみ使用してください。EnhanceResolution- 低品質の画像の解像度を高めます。OcrInput.MinimumDPIとOcrInput.TargetDPIは低解像度の入力を自動的にキャッチして解決するため、このフィルターが必要になることはあまりありません。
フィルターの例と使用方法
次の例では、コード内でフィルターを適用する方法を示します。
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-1.csusing IronOcr;
using System;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("my_image.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);Imports IronOcr
Imports System
Private ocr = New IronTesseract()
Private input = New OcrInput()
input.LoadImage("my_image.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)デバッグ フィルター / フィルターは何をしているのですか?
プログラム内で画像やバーコードを読み取るのが難しい場合は、フィルタリングされた結果の画像を保存する方法があります。 この方法により、各フィルターが何を実行し、どのように画像を操作しているかを正確にデバッグして確認できます。
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-2.csusing IronOcr;
using System;
var file = "skewed_image.tiff";
var ocr = new IronTesseract();
using var input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(file, pageindices);
// Here we apply the filter: Deskew
input.Deskew();
// Save the input with filter(s) applied
input.SaveAsImages("my_deskewed");
// We read, then print the text to the console
var result = ocr.Read(input);
Console.WriteLine(result.Text);Imports IronOcr
Imports System
Private file = "skewed_image.tiff"
Private ocr = New IronTesseract()
Private input = New OcrInput()
Private pageindices = New Integer() { 1, 2 }
input.LoadImageFrames(file, pageindices)
' Here we apply the filter: Deskew
input.Deskew()
' Save the input with filter(s) applied
input.SaveAsImages("my_deskewed")
' We read, then print the text to the console
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)フィルターの使用例
回転
フィルターの説明
回転は、画像に既知の回転を手動で設定して、画像を真っ直ぐに近づけるために使用されるフィルターです。 IronOCR にはDeskew()を実行する機能がありますが、その許容範囲はかなり狭く、ほぼ完全にまっすぐな画像 (15 度以内程度) に最適です。 入力画像が 90 度ずれているか、上下逆さまになっている場合は、 Rotate()を呼び出す必要があります。
ユースケースコード例
これは、Rotate()を呼び出して逆さまの画像を修正する例です:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-3.csusing IronOcr;
using System;
var image = "screenshot.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Rotate 180 degrees because image is upside-down
input.Rotate(180);
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);Imports IronOcr
Imports System
Private image = "screenshot.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Rotate 180 degrees because image is upside-down
input.Rotate(180)
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)| Input.Rotate(180) `Before``` | Input.Rotate(180) `After``` |
|---|---|
![]() | ![]() |
デスキュー
フィルターの説明
ハフ変換を使用して、一定の許容範囲内で画像をまっすぐにしようとします。 傾いた文書は読み間違える可能性があるため、画像が完全にまっすぐでない場合はこれが重要です。
ユースケースコード例
これは、傾いた画像を修正するためにDeskew()を呼び出す例です:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-4.csusing IronOcr;
using System;
var image = @"paragraph_skewed.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply deskew with 15 degree snap
bool didDeskew = input.Deskew(15);
if (didDeskew)
{
// Read image into variable: result
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
else
{
Console.WriteLine("Deskew not applied because Image Orientation could not be determined.");
}Imports IronOcr
Imports System
Private image = "paragraph_skewed.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply deskew with 15 degree snap
Dim didDeskew As Boolean = input.Deskew(15)
If didDeskew Then
' Read image into variable: result
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
Else
Console.WriteLine("Deskew not applied because Image Orientation could not be determined.")
End IfScale
フィルターの説明
スケールは、既存のピクセルを使用して画像のサイズを変更するのに役立つ便利な画像操作フィルターです。 これは、画像の幅が数十ピクセルしかなく、各バーが 1 ピクセルであるためバーコードがスキャンされない場合、またはテキストが小さすぎてアンチエイリアシングがない場合に使用できます。
1000px x 1000pxです。バーコードが見つからない場合は、このサイズを考慮する必要があります。ユースケースコード例
これは、Scale()を呼び出して、バーコードのバー間のギャップを拡大してスキャンする例です:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-5.csusing IronOcr;
using System;
var image = @"small_barcode.png";
var ocr = new IronTesseract();
// Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = true;
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply scale
input.Scale(400); // 400% is 4 times larger
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);Imports IronOcr
Imports System
Private image = "small_barcode.png"
Private ocr = New IronTesseract()
' Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = True
Dim input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply scale
input.Scale(400) ' 400% is 4 times larger
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)ビナライズ
フィルターの説明
2 値化フィルターは、適応アルゴリズムに応じて、画像内のすべてのピクセルを黒または白に分類します。 これにより、すべての色が削除され、背景がフラットな白に分離され、テキストとして認識されたものはすべて読みやすいように完全な黒になります。
ユースケースコード例
これは、Binarize()を呼び出して、色つきのテキストを揃え、背景色やノイズを除去する例です:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-6.csusing IronOcr;
using System;
var image = @"no-binarize.jpg";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply Binarize
input.Binarize();
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);Imports IronOcr
Imports System
Private image = "no-binarize.jpg"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply Binarize
input.Binarize()
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)| Binarize() `Before``` | Binarize() `After``` |
|---|---|
![]() | ![]() |
反転
フィルターの説明
IronOCR は、画像がblack text on a white backgroundである場合に最もよく読み取られます。 Invertフィルタは、画像上のすべての色を反転させることによってこれを達成するために使用されます。
ユースケースコード例
これは、Invert()を呼び出して、黒地に白を白地に黒にする例です:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-7.csusing IronOcr;
using System;
var image = @"before-invert.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply Invert
input.Invert(true);
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);Imports IronOcr
Imports System
Private image = "before-invert.png"
Private ocr = New IronTesseract()
Private input = New OcrInput()
' Load at least one image
input.LoadImage(image)
' Apply Invert
input.Invert(True)
' Read image into variable: result
Dim result = ocr.Read(input)
' Example print to console
Console.WriteLine(result.Text)Before | After |
|---|---|
![]() | ![]() |
よくある質問
画像フィルターは C# で OCR の精度をどのように向上させますか?
IronOCR の画像フィルターは、画像を前処理して品質を向上させることで、OCR の精度を高めることができます。バイナライズやコントラストなどのフィルターは、色とコントラストを調整することで読みやすさを高め、回転や傾き補正は画像の向きを修正します。
画像の向きを修正するためにはどのフィルターが利用可能ですか?
IronOCR は、画像の向きの問題を解決するために、回転と傾き補正フィルターを提供します。回転は画像の角度を手動で調整し、傾き補正はわずかに傾いた画像を自動でまっすぐにします。
バイナライズフィルターは画像の前処理にどのような影響を与えますか?
IronOCR のバイナライズフィルターは、画像のピクセルを黒と白に変換し、背景色を除去してテキストの可視性を高め、特にコントラストの低い状況で OCR の精度を向上させます。
ノイズ削減フィルターを使用するのに適したタイミングはいつですか?
シャープ化やノイズ除去などのノイズ削減フィルターは、画像にデジタルノイズがある場合に使用するべきです。これらのフィルターは画像をクリーンアップし、テキストをより鮮明にして IronOCR の結果を向上させます。
画像の解像度を向上させることで OCR のパフォーマンスが影響を受けますか?
はい、解像度向上フィルターを使用することで、低品質な画像の解像度を上げて OCR のパフォーマンスを向上させることができます。IronOCR のデフォルト設定の MinimumDPI や TargetDPI が通常は十分ですが、必要に応じてこのフィルターによる追加の解像度の向上が可能です。
色調操作フィルターは OCR においてどのような役割を果たしますか?
IronOCR の反転、グレースケール化、バイナライズなどの色調操作フィルターは、テキストの読みやすさを向上させるために画像の色を調整します。反転はカラースキームを変更し、グレースケール化は画像をグレースケールに変換し、バイナライズは画像を黒白に減少させます。
コントラストフィルターとシャープ化フィルターの違いは何ですか?
IronOCR のコントラストフィルターは、明るい部分と暗い部分の違いを大きくし、テキストの明瞭さを向上させ、シャープ化フィルターはエッジを強調してテキストをより鮮明にし、両方ともより良い OCR 認識を支援します。
IronOCR でフィルターした画像を保存してデバッグする方法は?
フィルター適用後に SaveAsImages 関数を使用して、IronOCR でフィルター処理済みの画像を保存してデバッグします。これにより、フィルター効果を視覚化し、前処理ステップで画像品質が向上したことを確認できます。
IronOCR で利用可能な高度な形態学的フィルターは何ですか?
IronOCR は膨張と収縮のような高度な形態学的フィルターを提供します。膨張はオブジェクトの境界にピクセルを追加して特徴を強化し、収縮はそれを除去して、画像の詳細を明確にして OCR の精度を向上させるために使用されます。













