IRONSOFTWAREHOME

Wyodrębnianie tekstu w niewłaściwej kolejności z gęsto upakowanych tabel

Curtis Chau
Curtis Chau
Updated: 10 czerwca 2026

Tekst wyodrębniony z gęsto upakowanych układów tabel lub formularzy wydaje się być pomieszany. Znaki z sąsiednich rzędów są przeplatane, na przykład, "Unikalny Numer 123456789" jest wyodrębniany jako "U123456789nikalny Numer".

Jest to znane ograniczenie ekstrakcji page.Lines dla układów o gęsto upakowanych elementach. page.Lines grupuje znaki z użyciem wbudowanej tolerancji pionowej, która nie jest konfigurowalna. Gdy dwa widoczne rzędy w komórce tabeli są oddalone od siebie o punkt lub dwa, grupator łączy oba rzędy w jedną logiczną linię i sortuje znaki od lewej do prawej, przeplatając je. Metoda ExtractTextFromPage(i) domyślnie używa kolejności strumienia zawartości, która może nie odpowiadać wizualnej kolejności czytania w formularzach PDF.

Rozwiązanie

Zalecane: Wyodrębnianie przy użyciu TextChunks z możliwością regulacji tolerancji

Każdy TextChunk ujawnia swoje BoundingBox, co pozwala na grupowanie według pozycji pionowej i sortowanie w każdym wierszu według pozycji poziomej:

using IronPdf.Pages;
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();
}

Rozpocznij od rowTolerance = 2.0. Jeśli wiersze nadal się łączą, obniż to do 1.0 lub 0.5. Dla bardziej precyzyjnej kontroli, zastąp page.Characters na page.TextChunks.

Alternatywa: Wyodrębnianie w kolejności wizualnej

Dla plików PDF, w których tylko kolejność strumienia treści jest błędna:

pdf.ExtractTextFromPage(i, TextExtractionOrder.VisualOrder);

Dla PDF-ów z liniami, które są wizualnie bardzo blisko siebie, podejście TextChunks lepiej radzi sobie z małymi tolerancjami.

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ęczników.

...
Czytaj więcej

Gotowy, aby rozpocząć?

Nuget Downloads 20,878,335Wersja:2026.9właśnie wydany

Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta
Biblioteka C# NuGet dla plików PDF
Zainstaluj za pomocą NuGet

Wersja: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. W Eksploratorze Rozwiązań, kliknij prawym przyciskiem Myszy na Odwołania, Zarządzaj pakietami NuGet
  2. Wybierz opcję Przeglądaj i wyszukaj „IronPdf”
  3. Wybierz pakiet i zainstaluj
DLL PDF dla C#
Pobierz DLL

Wersja: 2026.9

lub pobierz instalator Windows tutaj.

  1. Pobierz i rozpakuj IronPDF do lokalizacji takiej jak ~/Libs w katalogu Solution
  2. W Eksploratorze rozwiązań programu Visual Studio kliknij prawym przyciskiem myszy opcję Odwołania. Wybierz opcję Przeglądaj, „IronPdf.dll”

Licencje od 749 USD

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta