PDF'lerde Sayfa Yönlendirmesi ve Dönüşü
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
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
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.PageRotationtercih 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.

