Guide to using IronOCR Filters

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

IronOCRは、フィルターによる前処理が必要な画像を読み取るために必要なツールを提供します。 画像を加工できるように操作できるフィルターの幅広い配列から選択できます。

クイックスタート: OCR画像をクリーンアップするためにフィルタを適用するとして

たった1回の簡単な呼び出しの連鎖で、ノイズ除去、2値化、傾き補正フィルタを適用し、OCRの前にスキャンの鮮明度を向上させることができます。 この例では、IronOCRのビルトインフィルターを使って画像を簡単に補正し、すぐに使い始めることができることを示しています。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr

  2. Copy and run this code snippet.

    using var input = new IronOcr.OcrInput("scan.jpg"); input.DeNoise(true).Binarize().Deskew(45); var result = new IronOcr.IronTesseract().Read(input);
  3. Deploy to test on your live environment

    Start using IronOCR in your project today with a free trial
    arrow pointer

OCR画像フィルターの一覧

以下の画像フィルタは、パフォーマンスを向上させます:

  • 画像の向きを変更するフィルタ</code
    • Rotate-画像を時計回りに何度回転させるかを指定します。反時計回りの場合は負の数を使用します。
    • Deskew - 画像を回転させ、直交するようにします。 Tesseractの斜めスキャンに対する許容度は5度と低いため、これはOCRに非常に有効です。
    • Scale - OCR入力ページを比例して拡大縮小します。
  • 画像の色を操作するフィルタ</code
    • Binarize-この画像フィルタは、すべてのピクセルを白か黒にします。 テキストと背景のコントラストが非常に低い場合、OCRのパフォーマンスが向上する可能性があります。
    • ToGrayScale - この画像フィルタは、すべてのピクセルをグレーの濃淡に変換します。 OCRの精度が向上する可能性は低いが、スピードが向上する可能性はある。
    • Invert - すべての色を反転します。 例:白は黒に、黒は白になります。
    • ReplaceColor - 画像の色を、ある閾値内で別の色に置き換えます。
  • 画像のコントラストを改善するフィルタ</code
    • コントラスト - 自動的にコントラストを上げます。 このフィルターを使用すると、低コントラストのスキャンでOCRの速度と精度が向上することがよくあります。
    • Dilate<//code> - 高度な形態素解析。 画像内のオブジェクトの境界にピクセルを追加します。 Erodeの反対語。
    • Erode<//code> - 高度な形態素解析。 Erosion_は、オブジェクトの境界からピクセルを削除します。 Dilateの反対。
  • 画像ノイズを低減するフィルタ</code
    • Sharpen - ぼやけた OCR ドキュメントをシャープにし、アルファ チャンネルを白に平らにします。
    • DeNoise - デジタルノイズを除去します。このフィルタは、ノイズが予想されるシナリオでのみ使用する必要があります。
    • DeepCleanBackgroundNoise - 重い背景ノイズを除去します。 このフィルタは、きれいな文書のOCR精度を低下させる可能性があり、CPUに負荷がかかるため、極端な文書背景ノイズがわかっている場合にのみ使用してください。
    • EnhanceResolution-低画質画像の解像度を向上させます。 このフィルタは、_OcrInput.MinimumDPIOcrInput.TargetDPI_が低解像度の入力を自動的にキャッチして解決するため、あまり必要とされません。

フィルタの例と使い方

次の例では、コード内でフィルタを適用する方法を示します。

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-1.cs
using 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)
$vbLabelText   $csharpLabel

デバッグ フィルタ / フィルタは何をしているのですか

プログラム内で画像やBarCodeの読み取りが困難な場合は、フィルタリング結果の画像を保存する方法があります。 こうすることで、各フィルターが何を行い、どのように画像を操作しているかを正確にデバッグして確認することができます。

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-2.cs
using 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)
$vbLabelText   $csharpLabel

フィルターの使用例

回転</h3

APIリファレンス.

フィルタの説明

Rotate は、画像に既知の回転を手動で設定し、最も直線に近づけるために使用するフィルターです。 IronOCRはDeskew()を実行する機能を持っていますが、その許容範囲はかなり狭く、ほぼ完全にまっすぐな画像(15度以内)に使用するのがベストです。 入力画像が90度ずれていたり、逆さまになっていたりする場合は、Rotate()を呼び出す必要があります。

ユースケース コード例

これは、逆さまの画像を修正するためにRotateを呼び出す例です:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-3.cs
using 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)
$vbLabelText   $csharpLabel
BeforeInput.Rotate(180)``のようにします。 Input.Rotate(180)``

デスキュー

APIリファレンス.

フィルタの説明

ハフ変換を使用して、一定の許容範囲内で画像をまっすぐにしようとします。 文書が傾いていると誤読を招く可能性があるため、完全にまっすぐでない画像は重要です。

ご注意このメソッドは、フィルタが適用された場合はtrue、画像の向きを検出できなかったために適用に失敗した場合はfalseとなるブール値を返します。 ページの向きを定義するコンテンツがない場合は失敗します。]

ユースケース コード例

これは、傾いた画像を修正するためにDeskewを呼び出した例です:

:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-4.cs
using 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 If
$vbLabelText   $csharpLabel
Before()Deskew()``のようにします。 `Deskew()の後`。

規模

APIリファレンス.

フィルタの説明

Scaleは、すでにあるピクセルを使って画像のサイズを変更するのに役立つ画像操作フィルタです。 これは、画像が数十ピクセル幅しかなく、各バーが1ピクセルであるため、BarCodeがスキャンされない場合や、アンチエイリアシングがなくテキストが小さすぎる場合に使用できます。

[i:(バーコードがよく読み取れる1000px x 1000pxのバーコードサイズにはスイートスポットがあり、バーコードが見つからない場合は考慮する必要があります