Seite 1 von 1

PDF Dateien mit Python auslesen

Verfasst: Freitag 16. Juni 2006, 21:26
von SigMA
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

Verfasst: Freitag 16. Juni 2006, 21:33
von BlackJack
Wenn "auslesen" gleichbedeutend ist mit "text extrahieren" dann würde ich das Kommandozeilenprogramm `pdftotext` von XPdf von Python aus aufrufen.

Verfasst: Freitag 16. Juni 2006, 21:36
von SigMA
*notier* das ist schon mal ne Lösung :)

Aber gibt es auch noch eine mehr Plattform unabhängigere?!

Verfasst: Samstag 17. Juni 2006, 11:08
von BlackJack
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.

Verfasst: Samstag 17. Juni 2006, 19:09
von SigMA
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

Verfasst: Sonntag 18. Juni 2006, 11:00
von BlackJack
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()

Verfasst: Sonntag 18. Juni 2006, 20:16
von SigMA
Dankeschön :) Das letzte hab ich gesucht ;D