Ich habe eine PDF, von der ich einige Bilder mit Python extrahieren möchte. Ich kann einfach Bilder aus der Linux-Befehlszeile mit den PDF-Bildern aus der Bibliothek poppler-utils extrahieren so :
%Vor% Als nächstes habe ich eine Python-Bindung dafür hier gefunden und sie mit dem üblichen sudo apt-get install python-poppler
installiert. Im Python-Interpreter kann ich das jetzt machen:
Von hier bin ich irgendwie verloren. In dieser Liste kann ich nichts finden, das dem Namen von pdfimages oder irgendetwas ähnlichem ähnelt. In den Quelldateien von python-poppler kann ich nicht einmal ein .py finden Datei.
Weiß jemand, wie ich das poppers pdfimages Werkzeug von Python benutzen könnte? Alle Tipps sind willkommen!
Ich kann Ihnen nichts über Poppler sagen, aber in pyPDF würden Sie (grob)
pyPdf.PdfFileReader()
getPage()
; Verwenden Sie getNumPages()
, um zuerst die Gesamtzahl der Seiten zu erhalten. /Resources
-Schlüssel, das resultierende Objekt hat einen /XObject
-Schlüssel. Die .values()
von page['/Resources']['/XObject']
können Objekte haben, für die ['SubType'] == '/Image'
gilt. Das sind die gewünschten Objekte. ['/Filter']
'/FlateDecode'
, '/DCTDecode'
oder andere sein. Möglicherweise müssen Sie den Datenstrom des Objekts entsprechend dem angegebenen Filter vorverarbeiten, bevor Sie sie übergeben. _data
-Attribut, um die rohen Bytes zu erhalten. Schreiben Sie diese auf die Festplatte oder übergeben Sie sie an eine Bildbibliothek. Ich habe einmal einen Hacky-Filter für PDFs geschrieben, der unter anderem viel zu große Bilder neu kodiert, um die Auflösung zu verringern. Der Code sollte Ihnen mehr Anhaltspunkte geben als die obigen Aufzählungspunkte.
Beachten Sie, dass PDF ein verdammt gutes Dateiformat ist, so dass Ihr Code viele seltsame Dinge sehen wird. Pepper deinen Code mit Assertions und immer haben eine letzte else: raise ValueError
auf jedem if
: -)
Beachten Sie auch, dass die oben genannte Anleitung nicht genau richtig ist. Was Sie tun möchten, ist, den PDF-Katalog zu bekommen und sich auf diese Weise zum Objekt /Resources
zu arbeiten; Ich kann den Objektbaum jedoch nicht aus dem Speicher abrufen. Halten Sie die Referenz bereit.
Tags und Links python image pdf image-processing poppler