2010-12-09 39 views
4

Je suis à la recherche d'une bibliothèque Python très rapide et légère pour lire les métadonnées PDF. Je n'ai pas besoin de capacités d'écriture. Il serait préférable que seules les informations de métadonnées soient chargées, pas le fichier entier.Lecteur de métadonnées Fast Python PDF

Je réalise qu'un langage interprété comme Python n'est pas le meilleur choix pour la vitesse, mais comme cette solution doit être multiplateforme et fonctionner avec une application Python existante, il ne semble pas y avoir beaucoup de choix. J'ai extrait pyPdf et quelques autres bibliothèques, mais je recherche idéalement quelque chose de plus léger et plus rapide, adapté pour traiter des dizaines de milliers de fichiers en une seule fois.

Merci.

+0

Qu'est-ce qui, si quelque chose, rend pyPdf trop lourd? Si vous avez seulement besoin d'écrire, ne pas importer PdfWriter. – bdd

+0

Le lib lui-même est plutôt léger, mais il lit le fichier entier. Cela signifie que le traitement de PDF plus volumineux prend plus de temps, dans le cas de fichiers volumineux comme les manuels, il est très lent. –

Répondre

0

Avez-vous vu this répondre à une question similaire? Il suggère d'utiliser fopen et d'analyser manuellement les métadonnées. Si les métadonnées sont tout ce dont vous avez besoin, vous pouvez l'analyser vous-même et le faire aussi vite que vous le souhaitez.

0

Il est un peu cru, mais cela devrait vous obtenir les données méta

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

pdfrw peut lire les métadonnées sans lecture analyse syntaxique le fichier entier. (Disclaimer: Je suis l'auteur de pdfrw.) Par exemple:

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

Est-ce toujours vrai? J'ai regardé le code source de PdfReader et j'ai pu voir clairement que le fichier entier est lu pendant init. Voir: https://github.com/pmaupin/pdfrw/blob/master/pdfrw/pdfreader.py#L493 – jrast

+1

@jrast - désolé, vous avez raison - j'ai vu "lire" et je pensais "analyser" ".. Il lit dans le fichier entier en une fois, mais pour la plupart des applications ce n'est pas un problème (évidemment, les systèmes limités en mémoire peuvent être différents). La lenteur avec la plupart des lecteurs et des opérations PDF est dans l'analyse, et l'analyse de pdfrw est faite paresseusement. –