Biblioteca Camelot (I)
Tablas en pdf
Cuando trabajamos con documentos pdf, uno de los contenidos de especial interés y que además resulta especialmente complicado de manejar son las tablas.
Para acceder a su contenido podemos emplear recursos como PyPDF2, pero el resultado no es muy satisfactorio como hemos tenido ocasión de comprobar, así que decidí probar con otro recurso.
Realmente resulta muy complicado automatizar la extracción de datos de tablas de un documento pdf de forma que resulte preciso y funcional, y son precisamente las tablas las que mayor dificultad presentan. Camelot es una librería pensada específicamente para esta tarea y funciona satisfactoriamente, al menos con tablas sencillas y reales, no imágenes incrustadas.
Cierto es que trabajar con Camelot presenta cierta dificultad, incluyendo algunas complicaciones para su instalación, pero se pueden superar. Por eso te recomiendo que conozcas esta biblioteca por su fuente, su propia página web, incluyendo la lectura de su manual on-line. También combiene plantearse metas sencillas y trabajar con pdf también sencillos; al menos al principio. Ya podrás incrementar la dificultad conforme vayas dominando la herramienta.
En esta entrada te mostraré la que es posiblemente la forma más sencilla de abordar un problema básico: mostrar en pantalla el contenido de una tabla de un sencillo documento pdf de una página que contiene una tabla simple. Inmediatamente podremos pasar a cuestiones de mayor complejidad. Supongamos que ese documento pdf (tablaSimple.pdf) contiene esta tabla...
... a la que deseamos acceder desde un script de Python,concretamente desde este...
import camelot
# Especifica la ruta al archivo PDF
file_path = 'tablaSimple.pdf'
# Lee las tablas que contiene el PDF
tables = camelot.read_pdf(file_path)
# Imprime el número de tablas encontradas
print (f"Total de tablas encontradas: {tables.n}")
# Imprime el contenido de la primera tabla
print (tables[ 0 ].df)
... que nos devuelve esa misma tabla en el IDE Shell
Vistas así las cosas, la verdad es que este resultado parece bastante pobre, pero podemos hacer varias cosas a partir de aquí, entre otras pasar la tabla a un archivo Excel o trabajar directamente con el contenido de la tabla mediante librerías como Pandas .
En este caso vamos a importar la librería pandas, sin entrar ahora en más explicación, y añadir unas cuantas instrucciones más al script, por ejemplo acceder a la tabla capturada y pasar los datos a una colección como paso previo para manejarla, por ejemplo, accediendo a las "celdas" [1-0] y [1-1] y mostrando su contenido...
import pandas as pd
tabla = tables[0].df
nombre = tabla.iloc[1,0]
dato = tabla.iloc[1,1]
print(f'Nombre {nombre} - Edad {dato}')
... para obtener por pantalla Nombre Juan - Edad 23
Tampoco esto parece gran cosa, pero detrás de ello tenemos toda la potencia del manejo de datos que permiten librerías como Pandas y todas aquellas que facilitan el tratamiento de datos en Python. El que lo podamos conseguir partiendo de una tabla de datos de un documento pdf es gracias a Camelot, por lo que conocer esta biblioteca es una buena forma de empezar.
No hay comentarios:
Publicar un comentario
Comenta esta entrada