C# を使用した画像処理における傾き補正

画像処理における傾き補正は、画像最適化のタスクです。コンピューター ビジョンでは、カメラとセンサーを正しく配置する必要がありますが、これは多くの場合、大きな歪みにつながります。同様に、スキャナーでスキャンする場合、位置合わせがほとんど不可能な場合があります。このため、スキャンした画像や写真にはわずかなゆがみ(傾き)があります。この記事では、C# を使用して画像処理でスキュー補正を実行する方法を学習します。

この記事では、次のトピックについて説明します。

  1. C# 傾き補正画像処理 API
  2. 画像の傾き角度を検出
  3. 自動傾き補正
  4. 前処理フィルタによる自動傾き補正
  5. 自動傾き補正で画像テキストを認識
  6. 手動スキュー補正
  7. 前処理フィルタによる手動傾き補正

C# 傾き補正画像処理 API

スキュー補正には、Aspose.OCR for .NET API を使用します。この API を使用すると、スキャンした画像、スマートフォンの写真、スクリーンショット、画像の領域、およびスキャンした PDF に対して OCR を実行できます。認識されたテキスト結果を一般的なドキュメント形式で保存できます。

APIのDLLをダウンロードするか、NuGetを使ってインストールしてください。

PM> Install-Package Aspose.OCR

C# で画像の傾き角度を検出する

API は、提供されたソース イメージの傾斜角を計算する CalculateSkew(string) メソッドを提供します。以下の手順に従って、テキスト画像の傾き角度を簡単に検出できます。

  1. まず、AsposeOCR クラスのインスタンスを作成します。
  2. CalculateSkew() メソッドを呼び出します。画像パスを引数として取ります。
  3. 最後に、計算されたスキュー角度を表示します。

次のサンプル コードは、C# で画像の傾斜角を計算する方法を示しています。

// このコード例は、画像の傾斜角を計算する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOcr recognitionEngine = new AsposeOcr();

// スキュー角度を計算する
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");

// 角度を表示
Console.WriteLine($"Skew angle: {skew:N1}°");
C# で画像の傾き角度を検出する

ソース画像。

Skew angle: 5.8°

C# での自動スキュー補正

自動スキュー補正の場合、以下の手順に従って、認識設定で RecognitionSettings.AutoSkew プロパティを有効にできます。

  1. まず、AsposeOCR クラスのインスタンスを作成します。
  2. 次に、RecognitionSettings クラスのオブジェクトを初期化します。
  3. 次に、AutoSkew プロパティを true に設定します。
  4. その後、ソース画像と RecognitionSettings オブジェクトを指定して RecognizeImage() メソッドを呼び出します。
  5. 最後に、認識されたテキストを表示します。

次のサンプル コードは、C# で自動スキュー補正を適用する方法を示しています。

// このコード例は、自動スキュー補正を適用する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOcr recognitionEngine = new AsposeOcr();

// 認識設定で自動傾き補正を有効にする
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;

// 画像認識
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// 認識されたテキストを表示
Console.WriteLine(result.RecognitionText);

C# の前処理フィルターを使用した自動スキュー補正

または、AutoSkew 前処理フィルターを自動スキュー補正に適用し、以下の手順に従って補正された画像を保存することもできます。

  1. まず、AsposeOCR クラスのインスタンスを作成します。
  2. 次に、PreprocessingFilter クラスのオブジェクトを初期化します。
  3. 次に、AutoSkew() フィルターを追加します。
  4. その後、PreprocessImage() メソッドを呼び出して、ソース イメージにフィルターを適用します。
  5. 最後に、修正した画像を保存します。

次のサンプル コードは、C# で前処理フィルターを使用して自動スキュー補正を適用する方法を示しています。

// このコード例は、前処理フィルターを使用して自動スキュー補正を適用し、補正された画像を保存する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOcr recognitionEngine = new AsposeOcr();

// デスキュー フィルタを追加
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// 前処理された画像をファイルに保存
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
    using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
    {
        ms.WriteTo(fs);
    }
}
C# のフィルターを使用した自動スキュー補正

C# のフィルターを使用した自動スキュー補正。

C# で自動スキュー補正を使用して画像テキストを認識する

以下の手順に従って、AutoSkew 前処理フィルターを適用し、画像テキストを認識できます。

  1. まず、AsposeOCR クラスのインスタンスを作成します。
  2. 次に、PreprocessingFilter クラスのオブジェクトを初期化します。
  3. 次に、AutoSkew() フィルターを追加します。
  4. その間に、RecognitionSettings クラスのインスタンスを作成します。
  5. 次に、フィルタを PreprocessingFilters プロパティに割り当てます。
  6. その後、ソース画像と RecognitionSettings オブジェクトを指定して RecognizeImage() メソッドを呼び出します。
  7. 最後に、認識されたテキストを表示します。

次のサンプル コードは、自動スキュー補正を適用し、C# でテキストを認識する方法を示しています。

// このコード例は、前処理フィルターを使用して自動傾き補正を適用し、画像を認識する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOcr recognitionEngine = new AsposeOcr();

// デスキュー フィルタを追加
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// 前処理フィルターを認識設定に追加する
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// 画像認識
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// 結果を示す
Console.WriteLine(result.RecognitionText);

C# での手動スキュー補正

手動の傾き補正の場合、以下の手順に従って、認識設定で SkewAngle プロパティを指定することにより、傾き角度を手動で定義できます。

  1. まず、AsposeOCR クラスのインスタンスを作成します。
  2. 次に、RecognitionSettings クラスのオブジェクトを初期化します。
  3. 次に、SkewAngle プロパティを設定します。
  4. その後、ソース画像と RecognitionSettings オブジェクトを指定して RecognizeImage() メソッドを呼び出します。
  5. 最後に、認識されたテキストを表示します。

次のサンプル コードは、C# で手動スキュー補正を適用する方法を示しています。

// このコード例は、手動スキュー補正を適用する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOcr recognitionEngine = new AsposeOcr();

// スキュー角度を手動で設定する
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;

// 画像認識
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// 結果の表示
Console.WriteLine(result.RecognitionText);

C# の前処理フィルターを使用した手動スキュー補正

Rotate 前処理フィルターを使用して指定された角度まで画像を回転させることで、手動で傾斜角を定義することもできます。

スキュー補正を手動で適用するには、以下の手順に従ってください。

  1. まず、AsposeOCR クラスのインスタンスを作成します。
  2. 次に、PreprocessingFilter クラスのオブジェクトを初期化します。
  3. 次に、AutoSkew() フィルターを追加します。
  4. その間に、RecognitionSettings クラスのインスタンスを作成します。
  5. 次に、フィルタを PreprocessingFilters プロパティに割り当てます。
  6. その後、ソース画像と RecognitionSettings オブジェクトを指定して RecognizeImage() メソッドを呼び出します。
  7. 最後に、認識されたテキストを表示します。

次のサンプル コードは、C# で前処理フィルターを使用して手動スキュー補正を適用する方法を示しています。

// このコード例は、手動の傾き補正を適用して画像テキストを認識する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOcr recognitionEngine = new AsposeOcr();

// 画像を反時計回りに 90 度回転します
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));

// デバッグ目的で前処理された画像をファイルに保存します
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
    using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
    {
        ms.WriteTo(fs);
    }
}

// 前処理フィルターを認識設定に追加する
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// 画像認識
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// 結果を示す
Console.WriteLine(result.RecognitionText);

無料の評価ライセンスを取得する

無料の一時ライセンスを取得して、評価制限なしで Aspose.OCR for .NET を試すことができます。

結論

この記事では、次の方法を学びました。

  • OCR を実行し、画像上のテキストを認識します。
  • フィルターを適用して画像を処理します。
  • 認識設定を使用します。
  • C# を使用して修正した画像を保存します。

C# を使用した画像処理でのスキュー補正の他に、ドキュメント を使用して Aspose.OCR for .NET API について詳しく知ることができます。ご不明な点がございましたら、無料サポート フォーラム までお気軽にお問い合わせください。

関連項目