PDF Dateien mit Python auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

PDF Dateien mit Python auslesen

Beitragvon SigMA » Freitag 16. Juni 2006, 21:26

moien :)

Gibt es eine Möglichkeit mit Python eine PDF Datei auszulesen?!

hab im Forum und bei Google nichts gefunden :/

würde mich über Hilfe freuen :)
SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
BlackJack

Beitragvon BlackJack » Freitag 16. Juni 2006, 21:33

Wenn "auslesen" gleichbedeutend ist mit "text extrahieren" dann würde ich das Kommandozeilenprogramm `pdftotext` von XPdf von Python aus aufrufen.
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Beitragvon SigMA » Freitag 16. Juni 2006, 21:36

*notier* das ist schon mal ne Lösung :)

Aber gibt es auch noch eine mehr Plattform unabhängigere?!
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
BlackJack

Beitragvon BlackJack » Samstag 17. Juni 2006, 11:08

Wie unabhängig soll's denn sein? Es gibt `pdftotext` als Quelltext und Links zu Binaries für Linux, DOS/Windows, Solaris, FreeBSD, OS/2, OpenVMS, MacOS X, und NetBSD auf der Download-Seite.
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Beitragvon SigMA » Samstag 17. Juni 2006, 19:09

Es geht vorallem um das herraus Parsen der META Daten und dafür eignet es sich nicht so gut. Man kann par mit nem gaaaaaaaaaa*1000nz bösen QuickHack es als HTML machen und dann da die META Daten raus holen aber das ist 1) langsam und
2) einfach zu ekelhaft um es zu machen^^

SigMA
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de
BlackJack

Beitragvon BlackJack » Sonntag 18. Juni 2006, 11:00

Für Metadaten ist `pdfinfo` von den `xpdf`-Tools zuständig.

Code: Alles auswählen

$ pdfinfo CoArray_Python.pdf
Title:          LNCS 3149 - Co-array Python: A Parallel Extension to the Python Language
Subject:        Euro-Par 2004 Parallel Processing
Author:         Craig E. Rasmussen, Matthew J. Sottile, Jarek Nieplocha, Robert W. Numrich, and Eric Jones
Producer:       Acrobat Distiller 5.0.5 (Windows)
CreationDate:   Mon Dec 20 11:10:08 2004
ModDate:        Wed Dec 22 12:08:51 2004
Tagged:         no
Pages:          6
Encrypted:      no
Page size:      439 x 666 pts
File size:      108647 bytes
Optimized:      yes
PDF version:    1.4


Kann man sich auch als RDF XML ausgeben lassen.

Eine weitere externe Lösung wäre pdftk:

Code: Alles auswählen

$ pdftk CoArray_Python.pdf dump_data
InfoKey: Title
InfoValue: LNCS 3149 - Co-array Python: A Parallel Extension to the Python Language
InfoKey: Producer
InfoValue: Acrobat Distiller 5.0.5 (Windows)
InfoKey: Author
InfoValue: Craig E. Rasmussen, Matthew J. Sottile, Jarek Nieplocha, Robert W. Numrich, and Eric Jones
InfoKey: Subject
InfoValue: Euro-Par 2004 Parallel Processing
InfoKey: ModDate
InfoValue: D:20041222120851+01'00'
InfoKey: CreationDate
InfoValue: D:20041220111008Z
PdfID0: 99516261b52c495aa6db34acbe4e3fdf
PdfID1: abfaca3213d5bbbe56c2ae66029b71b
NumberOfPages: 6
BookmarkTitle: 1 Introduction
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkTitle: 2 Co-array Python Implementation
BookmarkLevel: 1
BookmarkPageNumber: 2
BookmarkTitle: 2.1 Implementation Details
BookmarkLevel: 2
BookmarkPageNumber: 3
BookmarkTitle: 3 Co-array Python Example
BookmarkLevel: 1
BookmarkPageNumber: 3
BookmarkTitle: 4 Future Work
BookmarkLevel: 1
BookmarkPageNumber: 5
BookmarkTitle: Acknowledgments
BookmarkLevel: 1
BookmarkPageNumber: 5
BookmarkTitle: References
BookmarkLevel: 1
BookmarkPageNumber: 6


Ich sehe gerade das es seit knapp zwei Wochen eine Python-Lösung gibt. pyPdf kann jetzt auch Meta-Informationen lesen. Allerdings kann das Modul nicht alle PDFs lesen, bei manchen gibt's Ausnahmen. Zum Beispiel bei dem PDF das ich oben als Beispiel benutzt habe.

Ansonsten hier ein Snippet:

Code: Alles auswählen

from pyPdf import PdfFileReader

pdf_file = open('test.pdf', 'rb')
pdf = PdfFileReader(pdf_file)
info = pdf.getDocumentInfo()
for key in ('title', 'author', 'subject', 'creator'):
    print getattr(info, key)
pdf_file.close()
Benutzeravatar
SigMA
User
Beiträge: 181
Registriert: Sonntag 4. April 2004, 13:27
Wohnort: Freiburg
Kontaktdaten:

Beitragvon SigMA » Sonntag 18. Juni 2006, 20:16

Dankeschön :) Das letzte hab ich gesucht ;D
Leichtdio.de - Das Kreativ-Blog
http://www.leichtdio.de

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]