Ekstrakcja tekstu

Ekstrakcja tekstu

Aspose.PDF FOSS dla .NET zapewnia kilka mechanizmów do wyodrębniania tekstu z stron PDF. TextFragmentAbsorber jest głównym narzędziem — skanuje zawartość strony i zwraca ustrukturyzowane obiekty TextFragment z informacjami o położeniu, czcionce i stylu.


Podstawowa ekstrakcja tekstu

TextAbsorber wyodrębnia cały tekst z strony lub dokumentu jako pojedynczy ciąg znaków.

using var doc = Document.Open(pdfBytes);

var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);

string pageText = absorber.Text;

Wyodrębnianie fragmentów tekstu

TextFragmentAbsorber zapewnia ustrukturyzowane wyniki. Każdy TextFragment zawiera wyodrębniony tekst, jego pozycję na stronie oraz szczegóły czcionki.

using var doc = Document.Open(pdfBytes);

var absorber = new TextFragmentAbsorber();
doc.Pages[1].Accept(absorber);

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Text: {fragment.Text}");
    Console.WriteLine($"Position: ({fragment.Position.XIndent}, {fragment.Position.YIndent})");
    Console.WriteLine($"Font: {fragment.TextState.Font.FontName}");
}

Wyszukiwanie przy użyciu wyrażeń regularnych

Przekaż wyrażenie regularne do TextFragmentAbsorber, aby znaleźć określony tekst.

var absorber = new TextFragmentAbsorber(@"\d{3}-\d{2}-\d{4}");
doc.Pages.Accept(absorber);  // Search all pages

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text}");
}

Segmenty tekstu

Każdy TextFragment może zawierać wiele obiektów TextSegment, gdy tekst obejmuje różne przebiegi czcionek.

foreach (var fragment in absorber.TextFragments)
{
    foreach (var segment in fragment.Segments)
    {
        Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
    }
}

Zarządzanie czcionkami

FontRepository udostępnia metody do znajdowania i ładowania czcionek.

var font = FontRepository.FindFont("Helvetica");

Tworzenie akapitów tekstu

TextParagraph umożliwia konstruowanie wielowierszowych bloków tekstowych do wstawienia na stronie.

var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));

Wskazówki i najlepsze praktyki

  • Użyj TextFragmentAbsorber, gdy potrzebujesz danych o położeniu i czcionce; użyj TextAbsorber do ekstrakcji zwykłego tekstu.
  • Zaakceptuj absorber na jednej stronie, aby uzyskać szybsze wyniki, lub na doc.Pages, aby przeszukać cały dokument.
  • Wyszukiwanie wyrażeń regularnych jest domyślnie rozróżniające wielkość liter — użyj prefiksu (?i) dla dopasowania bez rozróżniania wielkości liter.
  • Sprawdź TextState.Font.IsEmbedded, aby określić, czy czcionka jest osadzona w pliku PDF.
  • W przypadku dużych dokumentów przetwarzaj strony pojedynczo, aby zarządzać zużyciem pamięci.

Typowe problemy

ProblemPrzyczynaNaprawa
Wyodrębniony tekst jest zniekształconyPDF używa niestandardowego kodowania lub mapowania czcionek CIDSprawdź osadzenie czcionek; niektóre zeskanowane pliki PDF wymagają OCR
Nie znaleziono fragmentów tekstuZawartość strony to obraz, a nie tekstUżyj narzędzia OCR, aby najpierw przekonwertować obrazy stron na tekst
Wyrażenie regularne nie zwraca żadnych dopasowańWzorzec nie uwzględnia spacji wstawianych przez układ tekstu w PDFZnormalizuj spacje lub użyj luźniejszego wzorca
TextState.Font jest nullZasób czcionki brakuje w pliku PDFObsługuj sprawdzanie wartości null przy inspekcji właściwości czcionki

FAQ

Czy mogę wyodrębnić tekst z określonego obszaru strony?

Tak. Ustaw TextFragmentAbsorber.TextSearchOptions.Rectangle, aby ograniczyć wyszukiwanie do określonego obszaru strony.

Czy wyodrębnianie tekstu zachowuje kolejność czytania?

Biblioteka zwraca tekst w kolejności strumienia zawartości. W układach wielokolumnowych może być konieczne posortowanie fragmentów według pozycji.

Czy mogę wyodrębnić tekst ze wszystkich stron jednocześnie?

Tak. Wywołaj doc.Pages.Accept(absorber), aby przeszukać każdą stronę w dokumencie.


API Reference Podsumowanie

Klasa / MetodaOpis
TextAbsorberWyodrębnia cały tekst jako pojedynczy ciąg znaków
TextFragmentAbsorberWyodrębnia strukturalne fragmenty tekstu wraz z danymi o położeniu i czcionce
TextFragmentFragment tekstu z pozycją, stanem tekstu i segmentami
TextFragment.TextWyodrębniony ciąg znaków
TextFragment.PositionWspółrzędne na stronie
TextFragment.TextStateInformacje o czcionce, rozmiarze i kolorze
TextFragment.SegmentsPodciągi w obrębie fragmentu
TextParagraphKonstruktor bloków tekstu wieloliniowego
TextStateNazwa czcionki, rozmiar, kolor i właściwości stylu
FontRepositoryStatyczne wyszukiwanie i ładowanie czcionki
FontRepository.FindFontZnajdź czcionkę po nazwie

Zobacz także

 Polski