Εξαγωγή κειμένου στηλών σε αρχείο PDF

Εισαγωγή

Εργάζεστε με αρχεία PDF και πρέπει να εξαγάγετε κείμενο σε συγκεκριμένη μορφή στήλης; Είτε επεξεργάζεστε τιμολόγια, αναφορές ή οποιαδήποτε δομημένα έγγραφα, η εξαγωγή κειμένου με ακρίβεια από ένα PDF μπορεί να είναι μια δύσκολη υπόθεση. Αυτό είναι όπου το Aspose.PDF για .NET κάνει βήματα για να απλοποιήσει τη διαδικασία. Σε αυτό το σεμινάριο, θα σας καθοδηγήσουμε στον τρόπο εξαγωγής στηλών κειμένου από ένα αρχείο PDF με ευκολία.

Προαπαιτούμενα

Πριν βουτήξουμε στον κώδικα, ας καλύψουμε τα βασικά πράγματα που θα χρειαστείτε:

  • Aspose.PDF για .NET: Βεβαιωθείτε ότι έχετε εγκατεστημένη την πιο πρόσφατη έκδοση του Aspose.PDF για .NET. Εάν όχι, μπορείτεκατεβάστε το εδώ.
  • Περιβάλλον ανάπτυξης: Θα χρειαστείτε το Visual Studio ή άλλο περιβάλλον ανάπτυξης .NET για να εργαστείτε με τον κώδικα.
  • Έγγραφο PDF: Έχετε διαθέσιμο ένα δείγμα εγγράφου PDF, κατά προτίμηση ένα με στήλες κειμένου, καθώς θα εξάγουμε κείμενο από αυτό.

Εάν δεν έχετε εγκαταστήσει ακόμα το Aspose.PDF για .NET, μπορείτε να πάρετε έναδωρεάν δοκιμή ήαγοράστε μια άδεια για πλήρη χαρακτηριστικά. Μπορείτε επίσης να κάνετε αίτηση για απροσωρινή άδεια αν χρειαστεί.

Εισαγωγή χώρων ονομάτων

Για να χρησιμοποιήσετε το Aspose.PDF για .NET στο έργο σας, θα χρειαστεί να εισαγάγετε τους ακόλουθους χώρους ονομάτων:

using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;

Οδηγός βήμα προς βήμα: Εξαγωγή στηλών κειμένου από ένα PDF

Τώρα, ας αναλύσουμε κάθε μέρος του κώδικα για να κατανοήσουμε καλύτερα πώς λειτουργεί. Ακολουθήστε καθώς προχωράμε βήμα προς βήμα, εξηγώντας κάθε τμήμα της διαδικασίας.

Βήμα 1: Φορτώστε το έγγραφο PDF

Το πρώτο πράγμα που πρέπει να κάνετε είναι να φορτώσετε το αρχείο PDF σας στοDocumentαντικείμενο. Αυτός είναι ο τρόπος με τον οποίο το Aspose.PDF αλληλεπιδρά με το έγγραφό σας.

string dataDir = "YOUR DOCUMENT DIRECTORY";
Document pdfDocument = new Document(dataDir + "ExtractTextPage.pdf");

Σε αυτό το βήμα, απλώς ορίζουμε τον κατάλογο όπου είναι αποθηκευμένο το έγγραφο PDF σας. Αντικαθιστώ"YOUR DOCUMENT DIRECTORY" με τη διαδρομή προς το τοπικό σας αρχείο PDF. ΟDocument Το αντικείμενο φορτώνει το PDF στη μνήμη, καθιστώντας το προσβάσιμο για περαιτέρω επεξεργασία.

Βήμα 2: Ρυθμίστε τον απορροφητή τμημάτων κειμένου

Στη συνέχεια, θα χρησιμοποιήσουμε έναTextFragmentAbsorber για να απορροφήσει ή να αποτυπώσει όλο το κείμενο από το αρχείο PDF. Αυτή η κατηγορία απορροφητή έχει σχεδιαστεί για να εξάγει θραύσματα κειμένου από συγκεκριμένες περιοχές στο PDF σας, γεγονός που το καθιστά ιδανικό για την εξαγωγή στηλών κειμένου.

TextFragmentAbsorber tfa = new TextFragmentAbsorber();
pdfDocument.Pages.Accept(tfa);
TextFragmentCollection tfc = tfa.TextFragments;

Εδώ, δημιουργούμε ένα παράδειγμα τουTextFragmentAbsorber και εφαρμόστε το σε όλες τις σελίδες του PDF χρησιμοποιώνταςAccept() . ΟTextFragmentCollection αποθηκεύει το εξαγόμενο κείμενο και από αυτήν τη συλλογή μπορούμε να χειριστούμε ή να εξαγάγουμε κείμενο όπως απαιτείται.

Βήμα 3: Προσαρμόστε το μέγεθος γραμματοσειράς του εξαγόμενου κειμένου

Αφού καταγράψετε τα τμήματα κειμένου, ίσως θελήσετε να μειώσετε το μέγεθος της γραμματοσειράς τους, ειδικά όταν το αρχικό κείμενο είναι πολύ μεγάλο. Σε αυτό το παράδειγμα, μειώνουμε το μέγεθος της γραμματοσειράς κατά 70%.

foreach (TextFragment tf in tfc)
{
    // Μειώστε το μέγεθος της γραμματοσειράς κατά 70%
    tf.TextState.FontSize = tf.TextState.FontSize * 0.7f;
}

Αυτός ο κώδικας περνά μέσα από το καθέναTextFragment στη συλλογή και μειώνει το μέγεθος της γραμματοσειράς της κατά 70%. Η προσαρμογή του μεγέθους της γραμματοσειράς μπορεί να διευκολύνει τη διαχείριση του εξαγόμενου κειμένου, ειδικά εάν το μορφοποιείτε για διαφορετικούς σκοπούς.

Βήμα 4: Αποθηκεύστε το έγγραφο σε μια ροή μνήμης

Αφού τροποποιήσουμε το κείμενο, αποθηκεύουμε το PDF σε αMemoryStream. Αυτό μας επιτρέπει να διατηρήσουμε το έγγραφο στη μνήμη για περαιτέρω επεξεργασία χωρίς να χρειάζεται να το ξαναγράψουμε στο δίσκο.

Stream st = new MemoryStream();
pdfDocument.Save(st);
pdfDocument = new Document(st);

Εδώ, αποθηκεύουμε το PDF σε μια ροή μνήμης και στη συνέχεια επαναφορτώνουμε το έγγραφο. Αυτή η μέθοδος είναι χρήσιμη όταν εργάζεστε με μεγάλα αρχεία και θέλετε να αποφύγετε περιττές λειτουργίες δίσκου.

Βήμα 5: Εξαγωγή όλου του κειμένου χρησιμοποιώντας το Text Absorber

Τώρα που ετοιμάσαμε το PDF, ήρθε η ώρα να εξαγάγουμε το κείμενο. θα χρησιμοποιήσουμεTextAbsorber για να αρπάξετε όλο το κείμενο από το έγγραφο.

TextAbsorber textAbsorber = new TextAbsorber();
pdfDocument.Pages.Accept(textAbsorber);
String extractedText = textAbsorber.Text;

Σε αυτό το βήμα, τοTextAbsorber απορροφά όλο το κείμενο από το PDF και το εξαγόμενο κείμενο αποθηκεύεται στοextractedText σειρά. Εδώ συμβαίνει το μαγικό - οι στήλες του κειμένου σας είναι πλέον σε μορφή απλού κειμένου!

Βήμα 6: Αποθηκεύστε το εξαγόμενο κείμενο σε ένα αρχείο

Τέλος, αποθηκεύουμε το εξαγόμενο κείμενο σε α.txt αρχείο για εύκολη πρόσβαση και περαιτέρω χρήση.

dataDir = dataDir + "ExtractColumnsText_out.txt";
System.IO.File.WriteAllText(dataDir, extractedText);
Console.WriteLine("\nColumns text extracted successfully from Pages of PDF Document.\nFile saved at " + dataDir);

Αυτός ο κώδικας γράφει το εξαγόμενο κείμενο σε ένα νέο.txt αρχείο και το αποθηκεύει στον καθορισμένο κατάλογο σας. Στην κονσόλα εμφανίζεται ένα μήνυμα που επιβεβαιώνει ότι η διαδικασία ήταν επιτυχής.

Σύναψη

Ορίστε το! Η εξαγωγή στηλών κειμένου από ένα αρχείο PDF χρησιμοποιώντας το Aspose.PDF για .NET είναι ευκολότερη από ό,τι νομίζετε. Με λίγες μόνο γραμμές κώδικα, μπορείτε να φορτώσετε ένα PDF, να εξαγάγετε συγκεκριμένο κείμενο, να προσαρμόσετε τη μορφοποίηση και να αποθηκεύσετε τα αποτελέσματα σε ένα αρχείο κειμένου.

Αυτή η τεχνική είναι απίστευτα χρήσιμη για την επεξεργασία δομημένων εγγράφων όπως πίνακες, αναφορές ή οποιοδήποτε περιεχόμενο οργανωμένο σε στήλες. Είτε χρειάζεται να αυτοματοποιήσετε την εξαγωγή δεδομένων είτε να επεξεργαστείτε μαζικά έγγραφα, το Aspose.PDF παρέχει τα εργαλεία για να το κάνετε αποτελεσματικά.

Συχνές ερωτήσεις

Μπορώ να εξαγάγω κείμενο από συγκεκριμένες σελίδες ενός PDF;

Ναί! Μπορείτε να τροποποιήσετε τοTextFragmentAbsorber για να στοχεύσετε συγκεκριμένες σελίδες χρησιμοποιώντας τοpdfDocument.Pages[pageIndex].Accept(tfa); μέθοδος.

Είναι δυνατή η εξαγωγή κειμένου μόνο από μία στήλη σε ένα PDF πολλών στηλών;

Ναι, αλλά θα χρειαστεί να εργαστείτε με τις συντεταγμένες των τμημάτων κειμένου χρησιμοποιώνταςTextFragment.Rectangle για να στοχεύσετε συγκεκριμένες περιοχές του εγγράφου.

Πώς μπορώ να βελτιώσω την ακρίβεια της εξαγωγής κειμένου;

Για καλύτερη ακρίβεια, βεβαιωθείτε ότι η δομή του PDF είναι καλά καθορισμένη και αποφύγετε έγγραφα με πολύπλοκες διατάξεις. Μπορείτε επίσης να ρυθμίσετε με ακρίβεια τοTextFragmentAbsorber για εξαγωγή κειμένου με βάση τα στυλ γραμματοσειράς, τα μεγέθη ή τις περιοχές.

Το Aspose.PDF υποστηρίζει την εξαγωγή κειμένου από σαρωμένα έγγραφα;

Ναι, αλλά θα χρειαστεί να χρησιμοποιήσετε την τεχνολογία OCR (Optical Character Recognition). Το Aspose παρέχει εργαλεία και για αυτό.

Πώς μπορώ να χειρίζομαι μεγάλα αρχεία PDF με χιλιάδες σελίδες;

Για μεγάλα αρχεία PDF, επεξεργαστείτε το έγγραφο σε κομμάτια εξάγοντας κείμενο από μερικές σελίδες κάθε φορά για να αποφύγετε την υψηλή χρήση μνήμης.