IronOCRでC#のページ回転を検出してPDFテキスト抽出の精度を上げる方法
IronOCR の DetectPageOrientation メソッドは、PDF ドキュメントおよび画像内のページ回転角度 (0°、90°、180°、270°) を自動的に識別します。 これは各ページに対して RotationAngle プロパティを返すため、信頼スコアを使用したプログラムによる方向補正が可能になり、正確なPDF文字認識・テキスト抽出が実現します。
ページ回転検出は、文書ページが時計回りか反時計回りに0度、90度、180度、270度回転したかを識別します。 この情報は、正確なレンダリングとテキスト抽出のために、ページが正しい向きで表示または処理されることを保証します。
クイックスタート: DetectPageOrientation を使用してページの回転を識別する
この例では、PDF で IronOCR の DetectPageOrientation を使用して、RotationAngle プロパティにアクセスする方法を示します。 最小限のコードで、高速なページ回転の検出と修正を提供します。
最小限のワークフロー(5ステップ)
- ページ回転を検出するためのC#ライブラリをダウンロードする
- 読み取り用にPDFドキュメントと画像をインポートする
- `DetectPageOrientation`メソッドを使用して、すべてのページの回転を検出します。
- **`RotationAngle`**プロパティにアクセスして、ページの回転を修正する。
- **`HighConfidence`**プロパティにアクセスしてエッジケースを処理する。
ドキュメントのページ回転を検出するにはどうすればよいですか?
ドキュメントを読み込んだ後、DetectPageOrientation メソッドを使用して各ページの回転を識別します。 このメソッドは、0度、90度、180度、270度に対応しています。 これらの標準回転を超える傾斜画像の場合は、 IronOCR の画像補正フィルターの Deskew メソッドを使用します。 次に、検出された角度を使用して画像を元の向きに回転させます。 サンプルPDFを使って作業してみましょう。
: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);
}
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 の前に、Rotate メソッドを使用して、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)
{
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 列挙型を提供することで、要件に応じて検出速度と精度を調整できます。
実装方法は以下の通りです:
: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);
}
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 つの速度オプションがあります。
- 高速:精度が低い高速検出。 スピードが重要なドラフトや一括処理に最適です。
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);
}
}
' 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機能は、テキストが密集した文書に最適です。テキストが少ない文書や複雑なレイアウトの文書では、最適な結果を得るために検出の前に画質補正フィルタを適用することを検討してください。

