如何在 C# 中檢測頁面旋轉以進行 OCR | IronOCR

How to Detect Page Rotation in C# with IronOCR

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 辨識頁面旋轉

本範例示範如何使用 IronOCR 的 DetectPageOrientation 在 PDF 上存取 RotationAngle 屬性。 它能以最少的程式碼實現快速的頁面旋轉檢測和校正。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/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範例

請注意此函數在處理文字密集型文件時表現最佳。

: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

檢測結果意味著什麼?

  • PageNumber: 頁面的從零開始的索引。
  • RotationAngle: 旋轉角度(度數)。 使用 Rotate 方法來修正方向。
  • HighConfidence: 處理邊界情況的方向結果的置信度。

何時應該使用高置信值?

對於旋轉檢測可能不確定的模糊或低品質文檔,HighConfidence 屬性至關重要。 文字稀少、佈局不尋常或掃描品質不佳的文件通常會獲得較低的置信度評分。 在這些情況下,需要在檢測前實施額外的驗證或應用影像品質校正濾波器

使用此值對置信度較低的頁面實施備用策略或手動審核。 例如,如果置信度低於 80%,則以多種方向處理頁面並比較 OCR 結果,或標記為需要手動審核。 IronOCR 的電腦視覺功能有助於更準確地識別複雜文件中的文字區域。

如何校正偵測到的旋轉?

確定旋轉角度後,對 Rotate 物件使用 OcrInput 方法校正 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 類,該類別在 OCR 處理之前提供了廣泛的文檔準備方法。

如何自訂檢測速度和精度?

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 提供四種速度選項:

警告 BalancedDetailedExtremeDetailed需要IronOCR套件。 這些選項在 Windows x86 和 Mac ARM 上不可用。

-快速:偵測速度快,但精度較低。 非常適合對速度要求較高的草稿處理或批量處理。 DetectPageOrientation 的預設值。 支援多線程,可高效處理數千頁資料。 -平衡:速度和準確度均衡。 適用於生產任務。 利用AdvancedScan 擴充功能提升精度,同時維持效能。 詳細來說:速度慢,精度高。 最適合處理精確或關鍵性任務,特別是佈局複雜或內容混合的文檔。 -超精細:速度最慢,精度最高。 僅當"詳細"選項不足以顯示資訊或文字嚴重傾斜和扭曲時才使用。

常見的性能考量有哪些?

不同模式下的性能差異很大。 快速模式每分鐘可處理數百頁; 極致細節模式可能需要幾秒鐘才能開啟一個頁面。 根據精度要求和時間限制進行選擇。 為了獲得最佳性能:

1.影像解析度:更高的DPI設定可以提高精度,但會增加處理時間。通常150-300 DPI足以進行旋轉檢測。 2.文檔類型:文字密集的文檔比稀疏的佈局處理速度更快、更準確。 使用濾鏡精靈在檢測前優化影像品質。 3.資源使用:監控處理大批量資料時的記憶體使用量。 實施進度跟踪,以便提供回饋和管理系統資源。 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 條碼和二維碼讀取功能,一次提取所有訊息,從而提高效率。

常見問題解答

什麼是頁面輪轉檢測,為什麼它很重要?

頁面旋轉檢測可辨識文件頁面是否已旋轉 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 影像修正濾鏡中的 Deskew 方法。

DetectPageOrientation 會傳回哪些資訊?

該方法會為每個頁面傳回三個關鍵屬性:PageNumber (以零為基礎的索引)、RotationAngle (以度為單位的旋轉,用於 IronOCR 的 Rotate 方法),以及 HighConfidence (置信度,用於處理邊緣情況)。

何時應該使用 HighConfidence 屬性?

當處理含糊不清或低品質的文件時,使用 HighConfidence 屬性,因為在這些文件中,旋轉偵測可能無法確定。具有稀疏文字、不尋常佈局或掃描品質較差的文件通常會在 IronOCR 中返回較低的置信度分數,需要額外的驗證或影像品質修正篩選器。

此功能是否最適用於某些類型的文件?

IronOCR 的 DetectPageOrientation 功能在處理文字密集的文件時表現最佳。對於文字極少或版面複雜的文件,可考慮在偵測前套用影像品質修正濾鏡,以獲得最佳結果。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

審核人
Jeff Fritz
Jeffrey T. Fritz
首席程序经理 - .NET 社群团队
Jeff 也是 .NET 和 Visual Studio 团队的首席程序经理。他是 .NET Conf 虚拟会议系列的执行制作人,并主持“Fritz 和朋友”这一每周两次的開發者的直播节目,在节目上讨论技術并与观众一起编写代碼。Jeff 撰写研讨会、主持演讲,并计划大型 Microsoft 開發者活動(包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit)的內容。
準備好開始了嗎?
Nuget 下載 5,556,263 | 版本: 2026.3 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想要快速證明? PM > Install-Package IronOcr
執行範例 觀看您的圖片變成可搜尋的文字。