Spaltentext in PDF-Datei extrahieren

Einführung

Arbeiten Sie mit PDF-Dateien und müssen Text in einem bestimmten Spaltenformat extrahieren? Egal, ob Sie Rechnungen, Berichte oder strukturierte Dokumente verarbeiten, das genaue Extrahieren von Text aus einer PDF-Datei kann eine knifflige Angelegenheit sein. Hier kommt Aspose.PDF für .NET ins Spiel, um den Prozess zu vereinfachen. In diesem Tutorial zeigen wir Ihnen, wie Sie ganz einfach Textspalten aus einer PDF-Datei extrahieren.

Voraussetzungen

Bevor wir uns in den Code vertiefen, wollen wir die wesentlichen Dinge abdecken, die Sie benötigen:

  • Aspose.PDF für .NET: Stellen Sie sicher, dass Sie die neueste Version von Aspose.PDF für .NET installiert haben. Wenn nicht, können SieLaden Sie es hier herunter.
  • Entwicklungsumgebung: Sie benötigen Visual Studio oder eine andere .NET-Entwicklungsumgebung, um mit dem Code zu arbeiten.
  • PDF-Dokument: Halten Sie ein Beispiel-PDF-Dokument bereit, vorzugsweise eines mit Textspalten, da wir daraus Text extrahieren werden.

Wenn Sie Aspose.PDF für .NET noch nicht installiert haben, können Sie sich einKostenlose Testversion odereine Lizenz kaufen für alle Funktionen. Sie können auch einevorläufige Lizenz falls erforderlich.

Namespaces importieren

Um Aspose.PDF für .NET in Ihrem Projekt zu verwenden, müssen Sie die folgenden Namespaces importieren:

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

Schritt-für-Schritt-Anleitung: Textspalten aus einer PDF extrahieren

Lassen Sie uns nun jeden Teil des Codes aufschlüsseln, um besser zu verstehen, wie er funktioniert. Folgen Sie uns, während wir Schritt für Schritt jeden Abschnitt des Prozesses erklären.

Schritt 1: Laden Sie das PDF-Dokument

Als erstes müssen Sie Ihre PDF-Datei in dasDocumentObjekt. So interagiert Aspose.PDF mit Ihrem Dokument.

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

In diesem Schritt definieren wir einfach das Verzeichnis, in dem Ihr PDF-Dokument gespeichert ist. Ersetzen Sie"YOUR DOCUMENT DIRECTORY" mit dem Pfad zu Ihrer lokalen PDF-Datei. DieDocument Objekt lädt das PDF in den Speicher und macht es für die weitere Verarbeitung zugänglich.

Schritt 2: Richten Sie den Textfragmentabsorber ein

Als nächstes verwenden wir einTextFragmentAbsorber um den gesamten Text aus der PDF-Datei aufzunehmen oder zu erfassen. Diese Absorberklasse ist dafür ausgelegt, Textfragmente aus bestimmten Bereichen Ihrer PDF-Datei zu extrahieren, was sie ideal für das Extrahieren von Textspalten macht.

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

Hier erstellen wir eine Instanz vonTextFragmentAbsorber und wenden Sie es auf alle Seiten der PDF an, indem SieAccept() . DerTextFragmentCollection speichert den extrahierten Text und aus dieser Sammlung können wir Text nach Bedarf bearbeiten oder extrahieren.

Schritt 3: Passen Sie die Schriftgröße des extrahierten Textes an

Nachdem Sie die Textfragmente erfasst haben, möchten Sie möglicherweise deren Schriftgröße reduzieren, insbesondere wenn der Originaltext zu groß ist. In diesem Beispiel reduzieren wir die Schriftgröße um 70 %.

foreach (TextFragment tf in tfc)
{
    // Reduzieren Sie die Schriftgröße um 70 %
    tf.TextState.FontSize = tf.TextState.FontSize * 0.7f;
}

Dieser Code durchläuft jedeTextFragment in der Sammlung und reduziert die Schriftgröße um 70 %. Durch Anpassen der Schriftgröße kann der extrahierte Text leichter zu handhaben sein, insbesondere wenn Sie ihn für verschiedene Zwecke formatieren.

Schritt 4: Speichern Sie das Dokument in einem Memory Stream

Nach der Textbearbeitung speichern wir das PDF in einemMemoryStream. Dadurch können wir das Dokument zur weiteren Verarbeitung im Speicher behalten, ohne es wieder auf die Festplatte schreiben zu müssen.

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

Hier speichern wir das PDF in einem Speicherstream und laden das Dokument dann erneut. Diese Methode ist nützlich, wenn Sie mit großen Dateien arbeiten und unnötige Festplattenvorgänge vermeiden möchten.

Schritt 5: Extrahieren Sie den gesamten Text mit Text Absorber

Nachdem wir nun das PDF vorbereitet haben, ist es an der Zeit, den Text zu extrahieren. Wir verwendenTextAbsorber um den gesamten Text aus dem Dokument zu erfassen.

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

In diesem Schritt wird derTextAbsorber nimmt den gesamten Text aus dem PDF auf und der extrahierte Text wird imextractedText Zeichenfolge. Hier geschieht die Magie – Ihre Textspalten liegen jetzt im Nur-Text-Format vor!

Schritt 6: Den extrahierten Text in einer Datei speichern

Abschließend speichern wir den extrahierten Text in einem.txt Datei für einfachen Zugriff und weitere Verwendung.

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

Dieser Code schreibt den extrahierten Text in eine neue.txt Datei und speichert sie in dem von Ihnen angegebenen Verzeichnis. In der Konsole wird eine Meldung angezeigt, die bestätigt, dass der Vorgang erfolgreich war.

Abschluss

Da haben Sie es! Das Extrahieren von Textspalten aus einer PDF-Datei mit Aspose.PDF für .NET ist einfacher, als Sie vielleicht denken. Mit nur wenigen Codezeilen können Sie eine PDF-Datei laden, bestimmten Text extrahieren, die Formatierung anpassen und die Ergebnisse in einer Textdatei speichern.

Diese Technik ist unglaublich nützlich für die Verarbeitung strukturierter Dokumente wie Tabellen, Berichte oder beliebiger in Spalten organisierter Inhalte. Egal, ob Sie die Datenextraktion automatisieren oder Massendokumente verarbeiten müssen, Aspose.PDF bietet die Tools, um dies effizient zu erledigen.

Häufig gestellte Fragen

Kann ich Text aus bestimmten Seiten einer PDF-Datei extrahieren?

Ja! Sie können dieTextFragmentAbsorber zur gezielten Ansprache bestimmter Seiten mithilfe derpdfDocument.Pages[pageIndex].Accept(tfa); Verfahren.

Ist es möglich, Text aus nur einer Spalte in einem mehrspaltigen PDF zu extrahieren?

Ja, aber Sie müssen mit den Koordinaten der Textfragmente arbeiten, indem SieTextFragment.Rectangle um bestimmte Bereiche des Dokuments anzusprechen.

Wie kann ich die Genauigkeit der Textextraktion verbessern?

Um eine höhere Genauigkeit zu erzielen, stellen Sie sicher, dass die Struktur des PDFs klar definiert ist und vermeiden Sie Dokumente mit komplexen Layouts. Sie können auch dieTextFragmentAbsorber um Text basierend auf Schriftarten, -größen oder -regionen zu extrahieren.

Unterstützt Aspose.PDF die Textextraktion aus gescannten Dokumenten?

Ja, aber Sie müssen die OCR-Technologie (Optical Character Recognition) verwenden. Aspose bietet hierfür ebenfalls Tools an.

Wie gehe ich mit großen PDF-Dateien mit Tausenden von Seiten um?

Verarbeiten Sie bei großen PDF-Dateien das Dokument in Abschnitten, indem Sie den Text jeweils von einigen Seiten extrahieren, um einen hohen Speicherverbrauch zu vermeiden.