Извличане на текст

Извличане на текст

Aspose.PDF FOSS for .NET provides several mechanisms for extracting text from PDF страници. TextFragmentAbsorber е основният инструмент сканира съдържанието на страницата. и структурирани доходи TextFragment обекти с позиция, шрифт и стил информация.


Извличане на основен текст

TextAbsorber извлича целия текст от страница или документ като един ред.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Извличане на текстови фрагменти

TextFragmentAbsorber Всяка от тях дава структурирани резултати. TextFragment включва извлечения текст, неговото положение на страницата и детайли за шрифта.

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}");
}

Търсене с редовни изрази

Предаване на реджекс модел на: TextFragmentAbsorber да намерите конкретен текст.

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}");
}

Текстови сегменти

Всеки от тях. TextFragment може да съдържа множество: TextSegment обекти, когато текстът е Обхваща различни шрифтове.

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

Управление на шрифтовете

FontRepository предоставя методи за намиране и зареждане на шрифтове.

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

Текстови параграфи за изграждане

TextParagraph позволява изграждане на многоречни текстови блокове за вмъкване в Страница.

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

Съвети и най-добри практики

  • Използване на: TextFragmentAbsorber когато се нуждаете от данни за позицията и шрифта; използвайте TextAbsorber за извличане на обикновен текст.
  • Приемайте абсорбтора на една страница за по-бързи резултати или върху doc.Pages да претърси целия документ.
  • Търсенето на редовни изрази е с чувствителност към големи и малки букви по подразбиране използване (?i) префикс за съвпадение без чувствителност към малки и големи букви.
  • Проверка. TextState.Font.IsEmbedded да се определи дали шрифт е вграден във PDF.
  • За големи документи обработвайте страниците по едно за управление на използването на паметта.

Общи проблеми

ИзданиеПричина за товаРемонтиране
Извлечен текст е объркан.PDF използва нестандартно кодиране или CID шрифтна карта.Проверете вграждането на шрифта; някои сканирани PDF файлове изискват OCR
Не са намерени текстови фрагменти.Съдържанието на страницата е изображение, а не текст.Използвайте инструмент за преобразуване на изображенията в текст първо.
Regex не връща съвпаденияМоделът не отчита бели пространства, вмъкнати чрез PDF текстно оформление.Нормализирайте белите пространства или използвайте по-свободен модел.
TextState.Font е нулеваЛипсва ресурс на шрифта в PDF-тоИзползване на проверки за нулеви при проверка на свойствата на шрифта

FAQ

Мога ли да извлека текст от конкретен регион на страница?

Да, настройка. TextFragmentAbsorber.TextSearchOptions.Rectangle да ограничи търсенето. на определена област от страницата.

Извличането на текст запазва ли реда?

Библиотеката връща текст в ред на съдържанието. За многостолбови оформления може да се наложи да сортирате фрагментите по позиция.

Мога ли да извлека текст от всички страници наведнъж?

Да, обади се. doc.Pages.Accept(absorber) да търси във всяка страница на документа.


Снимка на API референтна информация

Клас / методОписание на състоянието
TextAbsorberИзвлича всички текстове като един ред .
TextFragmentAbsorberИзвлича структурирани текстови фрагменти с данни за позицията и шрифта.
TextFragmentТекст, изпълнен с позиция, състояние на текста и сегменти
TextFragment.TextИзвлеченият текстов ред
TextFragment.PositionКоординати на страницата
TextFragment.TextStateИнформация за шрифта, размера и цвета
TextFragment.SegmentsПод-пробега в рамките на фрагмента.
TextParagraphСъздател за многоречни текстови блокове
TextStateИмето на шрифта, размера, цвета и стилните свойства
FontRepositoryСтатичен търсене и зареждане на шрифт
FontRepository.FindFontНамерете шрифт по име

Вижте също:

 Български