Извличане на текст
Извличане на текст
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 | Намерете шрифт по име |