Εξαγωγή κειμένου
Εξαγωγή κειμένου
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}");
}Αναζήτηση με τακτικές εκφράσεις
Πάρτε ένα πρότυπο Regex για να 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}");
}
}Διαχείριση Font
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 |
| Δεν βρέθηκαν κείμενα από το κείμενο | Το περιεχόμενο της σελίδας είναι μια εικόνα, όχι κείμενο. | Χρησιμοποιήστε ένα εργαλείο OCR για να μετατρέψετε τις σελίδες εικόνας σε κείμενο πρώτα |
| Ο Ρέγκες δεν επιστρέφει σε αγώνες | Το πρότυπο δεν λογίζεται για το λευκό χώρο που εισάγεται από τη διάταξη κειμένου PDF | Κανονικοποίηση του λευκού χώρου ή χρήση ενός μοντέλου χαλαρωτή |
TextState.Font Είναι μηδέν | Η πηγή γράμματος λείπει από το PDF | Διαχειριστείτε μηδενικές επαληθεύσεις κατά την επιθεώρηση των ιδιοτήτων γραμματοσειράς |
FAQ
Μπορώ να εκχύλιζα κείμενο από μια συγκεκριμένη περιοχή μιας σελίδας;?
Ναι, ΣΕΤΙΔΑ TextFragmentAbsorber.TextSearchOptions.Rectangle Περιορισμός της αναζήτησης σε μια συγκεκριμένη περιοχή της σελίδας.
Η εκχύλισμα κειμένου διατηρεί την τάξη ανάγνωσης;?
Η βιβλιοθήκη επιστρέφει κείμενο με σειρά περιεχομένου-στρέμματος. Για διατάξεις πολυθώνων, μπορεί να χρειαστεί να ταξινομήσετε κομμάτια ανά θέση.
Μπορώ να βγάλω κείμενο από όλες τις σελίδες ταυτόχρονα;?
Ναι, καλέστε doc.Pages.Accept(absorber) Αναζητήστε κάθε σελίδα στο έγγραφο.
Συνοπτική αναφορά API
| Κλάση / Μέθοδος | Περιγραφή |
|---|---|
TextAbsorber | Εξέτασε ολόκληρο το κείμενο ως μία σφραγίδα |
TextFragmentAbsorber | Εξέτασε δομημένα κείμενα με στοιχεία θέσης και γραμματοσειράς |
TextFragment | Ένα κείμενο που τρέχει με θέση, κατάσταση κειμένου και τμήματα |
TextFragment.Text | Η εκχύλισμα του κειμένου string |
TextFragment.Position | Συντονισμοί στην σελίδα |
TextFragment.TextState | Πληροφορίες γραμματοσειράς, μεγέθους και χρώματος |
TextFragment.Segments | Σημειώσεις μέσα στο κομμάτι |
TextParagraph | Κατασκευαστής για πολυγραμμικά κείμενα μπλοκ |
TextState | Όνομα γραμματοσειράς, μέγεθος, χρώμα και ιδιότητες στυλ |
FontRepository | Στατική γραμματοσειρά αναζήτησης και φόρτισης |
FontRepository.FindFont | Βρείτε ένα γράμμα με το όνομα |