Textutdrag
Textutdrag
Aspose.PDF FOSS for .NET provides several mechanisms for extracting text from PDF sidor . TextFragmentAbsorber är det primära verktyget – det skannar innehåll på sidan och återvänder strukturerat TextFragment objekt med position, font och stil Information om .
Bas text extraktion
TextAbsorber extraherar hela texten från en sida eller dokument som ett enda sträng.
using var doc = Document.Open(pdfBytes);
var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);
string pageText = absorber.Text;Extract text fragment
TextFragmentAbsorber Det finns strukturerade resultat. varje TextFragment Innehåller den extraherade texten, dess position på sidan och teckensnitt detaljer.
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}");
}Sök med vanliga uttryck
Passera ett regex-mönster till TextFragmentAbsorber att hitta en specifik text.
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}");
}Text segment
Each TextFragment kan innehålla flera TextSegment Om objektet när texten Spänning olika font runs.
foreach (var fragment in absorber.TextFragments)
{
foreach (var segment in fragment.Segments)
{
Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
}
}Fonthantering
FontRepository ger metoder för att hitta och ladda font.
var font = FontRepository.FindFont("Helvetica");Skapa textparagrafer
TextParagraph tillåter att bygga flerlinje textblock för insättning i En sida .
var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));Tips och bästa praxis
- Användning
TextFragmentAbsorbernär du behöver position och fontdata; användTextAbsorberför platt textutvinning. - Acceptera absorberaren på en enda sida för snabbare resultat, eller på
doc.PagesSök hela dokumentet. - Regelbunden uttryckssökning är fallsensitiv på grund av standard - användning
(?i)Förskott för fallsensitiv matchning. - Check
TextState.Font.IsEmbeddedför att avgöra om ett tecken är inbäddat i PDF. - För stora dokument, behandla sidor en gång för att hantera minnesanvändning.
Vanliga frågor
| Issue | Cause | Fixar |
|---|---|---|
| Text som extraheras är förskjutet | PDF använder en icke-standardkodning eller CID fontmappning | Kontrollera font-inbyggnad; vissa skannade PDF-filer kräver OCR |
| Inga textfragment hittade | Innehållet är en bild, inte text | Använd ett OCR-verktyg för att konvertera bildsidor till text först |
| Regex återvänder inga matcher | Pattern räknar inte för vitutrymme som läggs in i PDF-text layout | Normalisera vitrum eller använda en looser mönster |
TextState.Font är noll | Fontresurs saknas från PDF-filen | Handla nollcheck när du granskar fontegenskaper |
FAQ
Kan jag extrahera text från en viss region av en sida?
Ja, Set TextFragmentAbsorber.TextSearchOptions.Rectangle Begränsa sökningen till ett specifikt område på sidan.
Skall textutvinning behålla läsordningen?
Biblioteket returnerar text i innehållsström ordning. För flerkolumns layouter kan du behöva sortera fragment per position.
Kan jag extrahera text från alla sidor på en gång?
Ja, ringa till doc.Pages.Accept(absorber) Sök efter varje sida i dokumentet.
API Referens sammanfattning
| Klass / Metod | Beskrivning |
|---|---|
TextAbsorber | Extraherar hela texten som en enda sträng |
TextFragmentAbsorber | Extraherar strukturerade textfragment med position och fontdata |
TextFragment | En text som körs med position, textstatus och segment |
TextFragment.Text | Den extraherade textringen |
TextFragment.Position | Koordinatorer på sidan |
TextFragment.TextState | Font, storlek och färginformation |
TextFragment.Segments | Sub-rundar inom fragmentet |
TextParagraph | Byggare för flerlinje textblock |
TextState | Fontnamn, storlek, färg och stil egenskaper |
FontRepository | Statisk font lookup och laddning |
FontRepository.FindFont | Hitta en font per namn |