PDF'lerde Sayfa Yönlendirmesi ve Dönüşü

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

PDF'lerle çalışmak, genellikle bir sayfayla ilgili iki şeyi bilmeyi gerektirir: yönlendirmesi (dikey veya yatay) ve içeriğin döndürülüp döndürülmediği. Bunu öğrenmenin iki yolu vardır ve hafifçe farklı sorulara cevap verir.

  • PdfDocument.Pages[i].PageRotation, döndürme bilgisini PDF metasından okur.
  • OcrInput.DetectPageOrientation(), OCR ile görsel olarak durumu algılar.

Yönlendirme ile Dönüş

Bunlar aynı özellik değiller:

  • Sayfa yönlendirmesi: sayfa düzeni. Dikey yükseklik genişlikten büyük demektir; Yatay genişlik yükseklikten büyük demektir.
  • Döndürme açısı: içeriğin doğal okuma yönüne göre durumu, örneğin 90, 180, vb.

Seçenek 1: Metadata'dan Dönüşü Okuyun

PageRotation, PDF dosyasına gömülü döndürme değerini döndürür, bu sayede içeriğin programatik olarak nasıl döndürüldüğünü belirtir. İyi biçimlenmiş PDF'ler için bu güvenilir ve tutarlıdır.

var pdf = PdfDocument.FromFile("sample.pdf");
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    var orientation = page.Width > page.Height ? "Landscape" : "Portrait";
    var rotation = page.PageRotation;
    Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees");
}
var pdf = PdfDocument.FromFile("sample.pdf");
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    var orientation = page.Width > page.Height ? "Landscape" : "Portrait";
    var rotation = page.PageRotation;
    Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees");
}
Imports System

Dim pdf = PdfDocument.FromFile("sample.pdf")
For i As Integer = 0 To pdf.PageCount - 1
    Dim page = pdf.Pages(i)
    Dim orientation = If(page.Width > page.Height, "Landscape", "Portrait")
    Dim rotation = page.PageRotation
    Console.WriteLine($"Page {i + 1}: {orientation}, Rotation: {rotation} degrees")
Next
$vbLabelText   $csharpLabel

Tek seferde iki bilgi elde edersiniz: yükseklik-genişlik karşılaştırmasından yönlendirme ve metadata'dan doğrudan dönüş açısı.

En iyi kullanım: tutarlı, geçerli metadatalı yapılandırılmış PDF'ler.

Seçenek 2: OCR ile Yönlendirmeyi Algılayın

Metadata eksik veya güvenilmez olduğunda, sayfayı görsel olarak analiz edin. DetectPageOrientation(), her sayfanın düzenini inceler ve olası okuma yönünü, metadatalara bağlı kalmadan tahmin eder.

using var input = new OcrInput();
input.LoadPdf("sample.pdf");
var results = input.DetectPageOrientation();
foreach (var result in results)
{
    Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees");
}
using var input = new OcrInput();
input.LoadPdf("sample.pdf");
var results = input.DetectPageOrientation();
foreach (var result in results)
{
    Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees");
}
Imports System

Using input As New OcrInput()
    input.LoadPdf("sample.pdf")
    Dim results = input.DetectPageOrientation()
    For Each result In results
        Console.WriteLine($"Page {result.PageNumber + 1}: Rotation: {result.RotationAngle} degrees")
    Next
End Using
$vbLabelText   $csharpLabel

Bu, taranmış belgeler, görüntü tabanlı PDF'ler ve uygun metadata'dan yoksun herhangi bir dosya için doğru seçimdir.

Buradaki doğruluk, metin yoğunluğu ve netlikle izler. Seyrek veya hizasız metin yanlış sonuç üretebilir, bu yüzden OCR'yi daha yoğun bir metin bölgesi üzerinde bir Rectangle ile sınırlandırarak algılamayı stabilize edin.

Tavsiye

  • Dijital PDF'ler: metadata doğru olduğunda PdfDocument.PageRotation tercih edilir.
  • Tarama veya görüntü tabanlı PDF'ler: metadata eksik veya güvenilmez olduğunda OcrInput.DetectPageOrientation() kullanılır.

Kritik iş akışları için her iki yöntemi de çalıştırın ve herhangi bir tutarsızlığı gidermek için kendi mantığınızı uygulayın. Tutarsız dönüş sonuçları görüyorsanız, belirli sayfa düzenini kontrol edin ve bir yöntemi diğerine karşı doğrulayın.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 6,136,090 | Sürüm: 2026.7 yeni yayınlandı
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package IronOcr
örnek çalıştır görüntünüzün aranabilir metin haline gelmesini izleyin.