Cómo convertir tablas de PDF a Excel o CSV con Tabula

NUEVO PROYECTO: Recibe una curiosidad diaria con nuestra Newsletter. Pequeños asombros diarios para Personas Altamente Curiosas
Pasar y convertir pdf a csv y excel

Mirando los datos históricos que ofrece un observatorio meteorológico de mi ciudad, veo que sólo los ofrecen gráficamente y para descargar como PDF. No entiendo porqué no dejan descargarlos en csv que sería mucho más útil para todos.

Así que he estado buscando una solución para pasar estas tablas de pdf a csv o si alguien quiere a formato Excel o Libre Office. Me gusta csv porque con un csv haces de todo puedes tratarlo con python y sus librerías o puedes importarlo fácilmente en cualquier hoja de cálculo.

Como la idea es conseguir un proceso automatizado lo que quiero es un script para trabajar con Python y aquí es donde entra Tabula.

Convertir pdf a csv con Tabula

Los pasos y funcionamiento es muy sencillo. Lo primero será instalar la librería de Tabula en nuestro entorno de desarrollo. Tabula nos permite extraer datos de tablas en PDF en dataframes de Pandas la librería de Python optimizada pra trabajr con csv y arrays.

También permite extraer y convertir entre PDF, JSON, CSV y TSV. Una joyita. Puedes encontrar mucha más información en su repositorio de Github

Yo aprovecho todo el trabajo de días anteriores y lo instalo en Anaconda. En el enlace puedes ver como instalar Anaconda.

Insatalamos Tabula

#primero activamos nuestro entorno de desarrollo en nuestro caso sería conda activate comparador
pip install tabula-py

A la hora de ejecutarlo a mí me daba un error

NUEVO PROYECTO: Recibe una curiosidad diaria con nuestra Newsletter. Pequeños asombros diarios para Personas Altamente Curiosas

la solución como indican en su documentación fue desinstalar la versión antigua de Tabula e instalar la nueva.

pip uninstall tabula
pip install tabula-py

Creamos el ejecutable .py

leer tablas de pdf a csv

Creo el ejecutable .py que llamo pdftocsv.py lo meto en mi carpeta Descargas/eltiempo y es un archivo con el siguiente código

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

El pdf a leer se llama inforatge.pdf y le digo que la salida se llame out.csv y se quedará en la carpeta en la que estamos trabajando.

Nos vamos al directorio donde tenemos tanto el ejecutable y el pdf que queremos convertir. Es importante porque si nos dirá que no encuentra el archivo.

cd Descargas/eltiempo

En este directorio tenemos el PDF, el archivo .py que hemos creado y ahí nos devolverá el csv que queremos.

Ejecutamos el código

python pdftocsv.py

Fíjate que he usado python, es decir que le digo que lo ejecute con python 2 y no con python3 que falla. Y ya está si no devuelve ningún error ya lo tenemos.

ejecutar Tabula en nuestro entorno de desarollo Anaconda

Hemos añadido 3 líneas más al archivo para el control de tiempo de ejecución. al final hemos dejado nuestro archivo pdftocsv.py como

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

Más opciones de Tabula

Más ejemplos de cosas que podemos hacer. Hay muchas opciones, lo mejor es pasarse por el repositorio de Github oficial que he dejado

# 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")

Y sin duda una de las cosas más útiles convertir todos los archivos PDF, JSON, etc de un directorio.

tabula.convert_into_by_batch("input_directory", output_format='csv')

Con esto podremos automatizar tareas que de otra forma serían largas y tediosas. Al final este es uno de los motivos de usar esta librería.

Convertir pdf a excel online

Si lo que queremos es simplemente convertir un archivo, extraer los datos de la tabla de PDF a Excel, Librecalc o similar, no es necesario complicarlo tanto. Hay herramientas disponibles para hacer esta tarea, algunas para instalarlas y otras para hacer el trabajo online.

Yo he probado estas dos herramientas online y funcionan muy bien.

Ten en cuenta que esto no es un trabajo automatizado, y por eso el estudio de estas herramientas no ha sido exahustivo. Tan solo las comento para quien le pueda interesar.

El método clásico

Y siempre nos queda el método clásico, el más chapucero y costoso pero que al final es una opción si haypoco trabajo.

Copiar las celdas de la tabla del pdf y pegarlas en nuestra hoja de cálculo.

Deja un comentario