Jak wykryć obrót strony w C# z IronOCR
Metoda DetectPageOrientation IronOCR automatycznie identyfikuje kąty obrotu stron (0°, 90°, 180°, 270°) w dokumentach PDF i obrazach. Zwraca właściwość RotationAngle dla każdej strony, umożliwiając programowe poprawienie orientacji z oceną 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żyjDetectPageOrientation do identyfikacji obrotu strony
Ten przykład demonstruje użycie DetectPageOrientation IronOCR na PDF do uzyskania dostępu do właściwości RotationAngle. Zapewnia szybkie wykrywanie i korektę rotacji strony przy minimalnej ilości kodu.
-
1Install IronOCR with NuGet Package Manager
-
2Skopiuj i uruchom ten fragment kodu.
var rotationResults = new IronOcr.OcrInput().LoadPdf("doc.pdf").DetectPageOrientation(); Console.WriteLine(rotationResults.First().RotationAngle);C# -
3Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C#, aby wykryć rotację strony
- Zaimportuj dokument PDF i obrazy do odczytu
- Użyj metody
DetectPageOrientation, aby wykryć rotację dla wszystkich stron - Uzyskaj dostęp do właściwości RotationAngle, aby poprawić obrót strony
- Uzyskaj dostęp do właściwości HighConfidence, aby obsłużyć przypadki brzegowe
Jak wykryć rotację strony w moich dokumentach?
Po załadowaniu dokumentu użyj metody DetectPageOrientation, aby zidentyfikować obrót każdej strony. Ta metoda obsługuje 0, 90, 180 i 270 stopni. Dla zniekształconych obrazów poza tymi standardowymi obrotami, użyj metody Deskew z filtrów korekcji obrazu IronOCR. Następnie obróć obraz z powrotem do jego pierwotnej orientacji za pomocą wykrytego kąta. Pracujmy z przykładowym PDF-em.
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 resultCo oznaczają wyniki wykrywania?
PageNumber: Indeks zerowy strony.RotationAngle: Kąt obrotu w stopniach. Użyj z metodąRotate, aby poprawić orientację.HighConfidence: Poziom pewności w wyniku orientacji w przypadku krawędziowych przypadków.
Kiedy używać wartości wysokiej pewności?
Właściwość HighConfidence jest kluczowa dla niejednoznacznych lub niskiej jakości dokumentów, gdzie detekcja obrotu może być niepewna. 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 obrotu, 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 Then
input.Rotate(360 - result.RotationAngle) ' Rotate back to 0°
End IfDla 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 przyjmuje opcjonalny parametr do sterowania szczegółowością detekcji. Podając enumy OrientationDetectionMode, możesz dostosować prędkość i dokładność detekcji w zależności od swoich wymagań.
Oto, jak to zaimplementować:
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 UsingKtóry tryb wykrywania powinienem wybrać?
Cztery opcje prędkości są dostępne dla OrientationDetectionMode:
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ślne 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:
- Rozdzielczość obrazu: Wyższe ustawienia DPI poprawiają dokładność, ale zwiększają czas przetwarzania. 150-300 DPI zazwyczaj wystarcza do wykrywania rotacji.
- 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.
- 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.
- 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 z mieszanym orientowaniem przetwarzaj każdą stronę osobno z DetectPageOrientation, następnie stosuj poprawki obrotów strona po stronie przed OCR. 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 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
NextDla 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, umożliwiajac 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.
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 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ęczników.