Der Versuch, PDF kostenlos in Text umzuwandeln

16

Ich verwende OSX und möchte PDF-Dateien in Text konvertieren können.

Ich möchte eine kostenlose Anwendung, um dies zu tun, da ich sicher bin, dass es einige geben muss.

Gewähren
quelle
2
Möchten Sie Text aus PDFs extrahieren, die bereits Text enthalten? (dh Sie könnten Teile daraus kopieren und einfügen) Oder möchten Sie Text erkennen, der sich im Bildinhalt befindet?
Alan Shutko
Hilft free-ocr.com ?
Tim

Antworten:

13

Hier sind die Schritte, mit denen ich xpdf über Homebrew installiert und verwendet habe.

  1. Installieren Sie die Abhängigkeiten von Homebrew:

    xcode-select --install
    
  2. Installieren Sie Homebrew von ihrer Website:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  3. Tun Sie, was Ihnen gesagt wird, um die Homebrew-Installation abzuschließen.

  4. Stellen Sie sicher, dass Homebrew zufrieden ist und den Spezifikationen entspricht.

    brew doctor
    
  5. Als nächstes installieren Sie xpdf und seine Abhängigkeiten:

    brew install Caskroom/cask/xquartz
    
    brew install xpdf
    
  6. Verwenden Sie abschließend pdftotext, ein Paket, das mit der xpdf-Suite geliefert wird:

    pdftotext Some_Document.pdf Some_Document.txt
    

Der erste Dateiname ist eine vorhandene PDF-Datei. Der zweite ist das Ziel. Die Ergebnisse waren viel besser als mit einer (zugegebenermaßen alten) Version von Adobe Acrobat. Bearbeiten: Neue (2019) Versionen von Adobe Acrobat haben ähnlich schlechte Ergebnisse gezeigt.

Flash Sheridan
quelle
2
Ich denke das xquartzwird für die Konsolentools in nicht benötigt xpdf. Darüber hinaus gibt es die popplerGabelung, xpdfdie weitaus aktiver gepflegt zu sein scheint: github.com/scraperwiki/scraperwiki-python/issues/…
Jeroen Wiert Pluimers
6

Mehrere Methoden.

  1. Verwenden Sie Google-Dokumente (Sie benötigen ein Google-Konto)

  2. Verwenden Sie Automator (einige Arbeiten erforderlich)

Mit Automator können Sie einen Workflow erstellen, mit dem Sie Text aus PDFs extrahieren und als Text- oder RTF-Dokument speichern können.

Text aus pdf extrahieren

oder eine App aus dem App Store, zB PDF to Text

Ruskes
quelle
4

xpdf was ich mit Ports installiert habe:

port install xpdf

enthält:

xpdf-pdftotext

Es macht das, was Sie für jede PDF-Datei wollen, die aus einer Textdatei (und nicht aus einem Bild) stammt:

xpdf-pdftotext PDF_file text_file
Dan
quelle
1
Der Befehl, zumindest wie von HomeBrew installiert, ist nur "pdftotext".
Flash Sheridan
@FlashSheridan Kann ich Sie ermutigen, eine Antwort zu "pdftotext" zu posten und wie man sie über Homebrew installiert? Kommentare können jederzeit gelöscht werden (und werden auch nicht in Suchanfragen angezeigt).
Nohillside
4

Die aktuelle Version von Adobe Reader (11.0.09) enthält im Menü "Datei" den Eintrag "Als andere speichern".

Eine der Optionen ist Text .

Die App ist kostenlos und leistet gute Arbeit bei der Ausgabe von Textdateien. Alle Bilder im neuen Dokument gehen im TXT-Format verloren.

Wayfaring Fremder
quelle
1

Ich würde denken, Sie sollten in der Lage sein, den Text zu kopieren und in ein anderes Dokument einzufügen. Den gesamten Text auswählen

Öffnen Sie das PDF in "Vorschau" und

  • Wählen Sie "Bearbeiten | Alle auswählen".
  • Wählen Sie "Bearbeiten | Kopieren".

Gehen Sie zu einer anderen App und sagen Sie "Text bearbeiten".

  • Wählen Sie "Bearbeiten | Einfügen".

Beachten Sie, dass Sie, wenn Sie dies versuchen und kein Text eingefügt wird, sondern nur ein paar leere Zeilen, zuerst versuchen, Ihre PDF-Datei in eine neue PDF-Datei zu drucken, z

  • Wählen Sie in der Vorschau "Datei | Drucken"
  • Wählen Sie unten rechts "PDF | Als PDF speichern".
  • Dadurch wird ein neues PDF exportiert.

Versuchen Sie nun den obigen Vorgang mit diesem neuen PDF. Hat für mich gearbeitet!

PS: Wenn Sie über Microsoft Word verfügen, können Sie Ihre PDF-Datei möglicherweise in Word öffnen

Brad Parks
quelle
1
Dies sollte zwar funktionieren, wenn das PDF-Dokument tatsächlich Textinhalt enthält , die Formatierung jedoch nicht beibehalten wird und in einigen Fällen Mülltext zusammen mit dem als gewünscht geltenden Text erzeugt. Beachten Sie, dass dies auch bei anderen Methoden der Fall sein kann, aber ich hielt es für wichtig, darauf hinzuweisen.
user3439894
Ohne Zweifel - sicher nicht perfekt, und ich stimme mit allem überein, was Sie gesagt haben. Ich füge es hier nur als eine Option hinzu, die ich vorher bemerkt habe, die für mich funktioniert hat, ohne überhaupt etwas zu installieren ;-)
Brad Parks
Ich stimme auch zu, dass es in den meisten Fällen funktioniert, aber Seitenzahlen, Fußzeilendetails, die nicht mit dem Dokument zusammenhängen, und noch schlimmer: INFINITE SCROLLING bei großen Dokumenten machen dies zu einer unbefriedigenden Lösung. Wenn es weniger als 5 Seiten wären, würde ich es in Betracht ziehen, aber da die meisten Tabellen, die ich benötige, aus PDFs von Forschungsseiten stammen, die sich weigern, Excel oder SQL auszuspucken, ist diese Option nicht einmal funktionsfähig.
Tmanok
Einverstanden! Keine praktikable Option für Ihren Anwendungsfall
Brad Parks
1

Das folgende Python-Skript gibt den Text aus einem PDF-Dokument in eine TXT-Datei aus. (Hinweis: Es gibt keine Garantie dafür, dass der Text aufgrund der Art und Weise, wie Daten im PDF-Format gespeichert werden, notwendigerweise in einer für Menschen lesbaren Reihenfolge „logisch“ ist.)

Das Skript erstellt Textdateien für alle PDF-Dateien, die als Argumente in der Befehlszeile angegeben werden (z. B. pdf2txt.py myPDF.pdf), oder Sie können in der Aktion "Shell-Skript ausführen" von Automator den Shell-Typ auf Python setzen und die Eingabe an "Als Argumente" übergeben. . Dann können Sie es als Quick Action oder DropApp verwenden.

#!/usr/bin/python
# coding: utf-8

import os, sys
from Quartz import PDFDocument
from CoreFoundation import (NSURL, NSString)
NSUTF8StringEncoding = 4

def pdf2txt():
    for filename in sys.argv[1:]:   
        inputfile =filename.decode('utf-8')
        shortName = os.path.splitext(filename)[0]
        outputfile = shortName+" text.txt"
        pdfURL = NSURL.fileURLWithPath_(inputfile)
        pdfDoc = PDFDocument.alloc().initWithURL_(pdfURL)
        if pdfDoc :
            pdfString = NSString.stringWithString_(pdfDoc.string())
            pdfString.writeToFile_atomically_encoding_error_(outputfile, True, NSUTF8StringEncoding, None)

if __name__ == "__main__":
   pdf2txt()
benwiggy
quelle
Dies funktioniert sofort (dh - es mussten keine Python-Bibliotheken oder ähnliches installiert werden!) - Ist nur ein roher Textauszug, aber manchmal ist es das, was Sie brauchen - beachten Sie, dass die Datei im aktuellen Verzeichnis gespeichert wird (wenn sie über das ausgeführt wird) Kommandozeile) und kommt nicht zu stdout
Brad Parks
@BradParks Es sollte im selben Ordner wie die Eingabedatei gespeichert werden: Es nimmt den Dateipfad aus den Befehlsargumenten. Wie liefern Sie es?
Benwiggy
ahh ... ich war im selben Ordner, also habe ich das nie bemerkt - meine einzige wirkliche Absicht war zu sagen, dass es nicht zu stdout kommt und dass es funktioniert! Vielen Dank!
Brad Parks
1
Ersetzen Sie die beiden Zeilen nach der if pdfDocAnweisung durch print(pdfDoc.string()).
Benwiggy
Oh wow, dies ist buchstäblich das erste Mal, dass sich die Apple Python-Distribution als nützlich für etwas herausstellt !! Danke für die Antwort!!
Jérémie