Laten we het hebben over PDS, hoe verwerken we ze?
Ik bedoel, we hebben geleerd over het werken met bestanden in onze vorige sectie met Python en je kunt je
voorstellen dat we kunnen werken met alle bestanden die we hebben geleerd over beeldverwerking,
maar we hebben ook geleerd dat we gewoon elk tekstbestand kunnen manipuleren , elk PDF-bestand, elk CSV- of Excel-bestand.
Dit zijn allemaal gewoon bestandstypen die we kunnen verwerken en waarmee we kunnen werken in Python.
In deze sectie gaan we praten over PDF en hoe dit zou kunnen werken en deze kennis van PDF zal worden
overgedragen naar verschillende bestandsformaten.
Nu gaan we het hebben over XML-bestanden en CSV-bestanden later in de cursus wanneer we ingaan op machine
learning.
Maar laten we voor nu met PDF werken en kijken hoe we Python kunnen gebruiken om ons leven gemakkelijker te maken.
Nu ga ik een koppeling maken naar enkele PDF-bestanden die we hier hebben en die we in deze sectie gaan gebruiken.
We hebben een eenvoudig dummy PDF-bestand.
We hebben nog een PDF-bestand dat eigenlijk twee pagina's heeft.
En dan hebben we een watermerk-PDF, die we gaan opslaan voor ons laatste project in de sectie.
Maar laten we hier teruggaan.
Wat denk je dat onze eerste stap is, op basis van wat we tot nu toe hebben geleerd?
Welnu, onze eerste stap is om een bibliotheek te vinden die we met Python kunnen gebruiken om PDF-bestanden te verwerken.
En bereid je voor op dit onderdeel.
Ik heb een echt indrukwekkende website, waarschijnlijk de beste website die je hebt gezien, waarschijnlijk de schoonste, modernste website
als het gaat om het pakket dat we installeren.
We installeren iets dat PIP three install heet.
P en pdf.
Tot nu toe zijn er veel pakketten die we kunnen installeren als het gaat om PDS, dit is degene die ik
aanbeveel voor de cursus.
Terwijl dit in mijn geval aan het installeren is, is het al geïnstalleerd, laat me je laten zien hoe
hun websitedocumentatie eruit ziet.
Maak je klaar.
Het is mooi.
Hier is het.
Wauw, klopt.
Ik weet niet waarom, maar om de een of andere reden zijn Python-documentatiewebsites niet de mooiste.
Ik bedoel, dit is allemaal subjectief, toch?
Sommige mensen vinden dit leuk, maar je wordt er gewoon niet enthousiast van om met PDF te werken.
Deze website doet het toch.
Je kunt hier zien dat het eigenlijk niet zo'n grote bibliotheek is.
En je kunt op de documentatie klikken en nog eens alles doorlezen, maar laten we gewoon de basis
leren.
Dus het eerste dat ik ga doen, is ook Peahi PDF importeren.
En wat we gaan doen, is met de eerste werken, de dummy-up PDF, wat gewoon dit PDF-bestand is.
Dat is een enkele pagina die dummy PDF-bestand zegt.
Niets te spannend.
Hoe kunnen we dit bestand nu openen?
Dat kennen we toch uit eerdere lessen?
We kunnen dat gebruiken met open commando en we zullen zeggen dummy dot PDF.
En ik kan het zo zeggen omdat we in dezelfde map zitten.
Ik heb een pdf-bestand dat ik heb gemaakt, dus ik zeg alleen maar, hey, pak de dummy-pdf uit dezelfde map.
En laten we het hier even lezen, want ik wil het bestand lezen en dan gewoon als
bestand zeggen en voor nu het bestand afdrukken om te zien wat we krijgen, ik ga dit bestand uitvoeren door Python drie PDF-bestand te zeggen.
Laten we afwachten wat er gebeurt.
Oké, ik krijg een sms-rapper met de naam Dommy PDF.
Oké, het lijkt erop dat het werkt.
Laten we dit een beetje meer onderzoeken om te zien dat het inderdaad werkt.
Wat we kunnen doen, is die PDF gebruiken om het bestand te lezen, dus.
Laten we dit doen, we kunnen zeggen dat Reider gelijk is aan PI pdf en de methode PDF gebruiken.
Bestandslezer.
Nogmaals, het stelt ons in staat om dit python-bestand te lezen.
Dus laten we het bestand hier ingeven.
En dan printen we gewoon reader en kunnen we om een aantal pagina's vragen.
Nogmaals, dit komt met de bibliotheek, dus laten we dit uitvoeren en kijken wat er gebeurt.
Oké, we gaan verder, er staat dat PDF-leeswaarschuwing PDF-bestandslezer streambestandsobject is niet in
binaire modus.
Wat betekent dat?
Nou, onthoud, binair is enen en nullen, toch?
Als ik op Dummies klik.
Gedupeerde pdf.
Dit is niet de PDF waarvan we dachten dat dit is hoe een PDF eruit zou moeten zien, maar u ziet, afhankelijk van het programma
dat u gebruikt, kan deze het PDF-bestand mogelijk niet lezen.
Dus wat we moeten doen, en dit is slechts een standaard die je moet onthouden, is dat we het binaire
bestand willen lezen.
Dus het is gelezen en dan binair.
Dus wat hier gebeurt, is dat dit een bestandsstroomobject creëert.
Dus het gaat het bestandsobject converteren naar binaire modus.
Zodat de pit PDF naar file reader.
Kan dit binaire bestandsobject lezen.
Dus als ik dit nu opnieuw uitvoer, kijk daar eens naar, het kan het lezen en het vertelt me dat dit één pagina
heeft, als ik een PDF van twee pagina's maak en dit uitvoer.
We krijgen twee pagina's, geweldig.
Laten we dit duidelijk maken.
En ga terug naar onze PDF.
Ik voel me slecht voor het noemen van deze PDF-dummy, ik zou niet gemeen moeten zijn tegen deze PDF.
Ik zal de volgende keer aan mijn naamgevingsconventies werken.
Dus net zoals we zagen bij de beeldverwerking met factuur PDF, kunnen we veel dingen doen om deze afbeelding te
verwerken.
Ik kan bijvoorbeeld patchier worden, en als ik een pagina krijg, laten we zeggen de eerste pagina en ik voer deze uit.
We krijgen het pagina-object hier.
Het lijkt hier wartaal, want dit is een speciaal object dat PDF maakt, maar als ik zoiets als pagina
één doe, zal dat in dit geval pagina twee zijn.
Ik krijg een air an indexer die zegt dat lijstindex buiten bereik is omdat de dummy-pdf maar één pagina heeft.
We kunnen ook verschillende dingen doen, laten we bijvoorbeeld deze afbeelding draaien en we zullen honderdtachtig
graden draaien.
Als ik dit uitvoer.
Dit werkt niet.
Nu, waarom is dit?
Het is omdat PIDF ook het reader-object gebruikt, maar het moet weten wat het moet roteren.
In ons geval moeten we de pagina van de lezer daadwerkelijk laten draaien.
Dus we moeten iets doen als reader dot, pagina ophalen, de eerste pagina van onze PDF ophalen.
En wijs dit toe aan de paginavariabele, zodat we nu we het pagina-object hebben, een pagina-object en een
lezer-object onthouden.
Voer deze laatste keer uit, ik krijg dat het pagina-object geen attribuutrotatie heeft en ik heb je misschien een beetje misleid om hier een
punt te bewijzen.
Dit roterende object klinkt als iets dat het zou moeten hebben, maar het is eigenlijk niet de juiste naam die
we willen.
Dus hoe kunnen we dit oplossen?
En dit komt bij ons terug bij het lezen van de documentatie.
Als ik terugga naar de bestandslezer en laten we zoeken, roteren of laten we hier teruggaan, zien we dat we de
pagina-objectklasse hebben, die we gelijk hebben.
We hebben het pagina-object.
Als ik hier klik, laten we Roteren zoeken.
En we hebben een paar dingen die we hebben samengevoegd, pagina roteren, we blijven doorgaan, doorgaan, doorgaan.
En goed, we hebben draaien met de klok mee, draaien tegen de klok in en de hoek.
Dus het lijkt erop dat dit is wat we nodig hebben.
We hebben niet echt een rotatiemethode.
Maar zie je hier, zo komen we erachter wat de bibliotheek doet.
We hebben ook scale to scale by als we dat willen.
Dus laten we gewoon kopiëren, met de klok mee draaien of tegen de klok in draaien.
En we doen er gewoon 90.
Als ik dit opsla en wegloop, oké, dan krijgen we hier een object terug, maar dit object staat in het geheugen.
Als ik terugga naar mijn dummy, is er niets veranderd omdat we niet echt iets hebben bewaard.
Dit staat allemaal in het geheugen van mijn computer.
Wanneer dit programma stopt met draaien, wordt het weggegooid.
Dus laten we onze dummy-up PDF bijwerken om daadwerkelijk te schrijven en tegen de klok in te draaien.
Hoe kunnen we dat doen?
Nou ja, met een andere met toetsenbord.
Dus binnen of met open gaan we zeggen met Open en we noemen dit, laten we zeggen, krom.
Ik weet niet of je cricket zo spelt, dus laten we de tilt dot PDF gebruiken.
En we gaan dit bestand openen en we gaan naar dit bestand schrijven in binair formaat.
En we gaan zeggen als bestand.
En hier gaan we het bestand schrijven.
Naar dit nieuwe bestand, maar hoe kunnen we dit doen?
Deze bibliotheek geeft ons iets dat een writer-object wordt genoemd, zodat we een writer-variabele kunnen maken en
deze writer-variabele zal de API pdf dot pdf gebruiken in plaats van een bestandslezer.
We hebben een dossier.
Auteur.
En dit stelt ons in staat om het object in het geheugen recht te zetten, zodat ik nu schrijver kan zeggen.
Puntje, toch?
En om de naamgevingsconventie passend te maken, laten we zeggen dat dit de nieuwe FA wordt, dus we zullen
zeggen een nieuw bestand, dus laten we kijken of dit werkt.
En laten we dit uitvoeren.
Oké, we hebben die PDF gekanteld.
Maar we zijn eigenlijk één ding vergeten te doen, omdat we zojuist een writer-object hebben geopend, maar we schrijven er
eigenlijk geen PDF in.
In het ideale geval krijgen we de gedraaide pagina en er precies in.
Rechts.
Dus, wat kunnen we doen.
Is hier de print verwijderen.
We hebben de pagina gedraaid.
En met het writer-object dat we nu hebben, kunnen we 'writer dot ad page' zeggen en het de pagina geven die we hebben
geroteerd.
Dus als ik dit nu nog een keer doe.
En ga kantelen.
Nou, nogmaals, we zien hier gebrabbel.
Maar als we dit openen.
Kijk eens aan, onze PDF wordt zo geroteerd.
Heel erg cool.
Dus dat is geweldig, maar een beetje nutteloos, toch?
Wie draait PDF echt?
Dus dat is heel moeilijk te lezen, maar dit toont in ieder geval het vermogen van ons om snelheden te verwerken.
Laten we in de volgende video aan iets spannenders werken. Ik wil dat we iets nuttigers doen
dan dit.
Dus laten we een pauze nemen en ik zie je in de volgende.