Sıkışık Tablolardan Sıradışı Metin Çıkartma

Curtis Chau
Curtis Chau
Updated: 10 Haziran 2026

Sıkışık tablo veya form düzenlerinden çıkarılan metin karışık olarak görünür. Yan yana sıralardan karakterler iç içe geçer, örneğin, "Benzersiz Numara 123456789" "U123456789nique Number" olarak çıkarılır.

Bu, yoğun yerleştirilmiş düzenler için page.Lines çıkarımının bilinen bir sınırlamasıdır. page.Lines, yerleşik ve yapılandırılamayan dikey tolerans kullanarak karakterleri gruplar. Bir tablo hücresindeki iki görünür satır arasında sadece bir veya iki nokta mesafe olduğunda, gruplandırıcı her iki satırı bir mantıksal satıra çökertir ve karakterleri soldan sağa sıralayarak iç içe geçirir. ExtractTextFromPage(i) yöntemi varsayılan olarak içerik akış sırasına göredir, bu da form PDF'lerinde görsel okuma sırasıyla eşleşmeyebilir.

Çözüm

Tavsiye Edilen: Ayarlanabilir tolerans ile TextChunks kullanarak çıkarma

Her TextChunk, dikey pozisyona göre gruplamaya ve her satırda yatay pozisyona göre sıralamaya izin veren BoundingBox açığa çıkarır:

using IronPdf.Pages;
using System;
using System.Linq;
using System.Text;

static string ExtractTextUsingTextChunks(IPdfPage page, double rowTolerance = 2.0)
{
    var rows = page.TextChunks
        .Where(c => !string.IsNullOrWhiteSpace(c.Contents))
        .GroupBy(c => Math.Round(c.BoundingBox.Top / rowTolerance) * rowTolerance)
        .OrderByDescending(g => g.Key);

    var extractedText = new StringBuilder();
    foreach (var row in rows)
    {
        var line = string.Join(" ",
            row.OrderBy(c => c.BoundingBox.Left)
               .Select(c => c.Contents.Trim())
               .Where(text => !string.IsNullOrWhiteSpace(text)));
        extractedText.AppendLine(line);
    }
    return extractedText.ToString();
}

rowTolerance = 2.0 ile başlayın. Satırlar hala birleşiyorsa, onu 1.0 veya 0.5 olarak düşürün. Daha hassas kontrol için, page.TextChunks yerine page.Characters ikame edin.

Alternatif: Görsel sıra ile çıkarma

Sadece içerik akışı sırası yanlış olan PDF'ler için:

pdf.ExtractTextFromPage(i, TextExtractionOrder.VisualOrder);

Satırların görsel olarak birbirine çok yakın olduğu PDF'ler için, TextChunks yaklaşımı dar toleransları daha iyi yönetir.

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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

Daha Fazla Oku

Başlamaya Hazır mısınız?

Nuget Downloads 21,739,885Sürüm:2026.10yeni yayınlandı