2010-12-09 2 views
4

Ich bin auf der Suche nach einer sehr schnellen, leichten Python-Bibliothek zum Lesen von PDF-Metadaten. Ich brauche keine Schreibfähigkeiten. Es wäre besser, wenn nur die Metadateninformationen geladen werden, nicht die gesamte Datei.Fast Python PDF-Metadaten-Reader

Ich realisiere eine interpretierte Sprache wie Python ist nicht die beste Wahl für die Geschwindigkeit, aber da diese Lösung plattformübergreifend sein und mit einer bestehenden Python-Anwendung arbeiten muss, scheint es keine große Wahl zu sein.

Ich habe pyPdf und einige andere Bibliotheken ausgecheckt, bin aber im Idealfall auf der Suche nach etwas leichter und schneller, geeignet für die Verarbeitung von Zehntausenden von Dateien in einem Rutsch.

Vielen Dank.

+0

Was, wenn überhaupt, macht pyPdf zu schwer? Wenn Sie nur schreiben müssen, importieren Sie PdfWriter nicht. – bdd

+0

Die Lib selbst ist ziemlich leicht, aber sie liest die gesamte Datei. Dies bedeutet, dass die Verarbeitung größerer PDFs länger dauert, im Fall von großen Dateien wie Handbüchern ist es sehr langsam. –

Antwort

0

Haben Sie gesehen this Antwort auf eine ähnliche Frage? Es schlägt vor, fopen zu verwenden und die Metadaten manuell zu analysieren. Wenn die Metadaten alles sind, was Sie brauchen, können Sie es selbst analysieren und so schnell wie Sie möchten.

0

Es ist ein wenig Raw, aber das sollten Sie die Meta-Daten

f = open('file.pdf', 'r') 
pdfdata=f.read() 
metas=re.findall('<</Metadata(.*?)>>',pdfdata) 
1

pdfrw können die Metadaten lesen, ohne Lesen die gesamte Datei Parsen. (Disclaimer: Ich bin der Autor von pdfrw.) Zum Beispiel:

>>> from pdfrw import PdfReader 
>>> PdfReader('pdf_reference_1-7.pdf').Info 
{'/Title': '(PDF Reference, version 1.7)', 
'/CreationDate': '(D:20061017081020Z)', 
'/Producer': '(Acrobat Distiller 7.0.5 \\(Windows\\))', 
'/Creator': '(FrameMaker 7.2)', 
'/ModDate': "(D:20061118211043-02'30')", 
'/Author': '(Adobe Systems Incorporated)', 
'/Subject': '(Adobe Portable Document Format \\(PDF\\))'} 
+0

Ist das immer noch wahr? Ich habe mir den Quellcode von PdfReader angeschaut und konnte deutlich sehen, dass die entier-Datei während des init gelesen wird. Siehe: https://github.com/pmaupin/pdfrw/blob/master/pdfrw/pdfreader.py#L493 – jrast

+1

@jrast - Entschuldigung, du hast Recht - ich sah "lesen" und ich dachte "parse ".. Es liest zwar die gesamte Datei auf einmal, aber für die meisten Anwendungen ist das kein Problem (offensichtlich können speicherbeschränkte Systeme anders sein). Die Langsamkeit bei den meisten PDF-Lesern und -Operationen liegt beim Parsen, und das PDRFR-Parsing erfolgt etwas träge. –