Jak wykrywać obrót strony dla OCR w C# | IronOCR

Jak wykryć obrót strony w C# za pomocą IronOCR

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

Metoda DetectPageOrientation IronOCR automatycznie identyfikuje kąty rotacji stron (0°, 90°, 180°, 270°) w dokumentach PDF i obrazach. Zwraca właściwość RotationAngle dla każdej strony, umożliwiając programową korekcję orientacji z wynikami pewności dla dokładnego wyodrębniania tekstu.

Wykrywanie rotacji strony identyfikuje, czy strona dokumentu została obrócona zgodnie z ruchem zegara lub przeciwnie do niego o 0, 90, 180 lub 270 stopni. Ta informacja zapewnia, że strony są wyświetlane lub przetwarzane w prawidłowej orientacji dla dokładnego renderowania i wyodrębniania tekstu.

Szybki start: Użyj DetectPageOrientation, aby zidentyfikować rotację strony

Ten przykład demonstruje użycie DetectPageOrientation IronOCR na PDF-ie, aby uzyskać dostęp do właściwości RotationAngle. Zapewnia szybkie wykrywanie i korektę rotacji strony przy minimalnej ilości kodu.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. Skopiuj i uruchom ten fragment kodu.

    var rotationResults = new IronOcr.OcrInput().LoadPdf("doc.pdf").DetectPageOrientation();
    Console.WriteLine(rotationResults.First().RotationAngle);
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer


Jak wykryć rotację strony w moich dokumentach?

Po załadowaniu dokumentu, użyj metody DetectPageOrientation, aby zidentyfikować rotację każdej strony. Ta metoda obsługuje 0, 90, 180 i 270 stopni. Dla obrazów o skośnym układzie poza tymi standardowymi rotacjami, użyj metody Deskew z filtrów korekcji obrazów IronOCR. Następnie obróć obraz z powrotem do jego pierwotnej orientacji za pomocą wykrytego kąta. Pracujmy z przykładowym PDF-em.

Zwróć uwagęTa funkcja działa najlepiej z dokumentami o dużej gęstości tekstu.

: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

Co oznaczają wyniki wykrywania?

  • PageNumber: Indeks strony zaczynający się od zera.
  • RotationAngle: Kąt rotacji w stopniach. Użyj z metodą Rotate, aby skorygować orientację.
  • HighConfidence: Poziom pewności w wyniku orientacji dla obsługi przypadków szczególnych.

Kiedy używać wartości wysokiej pewności?

Właściwość HighConfidence jest kluczowa dla niejednoznacznych lub niskiej jakości dokumentów, w których wykrywanie rotacji może być niepewne. Dokumenty z rzadkim tekstem, nietypowym układem lub złej jakości skanem często zwracają niższe wyniki pewności. W takich przypadkach zaimplementuj dodatkową walidację lub zastosuj filtry korekcji jakości obrazów przed wykrywaniem.

Użyj tej wartości, aby wdrożyć strategie awaryjne lub ręczną kontrolę stron o niskiej pewności. Na przykład, jeśli poziom pewności spadnie poniżej 80%, przetwarzaj stronę w kilku orientacjach i porównuj wyniki OCR, lub zaznacz do ręcznej kontroli. Funkcje wizji komputerowej IronOCR pomagają dokładniej identyfikować regiony tekstowe w trudnych dokumentach.

Jak poprawić wykrytą rotację?

Po zidentyfikowaniu kąta rotacji, użyj metody Rotate na obiekcie OcrInput, aby poprawić orientację przed OCR. Zapewnia to optymalną dokładność rozpoznawania tekstu. W celu kompleksowych poprawek orientacji, zobacz przewodnik korekcji orientacji obrazów. Oto proces korekcji:

// 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

Dla dokumentów wymagających dodatkowego wstępnego przetwarzania, rozważ klasę OcrInput, która oferuje szerokie metody przygotowania dokumentu przed przetwarzaniem OCR.

Jak mogę dostosować szybkość i dokładność wykrywania?

Metoda DetectPageOrientation akceptuje opcjonalny parametr do kontrolowania szczegółowości wykrywania. Dzięki dostarczeniu enumów OrientationDetectionMode możesz dostosować szybkość i dokładność wykrywania w zależności od swoich wymagań.

Oto, jak to zaimplementować:

: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

Który tryb wykrywania powinienem wybrać?

Dostępne są cztery opcje szybkości dla OrientationDetectionMode:

OstrzeżenieBalanced, Detailed, i ExtremeDetailed wymagają pakietu IronOcr.Extensions.AdvancedScan. Te opcje są niedostępne na Windows x86 i Mac ARM.

  • Fast: Wysoka szybkość wykrywania przy niższej dokładności. Idealne dla wersji roboczych lub masowego przetwarzania, gdzie szybkość jest kluczowa. Domyślny dla DetectPageOrientation. Efektywnie obsługuje tysiące stron dzięki wsparciu dla wielowątkowości.
  • Balanced: Zbalansowana szybkość i dokładność. Odpowiedni do zadań produkcyjnych. Wykorzystuje możliwości rozszerzenia AdvancedScan dla poprawionej dokładności przy zachowaniu wydajności.
  • Detailed: Niska szybkość, wysoka dokładność. Najlepszy dla precyzyjnych lub krytycznych zadań, szczególnie w dokumentach złożonych układów lub mieszanej treści.
  • ExtremeDetailed: Najwolniejsza szybkość, najwyższa dokładność. Używaj tylko, gdy Detailed jest niewystarczający lub tekst jest silnie pochylony i zniekształcony.

Jakie są najczęstsze kwestie związane z wydajnością?

Wydajność znacznie różni się między trybami. Tryb Fast przetwarza setki stron na minutę; Tryb ExtremeDetailed może zająć sekundy na stronę. Wybierz na podstawie wymagań dotyczących dokładności i ograniczeń czasowych. Dla optymalnej wydajności:

  1. Rozdzielczość obrazu: Wyższe ustawienia DPI poprawiają dokładność, ale zwiększają czas przetwarzania. 150-300 DPI zazwyczaj wystarcza do wykrywania rotacji.
  2. Typ dokumentu: Dokumenty o dużej gęstości tekstu przetwarzają się szybciej i dokładniej niż rzadkie układy. Użyj kreatora filtrów, aby zoptymalizować jakość obrazu przed wykryciem.
  3. Użycie zasobów: Monitoruj użycie pamięci podczas przetwarzania dużych serii. Zaimplementuj śledzenie postępów, aby zapewnić feedback i zarządzać zasobami systemowymi.
  4. Przetwarzanie równoległe: Dla operacji masowych, użyj wielowątkowości IronOCR, aby przetwarzać wiele dokumentów jednocześnie, zachowując dokładność.

Jak obsłużyć dokumenty o mieszanej orientacji?

Dla dokumentów o mieszanej orientacji, przetwarzaj każdą stronę indywidualnie za pomocą DetectPageOrientation, a następnie przed przetwarzaniem OCR zastosuj korektę rotacji strona po stronie. To zapewnia prawidłową orientację, niezależnie od stanu początkowego. Oto skuteczne podejście:

// 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
$vbLabelText   $csharpLabel

Dla złożonych scenariuszy obejmujących zeskanowane dokumenty o różnej jakości lub wielostronicowe TIFF-y, przetwarzaj każdą stronę indywidualnie, aby uzyskać optymalne wyniki.

Podczas przetwarzania różnorodnych formatów wejściowych, klasa OcrResult oferuje szczegółowe informacje o stronach, umożliwiając zaawansowane obsługi błędów i kontrolę jakości. Dla środowisk produkcyjnych o wysokiej przepustowości, zbadaj opcje szybkiej konfiguracji OCR dla zbalansowania szybkości i dokładności.

Jeśli przetwarzasz dokumenty zawierające zarówno tekst, jak i kody kreskowe, użyj funkcji OCR z odczytem kodów kreskowych i QR IronOCR, aby wyodrębnić wszystkie informacje podczas jednego przejścia, poprawiając wydajność.

Często Zadawane Pytania

Czym jest wykrywanie rotacji stron i dlaczego jest to wazne?

Wykrywanie rotacji stron identyfikuje, czy strona dokumentu zostala obrocona o 0°, 90°, 180° lub 270° stopni. Jest to kluczowe dla IronOCR, aby zapewnic przetwarzanie stron w poprawnej orientacji, umozliwiajac dokladne wyodrebnianie tekstu i renderowanie z plikow PDF i obrazow.

Jak szybko wykryc rotacje stron w pliku PDF za pomoca C#?

Uzyj metody DetectPageOrientation z IronOCR z minimalnym kodem: var rotationResults = new IronOcr.OcrInput().LoadPdf('doc.pdf').DetectPageOrientation(); To zwraca informacje o rotacji dla wszystkich stron, dostepne przez wlasciwosc RotationAngle.

Jakie katy rotacji mozna wykryc?

Metoda DetectPageOrientation z IronOCR moze wykrywac standardowe rotacje o 0°, 90°, 180° i 270° stopni. Dla obrazow przekrzywionych poza te standardowe rotacje, uzyj metody Deskew z IronOCR z filtrow korekcji obrazu.

Jakie informacje zwraca DetectPageOrientation?

Metoda zwraca trzy kluczowe wlasciwosci dla kazdej strony: PageNumber (indeks zero-based), RotationAngle (rotacja stopni do uzycia z metoda Rotate IronOCR) oraz HighConfidence (poziom pewnosci dla obslugi przypadkow brzegowych).

Kiedy powinienem uzywac wlasciwosci HighConfidence?

Uzyj wlasciwosci HighConfidence, pracujac z niejednoznacznymi lub niskiej jakosci dokumentami, w ktorych wykrywanie rotacji moze byc niepewne. Dokumenty z rzadka iloscia tekstu, nietypowymi ukladem lub niskiej jakosci skanami czesto zwracaja niskie poziomy pewnosci w IronOCR, wymagajac dodatkowej walidacji lub zastosowania filtrow korekcji jakosci obrazu.

Czy ta funkcja najlepiej dziala z okreslonymi typami dokumentow?

Funkcja DetectPageOrientation z IronOCR najlepiej dziala z dokumentami o duzej gestosci tekstu. Dla dokumentow z minimalnym tekstem lub zlozonymi ukladem, rozwnaz zastosowanie filtrow korekcji jakosci obrazu przed wykrywaniem dla uzyskania optymalnych wynikow.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Sprawdzone przez
Jeff Fritz
Jeffrey T. Fritz
Główny Menedżer Programu - Zespół .NET Community
Jeff jest również Głównym Menedżerem Programu dla zespołów .NET i Visual Studio. Jest producentem wykonawczym wirtualnej serii konferencji .NET Conf i prowadzi 'Fritz and Friends', transmisję na żywo dla deweloperów emitowaną dwa razy w tygodniu, gdzie rozmawia o technologii i pisze kod razem z widzami. Jeff pisze warsztaty, prezentacje i planuje treści dla największych wydarzeń Microsoft dla deweloperów, w tym Microsoft Build, Microsoft Ignite, .NET Conf i Microsoft MVP Summit.
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.