C#でOCRのための画像の向きを修正する方法 | IronOCR

C#でOCRの画像の向きを修正する

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

IronOCRは、回転、傾き補正、拡大縮小の方法で画像の向きの問題を修正します。 .NETアプリケーションで正確なOCRテキスト抽出を行うために、これらの変換を連鎖させて、傾いたスキャン、上下逆さまの文書、不適切なサイズの画像を修正します。

クイックスタート: 1行で回転、傾き補正、拡大縮小

IronOCRのOcrInputメソッドを連鎖させ、1回の呼び出しで画像の回転、傾き補正、拡大縮小を行います。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronOCR をインストールします

    PM > Install-Package IronOcr

  2. このコード スニペットをコピーして実行します。

    var result = new IronOcr.OcrInput().LoadImage("skewed.png").Rotate(90).Deskew(45).Scale(150).Let(input => new IronOcr.IronTesseract().Read(input));
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronOCR を使い始めましょう
    arrow pointer


IronOCRで画像を回転させるには?

回転させることで、画像の向きを特定の角度だけ変え、テキストが直立し、正しく配置されるようにします。 スキャナで読み取った文書や、不恰好な角度で撮影された写真を修正します。

Rotate メソッドに次数の値を渡します。 正の値は時計回りに回転し、負の値は反時計回りに回転します。回転は画像の中心点を中心に行われ、コンテンツの向きを調整しながら元の寸法を維持します。

画像の回転はいつ使うべきですか?

画像回転は、スキャンまたは撮影された文書の向きが正しくない場合に修正します。 よくあるシナリオは以下のとおりです:

自動回転検出には、テキスト解析によって正しい方向を決定するIronOCRのDetectPageOrientationメソッドを使用してください。

どの程度の値が最適ですか?

一般的な回転値は、90度の倍数(90、180、270)です。 IronOCRは微調整のための度数値をサポートします:

  • 90度/-270度:横から縦への変換
  • 180度:逆さまドキュメント
  • 270度/90度:縦から横への変換
  • 小さな角度(1~10度)デスクウィングは、わずかな傾きに対してよりよく機能することがよくありますが、軽微な調整です。

古い機器からスキャンした文書の場合は、回転を他の前処理ステップと組み合わせてください。

回転は OCR の精度にどのように影響しますか?

OCRの精度を高めるためには、適切な回転が不可欠です。 IronOCRのTesseract 5エンジンは左から右、上から下のテキストフローを想定しています。 テキストがずれる原因

:path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-rotate-image.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("paragraph_skewed.png");

// Rotate the image 180 degrees clockwise
imageInput.Rotate(180);

// Export the modified image
imageInput.SaveAsImages("rotate");
$vbLabelText   $csharpLabel

SaveAsImagesメソッドを使用して、変更した画像をエクスポートします。 以下は、回転前と回転後の画像です。

Original skewed text document before rotation correction
Document with 180-degree rotated text showing upside-down content that requires IronOCR rotation correction

傾いた画像の傾きを補正するにはどうすればよいですか?

傾いた画像や斜めになった画像を傾き補正し、テキストを水平に揃えます。 この翻訳では、スキャナで斜めに置かれた文書や、微妙な角度で撮影された写真を修正します。

Deskewメソッドでデスキューを適用します。 補正する最大スキュー角度を整数で指定します。 値を高くすると、より多くの修正が可能になりますが、処理速度が遅くなり、ページが上下逆さまになるなどのエラーが発生する危険性があります。 デフォルトの最大15度は、ほとんどのシナリオを効果的に処理します。

デスキューにはどのような角度値を使用すればよいですか?

最適なスキュー角度は、文書の品質と要件によって異なります:

  • デフォルト(パラメータなし):ほとんどのドキュメントの自動検出
  • 5~15度:正確さとスピードのバランスをとりながら、少し傾けたスキャンを行う。
  • 15~30度:著しく歪んだ文書; 20度を超える角度については、回転を考慮してください。
  • 30度以上:オーバーコレクトの可能性があります; 画像フィルタを代わりに使用してください。

大きく傾いたドキュメントには、傾き補正と画像最適化フィルタを組み合わせてください。 フィルタウィザードは、最適な前処理ステップを特定するのに役立ちます。

デスキューイングが最も効果的なのはいつですか?

デスキューイングは次のような場合に最適です:

あまり効果的ではありません:

過修正の問題を避けるにはどうすればよいですか?

以下の方法で、デスキュー問題を防いでください: 1.保守的な角度制限(10~15度)から始める。 2.OcrResultの信頼スコアを使用して修正を検証する 3.複合問題のローテーション後のデスキューの適用 4.バッチ処理前のサンプル文書のテスト 5.progress tracking を大規模バッチに使用する 6.abort トークンを長時間実行する操作のために実装する。

:path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-rotate-image.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("paragraph_skewed.png");

// Rotate the image 180 degrees clockwise
imageInput.Rotate(180);

// Export the modified image
imageInput.SaveAsImages("rotate");
$vbLabelText   $csharpLabel
Original document with noticeable tilt requiring deskew correction
Document after deskew correction showing properly aligned horizontal text

より良い OCR のために画像を拡大縮小するにはどうすればよいですか?

スケーリングは、一貫したテキスト認識のために画像のサイズを標準化します。 適切なスケーリングにより、テキストが小さすぎて正確に検出できなかったり、大きすぎて効率的に処理できなかったりすることはありません。

Scaleメソッドでパーセンテージ値を使用してスケーリングを適用します(100%は効果がないことを意味します)。 2番目のパラメータであるScaleCropAreaは、クロップ領域が比例して拡大縮小するかどうかを決定します('true'を推奨)。 テキストの歪みを防ぐため、アスペクト比を維持したスケーリングを行っています。

最適な比率はどのくらいですか?

最適なスケーリングは、ソースの解像度とOCR要件によって異なります:

  • 50~80%:高速処理のための高解像度スキャン(600DPI以上
  • 100%:拡大縮小なし、オリジナル寸法
  • 120-150%:文字認識を強化するための低解像度画像
  • 200%以上DPI設定の方がうまくいくかもしれませんが、非常に小さなテキストです。

最良の結果を得るために、テキストの高さは20~30ピクセルを目標としてください。 解像度の最適化に関する詳しいガイダンスについては、optimizing image DPI for Tesseractをご覧ください。

スケーリングは OCR のパフォーマンスにどのように影響しますか?

スケーリングは精度とスピードに影響します:

  • ダウンスケーリング(100%以下):処理が速くなりますが、細かいディテールが失われる可能性があります。
  • アップスケーリング(100%以上):小さなテキストの精度が向上しますが、処理が遅くなります。
  • メモリ使用量: 画像の大きさによって二次関数的に変化します。
  • 処理時間: 次元が大きくなるほど長くなります。

パフォーマンスの最適化については、fast OCR configuration および multithreading for speed を参照してください。

どのような場合に ScaleCropArea を使用すべきですか?

ScaleCropAreaは、次のような場合に使用してください:

オリジナルのクロップ座標が必要な場合を除き、trueに設定してください。

:path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-rotate-image.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("paragraph_skewed.png");

// Rotate the image 180 degrees clockwise
imageInput.Rotate(180);

// Export the modified image
imageInput.SaveAsImages("rotate");
$vbLabelText   $csharpLabel

異なるスケール値はどのように比較されますか?

以下の比較は、スケーリングが寸法とテキストの明瞭さにどのように影響するかを示しています。 適度なスケーリングにより、処理要件を調整しながら読みやすさを維持します:

テキストドキュメントを50%、100%、150%の縮尺で表示し、サイズの違いを示す比較.
異なる縮尺でレンダリングしたテキストを並べて比較し、3DパースでOCRの品質保持を示す

複合修正のベストプラクティスは何ですか?

最適な結果を得るために、この順序で修正を加えてください: 1.ローテーションを最初に行い、主要な方向性の問題を解決する。 2.アライメントを微調整するためのデスキュー。 3.スケーリングによるOCR処理の最適化

このような順序を踏むことで、誤りを重ねることなく、各修正が前の修正の上に積み重ねられていきます。 複雑な処理が必要な場合は、IronOCRの包括的な画像フィルターと画質補正ツールをご利用ください。

どのようにすべての方向修正を組み合わせますか?

包括的な画像準備のために複数の補正を連鎖させること:

/* :path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-combined.cs */
using IronOcr;

// Create OCR engine with optimized configuration
IronTesseract ocrTesseract = new IronTesseract();

// Load and process image with all corrections
using var imageInput = new OcrImageInput("skewed_document.png");

// Apply corrections in optimal sequence
imageInput
    .Rotate(90)           // Fix major orientation
    .Deskew(15)          // Correct minor tilts
    .Scale(150, true);   // Enhance for OCR

// Perform OCR on corrected image
OcrResult result = ocrTesseract.Read(imageInput);

// Access extracted text
string extractedText = result.Text;
/* :path=/static-assets/ocr/content-code-examples/how-to/image-orientation-correction-combined.cs */
using IronOcr;

// Create OCR engine with optimized configuration
IronTesseract ocrTesseract = new IronTesseract();

// Load and process image with all corrections
using var imageInput = new OcrImageInput("skewed_document.png");

// Apply corrections in optimal sequence
imageInput
    .Rotate(90)           // Fix major orientation
    .Deskew(15)          // Correct minor tilts
    .Scale(150, true);   // Enhance for OCR

// Perform OCR on corrected image
OcrResult result = ocrTesseract.Read(imageInput);

// Access extracted text
string extractedText = result.Text;
$vbLabelText   $csharpLabel

結果を向上させる追加の前処理はどれですか?

方向修正だけでなく、以下のような機能強化もご検討ください:

バッチ処理では、asyncサポートを実装し、複数のドキュメントを効率的に処理できるようにします。 タイムアウトを使用して、大規模な処理を監視します。

修正した画像をエクスポートするにはどうすればよいですか?

検証またはさらなる使用のために、処理された画像をエクスポートします:

複雑なワークフローを実装する前に、シンプルな1行OCRで修正をテストしてください。

よくある質問

OCR処理の前に、傾いた画像や斜めの画像を修正するにはどうすればよいですか?

IronOCRはOcrInputクラスを通して強力な画像方向補正を提供します。Rotate()、Deskew()、Scale()などのメソッドを連鎖させて、傾いたスキャン画像、上下逆さまの文書、不適切なサイズの画像を修正することができます。たとえば、input.Rotate(90).Deskew(45).Scale(150) を使用すると、テキスト抽出の前に1行で複数の補正を適用できます。

ドキュメントの向きが異なる場合、どのような回転角度を使用すればよいですか?

IronOCRはあらゆる回転角度をサポートしますが、一般的な値は以下の通りです:横から縦への変換には90度、逆さまの文書には180度、縦から横への変換には270度です。わずかな調整(1-10度)の場合、IronOCRの傾き補正()メソッドを使うと、少し傾いた文書でも良い結果が得られます。

ドキュメントの正しい向きを自動的に検出できますか?

はい、IronOCRにはDetectPageOrientationメソッドがあり、テキスト解析によって正しい向きを自動的に決定します。この機能は、歴史的なアーカイブや様々なソースからの複数ページのドキュメントなど、方向が一貫していないドキュメントのバッチを処理するときに特に便利です。

画像補正に回転と傾き補正のどちらを使うべきですか?

IronOCRのRotate()メソッドは、ドキュメントが完全に横向きや上下逆さまになっている場合に、主要な方向(90度、180度、270度)の問題に対して使用します。スキャンされた文書によく見られるわずかな傾きや歪みにはDeskew()メソッドを使います。両方のメソッドを連鎖させることで、不十分なスキャン画像を総合的に補正することができます。

OCRの精度を高めるために画像を拡大縮小するにはどうすればよいですか?

IronOCRのScale()メソッドでは、画像のサイズをパーセント単位で変更することができます。例えば、Scale(150)は画像サイズを50%増加させ、低解像度のスキャンのOCR精度を向上させます。これは回転や傾き補正と組み合わせて総合的な画像前処理を行う場合に特に便利です。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

レビュー済み
Jeff Fritz
Jeffrey T. Fritz
プリンシパルプログラムマネージャー - .NETコミュニティチーム
Jeffはまた、.NETとVisual Studioチームのプリンシパルプログラムマネージャーです。彼は.NET Conf仮想会議シリーズのエグゼクティブプロデューサーであり、週に二回放送される開発者向けライブストリーム『Fritz and Friends』のホストを務め、テクノロジーについて話すことや視聴者と一緒にコードを書くことをしています。Jeffはワークショップ、プレゼンテーション、およびMicrosoft Build、Microsoft Ignite、.NET Conf、Microsoft MVPサミットを含む最大のMicrosoft開発者イベントのコンテンツを企画しています。
準備はできましたか?
Nuget ダウンロード 5,299,091 | バージョン: 2025.12 リリース