
コンピュータ グラフィックスや画像処理では、画像の傾きは長方形の画像の角度のずれです。画像の傾きまたは歪みとも呼ばれます。 「スキュー」という用語は、画像の角度を指します。画像内の要素の視覚的な位置が均一でない場合、画像のゆがみが発生します。ゆがみにより、角が斜めになったり、一方の辺が他方よりも長くなるようにずれたりする可能性があります。このような写真やスキャンした画像は、ゆがんで見栄えが悪くなります。この記事では、プログラムで画像の歪みを検出する方法を学びます。また、Java で画像の傾きを補正する方法も学びます。
この記事では、次のトピックについて説明します。
画像の傾き補正用 Java API
画像の傾きの検出と修正には、Aspose.OCR for Java API を使用します。スキャンした画像、スマートフォンの写真、スクリーンショット、画像の一部、スキャンした PDF に対して OCR を実行できます。 API では、認識されたテキスト結果を一般的なドキュメント形式で保存することもできます。
API の AsposeOCR クラスは、画像からテキストを認識するためのメイン クラスです。提供されたソース画像の傾斜角を計算する CalcSkewImage(string) メソッドを提供します。また、URI リンクによって提供される画像の傾斜角を計算する別の CalcSkewImageFromUri(String uri) メソッドも提供します。 PreprocessingFilter クラスは、画像処理コマンドの基本クラスです。 API の RecognitionSettings クラスは、画像認識の設定を提供し、認識プロセスをカスタマイズできる要素を含みます。
API の JAR をダウンロードするか、Maven ベースの Java アプリケーションに次の pom.xml 構成を追加してください。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://releases.aspose.com/java/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-ocr</artifactId>
<version>22.9</version>
</dependency>
Java で画像の傾き角度を検出する
以下の手順に従って、テキスト画像の傾き角度を簡単に検出できます。
- まず、AsposeOCR クラスのインスタンスを作成します。
- CalcSkewImage() メソッドを呼び出します。画像パスを引数として取ります。
- 最後に、計算されたスキュー角度を表示します。
次のサンプル コードは、Java で画像の傾斜角度を計算する方法を示しています。
// このコード例は、画像の傾斜角を計算する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOCR api = new AsposeOCR();
// スキュー角度を計算する
double skew = api.CalcSkewImage("C:\\Files\\source.png");
// 角度を表示
System.out.println("Skew angle: " + skew + "°.");
ライブ画像の URL から画像の傾き角度を検出する
以下の手順に従って、ライブ URL から画像の傾斜角を検出することもできます。
- まず、AsposeOCR クラスのインスタンスを作成します。
- CalcSkewImageFromUri() メソッドを呼び出します。画像パスを引数として取ります。
- 最後に、計算されたスキュー角度を表示します。
次のサンプル コードは、Java で画像の傾斜角度を計算する方法を示しています。
// このコード例は、画像の傾斜角を計算する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOCR api = new AsposeOCR();
// スキュー角度を計算する
double skew = api.CalcSkewImageFromUri("https://www.aspose.com/sample-ocr-page.png");
// 角度を表示
System.out.println("Skew angle: " + skew + "°.");
Java での自動画像スキュー補正
以下の手順に従って、画像の傾きを自動的に修正できます。
- まず、AsposeOCR クラスのインスタンスを作成します。
- 次に、PreprocessingFilter クラスのオブジェクトを初期化します。
- 次に、AutoSkew() フィルターを追加します。
- その後、PreprocessImage() メソッドを呼び出して、ソース イメージにフィルターを適用します。
- 最後に、修正した画像を保存します。
次のサンプル コードは、Java で自動スキュー補正前処理フィルターを適用する方法を示しています。
// このコード例は、前処理フィルターを使用して自動傾き補正を適用し、補正された画像を保存する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOCR api = new AsposeOCR();
// デスキュー フィルタを追加
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.AutoSkew());
// 前処理された画像をファイルに保存
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);
Java での自動スキュー補正による画像テキストの認識
以下の手順に従って、自動スキュー補正を適用し、テキストを認識することができます。
- まず、AsposeOCR クラスのインスタンスを作成します。
- 次に、RecognitionSettings クラスのオブジェクトを初期化します。
- 次に、true を引数として setAutoSkew を呼び出します。
- その後、ソース画像と RecognitionSettings オブジェクトを指定して RecognizePage() メソッドを呼び出します。
- 最後に、認識されたテキストを表示します。
次のサンプル コードは、自動スキュー補正を適用して Java でテキストを認識する方法を示しています。
// このコード例は、自動スキュー補正を適用する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOCR api = new AsposeOCR();
// 認識設定で自動傾き補正を有効にする
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setAutoSkew(true);
// 画像認識
RecognitionResult result = api.RecognizePage("C:\\Files\\source.png", recognitionSettings);
// 認識されたテキストを表示
System.out.println(result.recognitionText);
Java での手動画像歪み補正
以下の手順に従って、指定した角度まで画像を回転させることで、手動で傾斜角を定義できます。
- まず、AsposeOCR クラスのインスタンスを作成します。
- 次に、PreprocessingFilter クラスのオブジェクトを初期化します。
- 次に、Rotate() メソッド フィルターを使用して回転角度を追加します。
- 次に、RecognitionSettings クラスのインスタンスを作成します。
- その後、PreprocessImage() メソッドを呼び出して、ソース イメージにフィルターを適用します。
- 最後に、認識されたテキストを表示します。
次のサンプル コードは、Java で前処理フィルターを使用して手動スキュー補正を適用する方法を示しています。
// This code example demonstrates how to apply manual skew correction.
// Create an instance of the AsposeOcr
AsposeOCR api = new AsposeOCR();
// Add deskew filter
PreprocessingFilter filters = new PreprocessingFilter();
filters.add(PreprocessingFilter.Rotate(-90));
// Save preprocessed image to file
BufferedImage imageRes = api.PreprocessImage("C:\\Files\\source.png", filters);
File outputSource = new File("C:\\Files\\result.png");
ImageIO.write(imageRes, "png", outputSource);
Java での手動画像歪み補正による画像テキストの認識
以下の手順に従って、傾斜角度を手動で定義し、テキストを認識することができます。
- まず、AsposeOCR クラスのインスタンスを作成します。
- 次に、RecognitionSettings クラスのオブジェクトを初期化します。
- 次に、setSkew() メソッドを呼び出します。
- その後、ソース画像と RecognitionSettings オブジェクトを指定して RecognizePage() メソッドを呼び出します。
- 最後に、認識されたテキストを表示します。
次のサンプル コードは、手動の傾き補正を適用し、Java で画像テキストを認識する方法を示しています。
// このコード例は、手動スキュー補正を適用する方法を示しています。
// AsposeOcr のインスタンスを作成する
AsposeOCR recognitionEngine = new AsposeOCR();
// スキュー角度を手動で設定する
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.setSkew(6);
// 画像認識
RecognitionResult result = recognitionEngine.RecognizePage("C:\\Files\\source.png", recognitionSettings);
// 結果の表示
System.out.println(result.recognitionText);
無料の評価ライセンスを取得する
無料の一時ライセンスを取得して、評価制限なしで Aspose.OCR for Java を試すことができます。
結論
この記事では、次の方法を学びました。
- OCR を実行し、画像上のテキストを認識します。
- フィルターを適用して画像を処理します。
- 認識設定を使用します。
- Java を使用して修正した画像を保存します。
Java での画像の傾き補正に加えて、ドキュメント を使用して Aspose.OCR for Java API について詳しく知ることができます。ご不明な点がございましたら、無料サポート フォーラム までお気軽にお問い合わせください。