Kijkend naar de historische gegevens die worden aangeboden door een meteorologisch observatorium in mijn stad, zie ik dat ze bieden ze alleen grafisch aan en om te downloaden als pdf Ik begrijp niet waarom ze je ze niet in csv laten downloaden, wat voor iedereen veel nuttiger zou zijn.
Dus ik heb er een gezocht oplossing om deze tabellen van pdf naar csv door te geven of als iemand Excel of Libre Office wil formatteren Ik hou van csv omdat je met een csv alles doet wat je ermee kunt doen met Python en zijn bibliotheken, of je kunt het gemakkelijk in een spreadsheet importeren.
Omdat het idee is om een geautomatiseerd proces te realiseren, wil ik een script dat met Python werkt en dit is waar Tabula van pas komt.
Converteer pdf naar csv met Tabula
De stappen en bediening zijn heel eenvoudig. De eerste zal zijn installeer de Tabula-bibliotheek in onze ontwikkelomgeving Tabula stelt ons in staat om gegevens uit tabellen in PDF te extraheren naar Pandas dataframes, de Python-bibliotheek die is geoptimaliseerd voor het werken met csv en arrays.
Staat ook toe extraheer en converteer tussen PDF, JSON, CSV en TSV Een edelsteen. U kunt veel meer informatie vinden in het github-opslagplaats
Ik profiteer van al het werk van voorgaande dagen en installeer het in Anaconda. In de link kun je zien hoe installeer Anaconda.
We installeren Tabula
#primero activamos nuestro entorno de desarrollo en nuestro caso sería conda activate comparador
pip install tabula-py
Bij het uitvoeren ervan kreeg ik een foutmelding
de oplossing zoals aangegeven in hun documentatie was om de oude versie van Tabula te verwijderen en de nieuwe te installeren.
pip uninstall tabula
pip install tabula-py
We maken het uitvoerbare bestand .py
Ik maak het uitvoerbare .py dat ik pdftocsv.py noem.Ik zet het in mijn map Downloads / eltiempo en het is een bestand met de volgende code
import tabula
# Extaer los datos del pdf al DataFrame
df = tabula.read_pdf("inforatge.pdf")
# lo convierte en un csv llamdo out.csv codificado con utf-8
df.to_csv('out.csv', sep='\t', encoding='utf-8')
De pdf die moet worden gelezen heet inforatge.pdf en ik vertel het dat de uitvoer out.csv wordt genoemd en dat het in de map waarin we werken, blijft.
We gaan naar de directory waar we zowel het uitvoerbare bestand als de pdf hebben die we willen converteren. Het is belangrijk als het ons vertelt dat het het bestand niet kan vinden.
cd Descargas/eltiempo
In deze map hebben we de PDF, het .py-bestand dat we hebben gemaakt en daar zal het de csv retourneren die we willen.
We voeren de code uit
python pdftocsv.py
Merk op dat ik python heb gebruikt, dat wil zeggen, ik vertel het om het uit te voeren met python 2 en niet met python3 dat mislukt. En dat is het als het geen fout retourneert, we hebben het al.
We hebben nog 3 regels aan het bestand toegevoegd voor runtime-controle. aan het einde hebben we ons pdftocsv.py-bestand verlaten als
import tabula
import time
start_time = time.time()
df = tabula.read_pdf("inforatge.pdf")
df.to_csv('out.csv', sep='\t', encoding='utf-8')
print("--- %s seconds ---" % (time.time() - start_time))
Meer opties van Tabula
Meer voorbeelden van dingen die we kunnen doen. Er zijn veel opties, het is het beste om door de officiële Github-repository te gaan die ik nog heb
# Leer PDF remotos y convertirlos en DataFrame
df2 = tabula.read_pdf("https://github.com/tabulapdf/tabula-java/raw/master/src/test/resources/technology/tabula/arabic.pdf")
# Convertir un PDF en CSV
tabula.convert_into("test.pdf", "output.csv", output_format="csv")
En zonder twijfel een van de handigste dingen om alle pdf-, json-, enz. Bestanden in een directory te converteren.
tabula.convert_into_by_batch("input_directory", output_format='csv')
Hiermee kunnen we taken automatiseren die anders lang en vervelend zouden zijn. Dit is uiteindelijk een van de redenen om deze bibliotheek te gebruiken.
Converteer pdf naar Excel online
Als we gewoon een bestand willen converteren, de gegevens uit de tabel extraheren van PDF naar Excel, Librecalc of iets dergelijks, is het niet nodig om het zo ingewikkeld te maken. Er zijn tools beschikbaar om dit te doen, sommige om te installeren en andere om de klus online te klaren.
Ik heb deze twee online tools geprobeerd en ze werken erg goed.
- https://www.pdftoexcel.com/es
- https://www.pdftoexcelonline.com/es/ werkt prima maar stuurt je het document per post
Houd er rekening mee dat dit geen geautomatiseerde taak is en daarom is de studie van deze tools niet uitputtend geweest. Ik geef er alleen commentaar op voor degenen die mogelijk geïnteresseerd zijn.
De klassieke methode
En we hebben altijd de klassieke methode, de meest slordige en dure maar uiteindelijk is het een optie als er weinig werk is.
Kopieer de tabelcellen uit de pdf en plak ze in onze spreadsheet.