如何在 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 屬性。 它能以最少的程式碼實現快速的頁面輪替偵測與修正。

  1. using 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);
}
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
$vbLabelText   $csharpLabel

檢測結果代表什麼意思?

  • PageNumber:頁面的零起始索引。
  • 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°
}
' Apply rotation correction based on detection results
If result.RotationAngle <> 0 Then
    input.Rotate(360 - result.RotationAngle) ' Rotate back to 0°
End If
$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);
}
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
$vbLabelText   $csharpLabel

我應該選擇哪種偵測模式?

OrientationDetectionMode 提供四種速度選項:

警告BalancedDetailedExtremeDetailed 需要 IronOcr.Extensions.AdvancedScan 套件。 (這些選項在 Windows x86 和 Mac ARM 系統上不可用。)}]

  • 快速:檢測速度快,但準確度較低。 特別適合用於草稿或大量處理等速度至關重要的情境。 DetectPageOrientation 的預設值。 支援多執行緒,可高效處理數千頁內容。
  • 平衡:在速度與準確性之間取得平衡。 適用於正式生產環境。 利用 AdvancedScan 擴充功能提升準確性,同時維持效能。
  • 詳盡模式:速度較慢,準確度較高。 最適合用於精確或關鍵任務,特別是版面配置複雜或內容混合的文件。
  • 極致詳盡:速度最慢,準確度最高。 僅在"詳細"模式不足以處理,或文字嚴重傾斜變形時使用。

常見的效能考量有哪些?

不同模式之間的效能差異顯著。 快速模式每分鐘可處理數百頁; ExtremeDetailed 每頁可能需要數秒時間。 請根據準確性要求與時間限制進行選擇。 為獲得最佳效能:

  1. 影像解析度:較高的 DPI 設定可提升精準度,但會增加處理時間。通常 150-300 DPI 已足以進行旋轉偵測。
  2. 文件類型:文字密集型文件比版面稀疏的文件處理速度更快、準確度更高。 請在偵測前使用"濾鏡精靈"來優化影像品質。
  3. 資源使用:處理大量批次時,請監控記憶體使用狀況。 實作進度追蹤功能,以提供回饋並管理系統資源。
  4. 並行處理:針對大量處理作業,可利用 IronOCR 的多執行緒功能,在維持精準度的同時,同步處理多份文件。

如何處理混合方向的文件?

對於方向不一的文件,請先使用 DetectPageOrientation 分別處理每頁,然後在執行 OCR 之前,逐頁進行旋轉校正。 這可確保無論初始狀態為何,皆能正確顯示。 以下是一種有效的翻譯方法:

// Process each page with individual rotation detection
for (int i = 0; i < results.Co/unt; 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.Co/unt; 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
$vbLabelText   $csharpLabel

若涉及品質參差不齊的掃描文件多頁 TIFF 檔案等複雜情境,請分別對每頁進行預處理以獲得最佳效果。

在處理混合格式的輸入時,OcrResult 類別會提供詳細的頁面資訊,從而支援精細的錯誤處理與品質控制工作流程。 針對高吞吐量的生產環境,請探索"快速 OCR 設定"選項,以在速度與準確性之間取得平衡。

若需處理同時包含文字與 BARCODE 的文件,請使用具備 BARCODE 與 QR 碼讀取功能的 IronOCR OCR,以單次處理提取所有資訊,從而提升效率。

常見問題

何謂頁面旋轉偵測?為何它如此重要?

頁面旋轉偵測功能可識別文件頁面是否已旋轉 0°、90°、180° 或 270°。此功能對 IronOCR 至關重要,能確保頁面以正確方向進行處理,從而實現從 PDF 和圖像中精準提取及呈現文字。

如何使用 C# 快速偵測 PDF 中的頁面旋轉?

using 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 函式在文字密集的文件上表現最佳。對於文字極少或版面配置複雜的文件,建議在進行偵測前先套用影像品質修正濾鏡,以獲得最佳效果。

IronOCR 能否整合至現有應用程式中?

IronOCR 設計上可輕鬆透過 C# 整合至現有應用程式中,讓開發人員能以最少的努力,為其軟體增添 OCR 功能。

使用 IronOCR 進行文件管理有哪些好處?

使用 IronOCR 進行文件管理,可將掃描文件轉換為可搜尋且可編輯的文字,從而簡化工作流程,減少人工資料輸入的需求,並提升文件的可存取性。

IronOCR 如何提升資料準確性?

IronOCR 透過其先進的辨識演算法與影像校正功能來提升資料準確性,確保文字擷取過程既可靠又精確。

IronOCR 是否有提供免費試用版?

是的,Iron Software 提供 IronOCR 的免費試用版,讓使用者能在決定購買前測試其功能與效能。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 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 Summit 等微軟最大規模的開發者活動規劃內容。
準備開始了嗎?
Nuget 下載 5,896,332 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronOcr
執行範例 觀看您的圖片轉為可搜尋文字。