C#でのOCR用のページ回転を検出する方法 | IronOCR

IronOCR を使って C# でページの回転を検出する方法

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

IronOCRのDetectPageOrientationメソッドは、PDF文書や画像のページ回転角度(0°、90°、180°、270°)を自動的に識別します。 これは、各ページのRotationAngleプロパティを返し、正確なテキスト抽出のための信頼スコアでプログラムによる方向修正を可能にします。

ページ回転検出は、文書ページが時計回りか反時計回りに0度、90度、180度、270度回転したかを識別します。 この情報は、正確なレンダリングとテキスト抽出のために、ページが正しい向きで表示または処理されることを保証します。

クイックスタート: DetectPageOrientation を使用してページの回転を識別する

この例では、PDF上でIronOCRのDetectPageOrientationを使ってRotationAngleプロパティにアクセスすることを示します。 最小限のコードで、高速なページ回転の検出と修正を提供します。

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

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

    PM > Install-Package IronOcr

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

    var rotationResults = new IronOcr.OcrInput().LoadPdf("doc.pdf").DetectPageOrientation();
    Console.WriteLine(rotationResults.First().RotationAngle);
  3. 実際の環境でテストするためにデプロイする

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


ドキュメントのページ回転を検出するにはどうすればよいですか?

ドキュメントを読み込んだら、DetectPageOrientationメソッドを使用して、各ページの回転を特定します。 このメソッドは、0度、90度、180度、270度に対応しています。 これらの標準的な回転を超える歪んだ画像には、IronOCRの画像補正フィルターDeskewメソッドを使用してください。 次に、検出された角度を使用して画像を元の向きに回転させます。 サンプルPDFを使って作業してみましょう。

BRACKET-i-OPEN--この関数は、テキスト密度の高いドキュメントで最もよく機能します。

:path=/static-assets/ocr/content-code-examples/how-to/detect-page-rotation-detect-page-rotation.cs
using IronOcr;
using System;

using var input = new OcrInput();

// Load PDF document
input.LoadPdf("Clockwise90.pdf");

// Detect page rotation
var results = input.DetectPageOrientation();

// Ouput result
foreach(var result in results)
{
    Console.WriteLine(result.PageNumber);
    Console.WriteLine(result.HighConfidence);
    Console.WriteLine(result.RotationAngle);
}
$vbLabelText   $csharpLabel

検出結果は何を意味しますか?

  • ページ番号:ページのゼロベースのインデックス。
  • RotationAngle:度単位の回転角度。 Rotateメソッドで方向を修正してください。
  • HighConfidence:エッジケースを処理するためのオリエンテーション結果の信頼度。

どのような場合に高い信頼値を使用する必要がありますか?

HighConfidenceプロパティは、回転の検出が不確かな曖昧なドキュメントや低品質なドキュメントにとって非常に重要です。 テキストがまばらであったり、レイアウトが特殊であったり、スキャンの質が悪かったりする文書は、信頼度のスコアが低くなることがよくあります。 このような場合は、追加の検証を実装するか、検出前に画質補正フィルターを適用してください。

この値を使用して、信頼性の低いページのフォールバック戦略または手動レビューを実装します。 たとえば、信頼度が80%を下回った場合は、ページを複数の方向で処理してOCR結果を比較するか、手動レビューのフラグを立てます。 IronOCRのコンピューター・ビジョン機能は、困難な文書のテキスト領域をより正確に識別するのに役立ちます。

検出された回転を修正するにはどうすればよいですか?

回転角度を特定した後、OcrInput オブジェクトの Rotate メソッドを使用して、OCR の前に向きを修正します。 これにより、最適なテキスト認識精度が保証されます。 包括的な向きの修正については、画像の向き修正ガイドを参照してください。 修正プロセスは以下の通りです:

// Apply rotation correction based on detection results
if (result.RotationAngle != 0)
{
    input.Rotate(360 - result.RotationAngle); // Rotate back to 0°
}
// Apply rotation correction based on detection results
if (result.RotationAngle != 0)
{
    input.Rotate(360 - result.RotationAngle); // Rotate back to 0°
}
$vbLabelText   $csharpLabel

追加の前処理を必要とする文書については、OcrInput Classを検討してください。

検出速度と精度をカスタマイズするにはどうすればよいですか?

DetectPageOrientationメソッドは、検出の詳細を制御するためのオプションのパラメータを受け入れます。 OrientationDetectionMode列挙型を提供することで、要件に基づいて検出速度と精度を調整できます。

実装方法は以下の通りです:

:path=/static-assets/ocr/content-code-examples/how-to/detect-page-rotation-detect-page-rotation-advanced.cs
using IronOcr;
using System;

using var input = new OcrInput();

// Load PDF document
input.LoadPdf("Clockwise90.pdf");

// Detect page rotation with Fast mode
var results = input.DetectPageOrientation(OrientationDetectionMode.Fast);

// Ouput result
foreach(var result in results)
{
    Console.WriteLine(result.PageNumber);
    Console.WriteLine(result.HighConfidence);
    Console.WriteLine(result.RotationAngle);
}
$vbLabelText   $csharpLabel

どの検出モードを選択すればよいですか?

OrientationDetectionModeには4つの速度オプションがあります:

BalancedDetailedExtremeDetailedはIronOcr.Extensions.AdvancedScanパッケージを必要とします。 これらのオプションは、Windows x86およびMac ARMでは使用できません。

  • 高速:精度が低い高速検出。 スピードが重要なドラフトや一括処理に最適です。 DetectPageOrientationのデフォルトです。 マルチスレッドのサポートにより、何千ものページを効率的に処理します。
  • バランス:スピードと正確さのバランス。 本番作業に適しています。 AdvancedScan拡張機能を使用し、パフォーマンスを維持しながら精度を向上させています。
  • 詳細:低速、高精度。 特に、複雑なレイアウトや内容が混在する文書など、正確で重要な作業に最適です。
  • ExtremeDetailed:最も遅いスピード、最も高い精度。 詳細が不十分な場合や、テキストが大きく歪んでいる場合にのみ使用してください。

パフォーマンスに関する一般的な考慮事項とは

パフォーマンスはモードによって大きく異なります。 高速モードでは、1分間に数百ページを処理します; ExtremeDetailedでは、1ページあたり数秒かかる場合があります。 正確さの要件と時間的制約に基づいて選択してください。 最適なパフォーマンスのために

1.画像解像度: DPI設定を高くすると、精度は向上しますが、処理時間が長くなります。回転検出には通常 150-300 DPI で十分です。 2.ドキュメントのタイプ: テキスト密度の高いドキュメントは、疎なレイアウトよりも速く正確に処理されます。 フィルタウィザードを使用して、検出前に画質を最適化します。 3.リソース使用:大きなバッチを処理するときのメモリ使用量を監視してください。 progress tracking を実装して、フィードバックを提供し、システムリソースを管理します。 4.並列処理:一括処理にはIronOCRのマルチスレッドを使用し、精度を保ちながら複数の文書を同時に処理します。

混在言語のドキュメントはどのように扱えばよいですか?

オリエンテーションが混在するドキュメントの場合は、DetectPageOrientationで各ページを個別に処理し、OCRの前にページごとに回転補正をかけます。 これにより、初期状態にかかわらず、適切なオリエンテーションが保証されます。 効果的なアプローチをご紹介しましょう:

// Process each page with individual rotation detection
for (int i = 0; i < results.Count; i++)
{
    var pageResult = results[i];

    // Apply rotation only to pages that need it
    if (pageResult.RotationAngle != 0 && pageResult.HighConfidence)
    {
        // Correct the specific page
        input.Pages[i].Rotate(360 - pageResult.RotationAngle);
    }
}
// Process each page with individual rotation detection
for (int i = 0; i < results.Count; i++)
{
    var pageResult = results[i];

    // Apply rotation only to pages that need it
    if (pageResult.RotationAngle != 0 && pageResult.HighConfidence)
    {
        // Correct the specific page
        input.Pages[i].Rotate(360 - pageResult.RotationAngle);
    }
}
$vbLabelText   $csharpLabel

さまざまな品質のスキャン文書複数ページのTIFFを含む複雑なシナリオでは、最適な結果を得るために各ページを個別に前処理してください。

混合フォーマットの入力を処理する場合、OcrResultクラスは詳細なページ情報を提供し、高度なエラー処理と品質管理ワークフローを可能にします。 高スループットの生産環境では、速度と精度のバランスをとるための高速 OCR 構成オプションを検討してください。

テキストとバーコードの両方を含むドキュメントを処理する場合は、IronOCRのOCR with Barcode & QR Reading機能を使用して、すべての情報を一度に抽出し、効率を向上させます。

よくある質問

ページ回転検出とは何ですか?

ページ回転検出は、文書ページが0度、90度、180度、270度回転したかを識別します。これはIronOCRにとって、ページが正しい向きで処理され、PDFや画像からの正確なテキスト抽出とレンダリングを可能にするために非常に重要です。

C# を使っ て PDF 内のページ回転を素早 く 検出す る 方法は?

最小限のコードでIronOCRのDetectPageOrientationメソッドを使用する: var rotationResults = new IronOcr.OcrInput().LoadPdf("doc.pdf").DetectPageOrientation(); これはすべてのページの回転情報を返し、RotationAngleプロパティを通してアクセスできる。

どのような回転角度を検出できますか?

IronOCRのDetectPageOrientationメソッドは0度、90度、180度、270度の標準的な回転を検出することができます。これらの標準的な回転を超える歪んだ画像には、画像補正フィルターからIronOCRの傾き補正メソッドを使用してください。

DetectPageOrientationはどのような情報を返しますか?

このメソッドは、各ページについて3つの主要なプロパティを返します:PageNumber (ゼロベースのインデックス)、RotationAngle (IronOCRのRotateメソッドで使用する度単位の回転)、HighConfidence (エッジケースを扱うための信頼度)です。

HighConfidence プロパティは、どのような場合に使用するのですか?

HighConfidenceプロパティは、回転の検出が不確かな曖昧な文書や低品質の文書を扱う場合に使用します。テキストがまばらであったり、レイアウトが特殊であったり、スキャン画質が悪かったりするドキュメントは、IronOCRの信頼度スコアが低くなることが多く、追加の検証や画質補正フィルターが必要になります。

この機能は、特定のタイプのドキュメントに最適ですか?

IronOCRのDetectPageOrientation機能は、テキストが密集した文書に最適です。テキストが少ない文書や複雑なレイアウトの文書では、最適な結果を得るために検出の前に画質補正フィルタを適用することを検討してください。

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

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 リリース