Cómo extraer tablas de datos de un documento PDF

pdf-conversion

El formato PDF (“Portable Document Format”) no es fácil de trabajar cuando se tienen que extraer datos para insertar en una base datos (catálogo de precios) o realizar análisis (datos censales). Sin embargo, es un formato común para distribuir reportes y tablas de datos en el Web. Las agencias gubernamentales parecen preferirlo sobre el formato CSV o incluso Excel.

El desafío de los PDF es que internamente lo que contienen son instrucciones de cómo generar el documento. El formato fue diseñado exclusivamente para presentación de documentos, no para procesamiento de datos. Extraer una tabla de datos dentro de un PDF no siempre es tan faćil como copiar y pegar una tabla de datos desde Excel.

Para dificultar aún más las cosas, si el PDF lo que contiene es una imagen del documento, entonces la única forma de extraer los datos es mediante software para OCR (“Optical Character Recognition”), es decir software que pueda reconocer caracteres en imágenes. Aunque este tipo de software ha mejorado considerablemente en los últimos años, su fiabilidad todavía depende mucho del estilo del texto que debe reconocer y de la calidad de la imagen.

Para ilustrar algunos de los métodos que hemos utilizado para extraer datos dentro de documentos PDF utilizaremos el reporte de Monitoría de Playas del Gobierno de Puerto Rico. En particular usaremos el reporte de febrero de 2015 (descargar PDF)

De primera intención parece que será un trabajo fácil porque el documento es prácticamente una gigantezca tabla:

Reporte PDF Monitoría Playas

Esperanzados con eso, tratemos de copiar y pegar los datos (“Copy & paste”) en Excel 2013. Para copiar los datos del PDF puede abrirlo en Adobe Acrobat Reader y seleccionar la tabla con el “mouse”. Asegúrese de seleccionar todas las páginas de datos.

Si lo llevamos a Excel con un simple “Paste” los datos aparecerán, pero no separados en columnas.

Datos en Excel
Esto ocurre porque Excel no pudo reconocer la estructura de la tabla.

Para tratar de superar este inconveniente seleccione “Text Import Wizard” para explicarle a Excel cómo está construida la tabla.

Excel Text Import Wizard

Si intentamos definir diferentes separadores para el texto veremos que nada funciona. Las columnas no son reconocidas no importa el separador (“delimiter”) que usemos (“tab”, comas, espacios, etc.).

Text import Wizard

Text import Wizard

Text import Wizard

Otra técnica para intentar en este caso es definir las columnas usando la opción “Fixed width”. Esta opción supone que cada columna contiene un máximo de caracteres y nos permite indicar cuán ancha es cada columna:

Text import Wizard Fixed Width

Sin embargo, el resultado no es mucho mejor que tratando de usar separadores porque la cantidad de espacios separando cada columna es variable en estos datos:

Resultado con Fixed Width

Los dos métodos usando directamente Excel no nos sirven con este PDF (pudieran funcionar con otros). ¿Qué nos queda por intentar?

Afortunadamente existen más alternativas. El problema de extraer datos en tablas dentro de documentos PDF es tan común que se han desarrollado varias herramientas de software para ayudar con esa tarea. Para el documento que estamos trabajando el software que finalmente hizo un buen trabajo fue Tabula.

Tabula es gratis y su código es abierto (“open source”). Tiene como requisito tener instalado Java, pero es probable que ya lo tenga instalado en su computadora. Tabula se distribuye en un archivo comprimido ZIP. Luego de descargarlo y descomprimirlo tendrá una carpeta con estos archivos:
Archivo ejecutable Tabula

De un doble clic en “tabula.exe” y se abrirá una ventana indicando el progreso de la activación del programa:

Consola Tabula

El programa se abrirá en un navegador Web:

Tabula Web browser

Marque el botón “browse”, seleccione el archivo PDF cuyas tablas desea extraer y marque el botón “Submit”:

Tabula cargar archivo

Luego de un tiempo procesando el archivo aparecerán imágenes (“thumbnails”) de cada una de sus páginas:

Tabula procesando archivo

Tabula imágenes del PDF

Usando el “mouse” dibuje rectángulos enmarcando las tablas en cada una de las páginas, pero no incluya los encabezados (las instrucciones lo indican así):

Tabula seleccionando tablas

Si el rectángulo será el mismo en cada paǵina puede oprimir el botón “Repeat this selection” y ajustar las dimensiones según sea necesario en cada tabla individual:

Tabula tablas seleccionadas

Tabula tablas seleccionadas

Una vez todas las tablas sean seleccionadas puede marcar el botón “Download all data”:

Tabula extrayendo tablas

La extracción de la tabla es muy buena para este documento según vemos en el anticipo (“preview”) de los datos:

Tabla extraida por Tabula

Podemos exportar el archivo en distintos formatos o copiarlo y pegarlo en Excel. En este caso haremos esto último.

Marcamos el botón “Copy to clipboard”, nos movemos a Excel y seleccionamos “Paste > Text Import Wizard”:

Pasando tablas de Tabula a Excel

En esta ocasión vemos que los datos están separados por comas y Excel reconoce las columnas correctamente:

Pasando tablas de Tabula a Excel

Pasando tablas de Tabula a Excel

Las técnicas presentadas en este artículo pueden ayudar con muchos tipos de documentos PDF con datos estructurados en tablas, por ejemplo: datos de experimentos, datos censales, catálogos de precio y otros.

Sin embargo, no se extrañe si encuentra documentos en los que ninguna técnica presentada aquí ayude, ni siquiera Tabula. El éxito en la tarea dependerá de cómo fue generado el PDF y eso depende del software que se utilizó para crear el archivo.

Las siguientes páginas contienen otros recursos para trabajar con la extracción de datos de documentos PDF que usted o su personal de Sistemas de Información pueden encontrar útiles para sus proyectos:

Cuando son muchos los archivos que hay que procesar diariamente o cuando es una gran cantidad de tablas por documento (e.g. un catálogo de 8,000 productos divididos en 10 secciones) estas técnicas se vuelven sumamente tediosas. Para esos escenarios es mejor automatizar una cadena de procesos de software que tomen los PDF, extraigan sus datos, los acondicione y los convierta al formato final deseado. Usualmente esto requiere programación a la medida y la combinación de varias herramientas que no tienen interfaces para usuarios (no usan el “mouse”).

Nos especializamos en implementar este tipo de proyectos y podemos ayudar a su empresa. Contáctenos.