IronOCRを使用してC#でページの回転を検出する方法
IronOCRのDetectPageOrientationメソッドはPDFドキュメントと画像のページ回転角度(0°, 90°, 180°, 270°)を自動的に識別します。 各ページに対してRotationAngleプロパティを返し、プログラムでのテキスト抽出のための信頼スコアを用いての方向補正を可能にします。
ページ回転検出は、文書ページが時計回りか反時計回りに0度、90度、180度、270度回転したかを識別します。 この情報は、正確なレンダリングとテキスト抽出のために、ページが正しい向きで表示または処理されることを保証します。
DetectPageOrientationを使用する@@--AH2EG--@@
この例ではIronOCRのRotationAngleプロパティにアクセスする方法を示します。 最小限のコードで、高速なページ回転の検出と修正を提供します。
-
1Install IronOCR with NuGet Package Manager
-
2このコード スニペットをコピーして実行します。
var rotationResults = new IronOcr.OcrInput().LoadPdf("doc.pdf").DetectPageOrientation(); Console.WriteLine(rotationResults.First().RotationAngle);C# -
3実際の環境でテストするためにデプロイする
今日プロジェクトで IronOCR を使い始めましょう無料トライアル
最小限のワークフロー(5ステップ)
- ページ回転を検出するためのC#ライブラリをダウンロードする
- 読み取り用にPDFドキュメントと画像をインポートする
DetectPageOrientationメソッドを使用して、すべてのページの回転を検出します。- ページの回転を修正するには、 RotationAngleプロパティにアクセスします。
- エッジケースを処理するためにHighConfidenceプロパティにアクセスする
ドキュメントのページ回転を検出するにはどうすればよいですか?
ドキュメントをロードした後、DetectPageOrientationメソッドを使用して各ページの回転を特定します。 このメソッドは、0度、90度、180度、270度に対応しています。 標準の回転を超えた傾斜画像の場合、DeskewメソッドをIronOCRの画像補正フィルターから使用します。 次に、検出された角度を使用して画像を元の向きに回転させます。 サンプルPDFを使って作業してみましょう。
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);
}Imports IronOcr
Imports System
Private input = New OcrInput()
' Load PDF document
input.LoadPdf("Clockwise90.pdf")
' Detect page rotation
Dim results = input.DetectPageOrientation()
' Ouput result
For Each result In results
Console.WriteLine(result.PageNumber)
Console.WriteLine(result.HighConfidence)
Console.WriteLine(result.RotationAngle)
Next result検出結果は何を意味しますか?
PageNumber: ページのゼロベースのインデックス。RotationAngle: 回転角度(度)。Rotateメソッドを使用して方向を補正します。HighConfidence: エッジケースを処理するための方向結果の信頼レベル。
どのような場合に高い信頼値を使用する必要がありますか?
回転検出が不確かなあいまいまたは低品質のドキュメントの場合、HighConfidenceプロパティが重要です。 テキストがまばらであったり、レイアウトが特殊であったり、スキャンの質が悪かったりする文書は、信頼度のスコアが低くなることがよくあります。 このような場合は、追加の検証を実装するか、検出前に画質補正フィルターを適用してください。
この値を使用して、信頼性の低いページのフォールバック戦略または手動レビューを実装します。 たとえば、信頼度が80%を下回った場合は、ページを複数の方向で処理してOCR結果を比較するか、手動レビューのフラグを立てます。 IronOCRのコンピューター・ビジョン機能は、困難な文書のテキスト領域をより正確に識別するのに役立ちます。
検出された回転を修正するにはどうすればよいですか?
回転角度を特定した後、OCR前に方向を修正するために、OcrInput オブジェクトで使用します。 これにより、最適なテキスト認識精度が保証されます。 包括的な向きの修正については、画像の向き修正ガイドを参照してください。 修正プロセスは以下の通りです:
// 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 Then
input.Rotate(360 - result.RotationAngle) ' Rotate back to 0°
End If追加の前処理を必要とする文書については、OcrInput Classを検討してください。
検出速度と精度をカスタマイズするにはどうすればよいですか?
DetectPageOrientationメソッドは、検出の詳細度を制御するオプションのパラメータを受け入れます。 OrientationDetectionMode enumを提供することにより、要件に基づいて検出速度と精度を調整できます。
実装方法は以下の通りです:
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);
}Imports IronOcr
Imports System
Using input As New OcrInput()
' Load PDF document
input.LoadPdf("Clockwise90.pdf")
' Detect page rotation with Fast mode
Dim results = input.DetectPageOrientation(OrientationDetectionMode.Fast)
' Output result
For Each result In results
Console.WriteLine(result.PageNumber)
Console.WriteLine(result.HighConfidence)
Console.WriteLine(result.RotationAngle)
Next
End Usingどの検出モードを選択すればよいですか?
OrientationDetectionMode用に4つの速度オプションが利用可能です:
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 i As Integer = 0 To results.Count - 1
Dim pageResult = results(i)
' Apply rotation only to pages that need it
If pageResult.RotationAngle <> 0 AndAlso pageResult.HighConfidence Then
' Correct the specific page
input.Pages(i).Rotate(360 - pageResult.RotationAngle)
End If
Nextさまざまな品質のスキャン文書や複数ページの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機能は、テキストが密集した文書に最適です。テキストが少ない文書や複雑なレイアウトの文書では、最適な結果を得るために検出の前に画質補正フィルタを適用することを検討してください。
How do I limit memory usage when detecting orientation on large PDFs?
Pass a maxDegreeOfParallelism value to the DetectPageOrientation overload, for example input.DetectPageOrientation(OrientationDetectionMode.Fast, maxDegreeOfParallelism: 2). This caps how many pages are analysed at the same time, and because each concurrent page uses its own native engine, it directly caps peak memory. A non-positive value falls back to Environment.ProcessorCount.
Does adding the maxDegreeOfParallelism parameter break existing code?
No. The single-argument DetectPageOrientation overload is unchanged and remains fully supported, so existing code continues to work without modification. In Fast mode, orientation detection is also more memory efficient because it reuses one engine per worker thread rather than allocating one per page, and results are unchanged.

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