Cómo extraer datos de tablas en archivos PDF con Tabula y OpenRefine

Hay toneladas de datos ahí fuera, guardados en tablas incrustadas en ensayos e informes en PDF. Los PDF son omnipresentes, pero es más difícil usar los datos que se acumulan dentro de ellos de lo que sería en una hoja de cálculo. Incluso si puede extraer los datos, puede ser difícil obtener resultados consistentes. Una tabla podría tener líneas para señalar los límites de las celdas, mientras que otras podrían tener solo espacios en blanco para lograr una vista de tabla. También pueden variar en términos de contener filas y / o columnas extensivas y, a menudo, la única constante es que todos tienen datos que desea extraer..

Si bien puede extraer manualmente datos de una tabla en un PDF, está lejos de ser simple. No hay razón para tomarse tanto tiempo cuando hay herramientas para simplificar nuestro trabajo. En este tutorial, le mostraré cómo extraer tablas del PDF fácilmente con Tabula y luego limpiaré los datos desordenados de una forma más utilizable con OpenRefine.

Porque tabula?

Todos los que trabajan con datos conocen un problema común: usted encontró algunos datos interesantes para su proyecto periodístico o estadísticas para preparar un buen mapa, pero los datos están desordenados y atrapados en un archivo PDF, que su programa no puede leer automáticamente. Entonces, ya sea que tenga que escribir o realizar un largo proceso de copiar y pegar filas de datos de un archivo PDF en Excel. Este tipo de trabajo manual crea fricción y, posteriormente, se pierde mucho tiempo..

Al ser un graduado de investigación, he pasado por este dolor de copiar y pegar manualmente la tabla para mi tesis. Siempre soñé con una aplicación que pudiera extraer la tabla de PDF con un solo clic, y eso es exactamente lo que es Tabula. Es una aplicación gratuita que funciona con java y se ejecuta en una interfaz web en su computadora que puede extraer datos de casi cualquier tabla en un PDF. En segundos, puede extraer los datos que tardarían horas en volver a escribir a mano..

Cómo usar la tabula?

En primer lugar, descargue el archivo zip correspondiente a su computadora desde el sitio web de Tabula y descomprímalos en una carpeta de su elección. Asegúrate de tener Java v6 o 7 instalado también; Si no, puede descargarlo gratis desde el sitio web de Oracle. Ese enlace es a la versión sin publicidad / barra de herramientas, por lo que no tendrá que preocuparse por nada más que se instale.

Cuando inicie Tabula, inicialmente verá una ventana de Comando y en pocos segundos su navegador se abrirá automáticamente para http://127.0.0.1:8080. Si no es así, abra su navegador web y escriba esta URL en el campo de dirección. Enviar su archivo PDF y Tabula procesarán su archivo y le mostrarán una buena lista de miniaturas de páginas. Busque la tabla que desea extraer o, si tiene un PDF pequeño, puede marcar la opción "Detectar automáticamente tablas".

Pantalla de inicio de Tabula que muestra las miniaturas de página y la tabla que desea extraer

Haga clic y arrastre para seleccionar el área de la tabla. Una vez que sueltes el mouse, Tabula te mostrará la tabla extraída en un formato amigable. Si los datos están borrosos, intente eliminar los encabezados o las notas al pie y más. Finalmente, puede descargar la tabla extraída como valores separados por comas (CSV) o valores separados por tabulaciones (TSV) o copiar los datos en el portapapeles. Una vez que los datos están en la hoja de cálculo, es posible que tenga que editar un poco, como corregir los encabezados o las notas al pie.

Tabla Extraída de PDF con Tabula

Cuando necesite cerrar Tabula en Windows, cambie a esa ventana de Comando y presione Control-C. Espere hasta que aparezca un mensaje que indique que el cierre se ha completado. Esa ventana podría cerrarse automáticamente, o cerrarla usted mismo. En Mac, cambie a la aplicación (haga clic con el botón derecho en el icono en la base) y presione CMD-Q. Si está ejecutando Mac OS X 10.8 o posterior, asegúrese de ajustar la Configuración de Gatekeeper para evitar mensajes de error durante la instalación.

Tabula no será perfecta todo el tiempo, y todavía hay algunos problemas que resolver. A partir de ahora, solo funciona en PDF basado en texto, por lo tanto, si tiene una copia de Acrobat, puede trabar el trabajo manual, pero puede convertir los PDF de imagen en un PDF editable. Trabajar con tabula. Además, si tiene archivos PDF con filas de varias líneas, Tabula notificará errores frecuentes en las tablas sin separadores de filas gráficos, así que asegúrese de tener cuidado con eso.

¿Por qué OpenRefine??

La falta de ortografía ocasional, el espacio adicional, la puntuación aleatoria, las mayúsculas extrañas, el registro duplicado y más están a la par del curso cuando se extraen datos de archivos PDF. No importa lo bonito que se vea el extracto a primera vista, sus datos serán un desastre si hay alguna Errores, creando problemas en la recuperación de datos, interoperabilidad e indexación..

Ahí es donde entra en juego OpenRefine (anteriormente Google Refine). Es otra herramienta gratuita que te ayuda a identificar fácilmente estos errores e inexactitudes de datos. OpenRefine no solo le permite diagnosticar rápidamente la precisión de sus datos, sino que también actúa sobre ciertos errores de manera automatizada. Puede transformar datos en muchas celdas existentes en forma masiva, con el fin de limpiar los datos, puede ampliarlos con más datos de otras fuentes y convertirlos a otros formatos para que pueda usarlos en las aplicaciones que desee..

Cómo usar OpenRefine?

OpenRefine una vez más tiene una interfaz web, se ejecuta en su computadora y requiere Java. La única diferencia es que esta vez, se abrirá en su navegador en http://127.0.0.1:3333.

Cuando abre OpenRefine, puede observar tres opciones en el lado izquierdo: Crear proyecto en el que puede importar datos desde una computadora, una dirección web, un portapapeles o una hoja de cálculo de Google; Proyecto abierto que le ayuda a volver a un proyecto existente creado durante una sesión anterior; y Proyecto de importación lo que nos permite importar directamente un archivo de proyecto OpenRefine existente. OpenRefine entiende una variedad de formatos de archivos de datos, incluidos TSV, CSV, documentos de Excel e incluso XML y JSON, uno de los favoritos para los desarrolladores web y de aplicaciones..

Pantalla de Inicio de OpenRefine

Busque su archivo CSV exportado y haga clic en Siguiente. En la siguiente pantalla, obtendrá una visión general de su conjunto de datos tal como aparecerá en OpenRefine. De forma predeterminada, la primera línea se analizará correctamente como el nombre de una columna. Otra opción es la casilla de verificación "Las comillas se utilizan para encerrar celdas que contienen separadores de columna". Si lo deja seleccionado, asegúrese de verificar que todos los valores de las celdas estén entre comillas en el archivo original. De lo contrario, anule la selección de esta casilla para asegurarse de que OpenRefine no interprete mal las comillas..

Las otras opciones pueden ser útiles en algunos casos; intente seleccionarlos y deseleccionarlos para ver cómo afectan sus datos. Observe cómo se actualiza la vista previa para reflejar estos cambios. Además, asegúrese de seleccionar la codificación correcta para evitar que se mezclen los caracteres especiales. Cuando todo parezca correcto, asigne un nombre a su proyecto y haga clic en Crear proyecto.

Conjunto de datos cargado en OpenRefine

Para demostrar las diversas técnicas de manipulación de datos, puede utilizar su propio conjunto de datos o descargar un conjunto de datos de demostración desde el repositorio de Github para probarlo usted mismo. Una vez que su conjunto de datos se haya cargado en OpenRefine, debe aprender a explorar los datos escaneando las diferentes zonas. De arriba a abajo se pueden observar cuatro zonas..

En la primera zona, podría ver el número total de filas para un archivo en particular. En la segunda zona, puede intentar alternar entre filas y registros haciendo clic en cualquiera de las palabras. Esta zona también le permitirá elegir si desea mostrar 5, 10 o 50 filas / registros en una página, y también proporciona la forma correcta de navegar de una página a otra. En la tercera zona, encontrará aquí la primera fila que se analizó como encabezado de columna cuando se creó el proyecto. En mi conjunto de datos, las columnas se leen. Universidad, dotación, NumFaculty y así. La columna de la izquierda siempre se llama Todos y se divide en tres sub-columnas que contienen estrellas, banderas e ID. Cada columna tiene un menú al que se puede acceder haciendo clic en el botón pequeño triángulo desplegable. Finalmente, la cuarta zona muestra el área principal real que muestra los valores reales de las celdas. Si pasa el mouse sobre una celda, puede editar ese tipo de datos en particular.

Diferentes zonas de OpenRefine

Las columnas son una parte esencial de OpenRefine y, de forma predeterminada, todas las columnas se expanden, lo que puede resultar engorroso si hay muchas columnas en el proyecto. Si desea ocultar temporalmente una columna más para facilitar el trabajo en las otras, haga clic en la pequeña triángulo desplegable en cualquier columna para mostrar el menú y seleccionar Ver. Puede ver cuatro opciones aquí: Contraer esta columna, Contraer todas las demás columnas, Contraer columnas a la izquierda y Contraer columnas a la derecha.

Juega con las opciones de la columna individual hasta que estés satisfecho con el resultado. Para expandir una columna de nuevo, simplemente haga clic en ella. En algunos casos, podría ser útil cambiar el orden de las columnas, por ejemplo, para reunir columnas que deban compararse. Para lograr esto, ingrese al menú de cualquier columna y haga clic en Columna de edición. Nuevamente, hay cuatro opciones disponibles: mover columna al principio, mover columna al final, mover columna a la izquierda y mover columna a la derecha. Si desea reordenar las columnas completamente, use la columna llamada Todos

los Ver La opción aquí le ofrece una forma rápida de expandir o contraer todas las columnas, mientras que Columna de edición le ofrece una forma rápida de reorganizar las columnas arrastrándolas o suprimiéndolas colocándolas a la derecha, como se muestra en la siguiente captura de pantalla.

Reorganización de columnas en OpenRefine

Cuando su proyecto es grande, lo primero que debe aprender es cómo ordenar los datos como ayuda visual, ya que la clasificación puede hacer que su conjunto de datos sea más fácil de explorar y manipular. Con el fin de ordenar sus datos por sus Universidad nombres, elegir Ordenar en el menú de la columna para acceder a la siguiente pantalla. Mirando la captura de pantalla, puede ordenar los valores de las celdas según su tipo: texto, números, fechas y valores booleanos y para cada tipo se pueden clasificar en orden diferente.

Por ejemplo, el texto se puede ordenar en orden alfabético (de la A a la Z) o en orden alfabético inverso (de la Z a la A), booleano falso, luego verdadero o viceversa, y así sucesivamente. Además, podemos especificar dónde se almacenarán los errores y los espacios en blanco en relación con los valores válidos arrastrándolos en el orden deseado. Por ejemplo, los errores se pueden clasificar primero para detectarlos más fácilmente, seguidos de valores válidos en valores medios y en blanco al final.

Ordenar datos en OpenRefine

Una de las herramientas en OpenRefine que usará con más frecuencia es facetas. Normalmente, creas una faceta en una columna en particular. La faceta resume las celdas en esa columna para ofrecerle una visión general de sus datos en la barra lateral y, simultáneamente, le permite filtrar los datos a algún subconjunto de filas que desee cambiar de forma masiva. Existen varias formas de facetar los datos y, según los valores del conjunto de datos y sus necesidades, son: facetas de texto para cuerdas, facetas numéricas para numeros y fechas y facetas personalizadas Para definir tu propio texto y facetas numéricas..

La faceta de texto es una herramienta muy útil, similar a filtrar en una hoja de cálculo. La faceta de texto agrupa valores de texto únicos en grupos. Esto nos puede ayudar a fusionar información y podemos ver valores, que se pueden deletrear de muchas maneras diferentes. Ahora, vamos a crear una faceta de texto en el país Haga clic en el menú desplegable de esa columna y seleccione Faceta → texto faceta.

El resultado de esta faceta aparece en la pestaña Faceta / Filtro a la izquierda de la pantalla. En la siguiente captura de pantalla podemos ver la columna. país agrupados según los nombres, pero encontré algunas entradas extrañas como "U.S", "United States" y "U.S.A", junto con el impar "United States)". ¿No son todos iguales??

Faceta de texto en OpenRefine

Puede editar manualmente estas discrepancias, pero no tiene que hacerlo. La opción Racimo Lo ayudará a encontrar este tipo de datos sucios fácilmente y los arreglará. Haga clic en el país desplegable de la columna y navegar a Editar celdas → Agrupar y editar, OpenRefine le presentará un cuadro de diálogo donde puede elegir diferentes métodos de agrupación en clúster, cada uno de los cuales puede usar varias funciones de creación de claves..

En Valores en Cluster, Puede ver las diferentes grafías y cuántas filas contienen una ortografía particular. los Unir? la columna contiene una casilla de verificación y, si la marca, todos los valores de ese grupo se cambiarán al valor de la lista Nuevo valor de celda columna. Aquí puedo ingresar manualmente el nuevo valor de celda como "Estados Unidos de América" ​​y luego puede hacer clic en Combinar seleccionado y cerrar Botón para fusionar todos los clusters seleccionados..

Puede encontrar algunas discrepancias más en el conjunto de datos; Si es así, selecciona diferente Método Desde el menú desplegable y elija diferentes. Funciones de teclado. Juega con diferentes opciones hasta que arregles todas las inconsistencias. Si desea profundizar en cómo funciona el agrupamiento en clústeres de OpenRefine, asegúrese de consultar este artículo en su Github.

Agrupación en OpenRefine

Cuando una faceta de texto agrupa valores de texto únicos en grupos, una faceta numérica agrupa los números en intervalos de rango numérico. Necesitamos limpiar los datos para el número de estudiantes en el numestudiantes columna. No todos los valores son numéricos, y muchos de ellos pueden contener bits de texto además del número real de los estudiantes. Para averiguar qué entradas deben corregirse, usaré una faceta numérica.

En el numestudiantes menú de la columna, vaya a Faceta → faceta numérica y mira lo que aparece en el Faceta / filtro pestaña a la izquierda. Esto nos muestra un histograma de los valores y, también enumera el número de entradas por tipo (numérico, no numérico, en blanco, error), vigile el no numérico Fija y desmarca los otros tipos. Ya podemos ver algunos problemas, ya que algunas celdas tienen "texto además de números" y varias otras discrepancias. Así que la columna numérica en resumen no es puramente numérica y contiene algunos datos sucios.

Podemos hacer dos cosas aquí: use la faceta de texto para enumerar todo el "texto además de los números" en la barra lateral izquierda, luego desplace el mouse sobre cualquier dato desordenado y verá una opción llamada editar, se abrirá un cuadro de diálogo y luego se eliminará el texto con Retroceso y haga clic en Aplicar. En mi conjunto de datos eliminé el texto "Great Valley" de 560 filas con un solo clic.

Faceta Numérica en OpenRefine

Las facetas son definitivamente herramientas poderosas, pero a veces puedes ver inconsistencias en la columna de celdas y la única forma de editar celdas en una columna es invocar el Transformación común comando en esa columna; de la selección del menú desplegable de la columna Editar celdas → Transformada común mando. Verá que hay una gama de funciones útiles aquí para limpiar sus datos y asegurarse de que sean coherentes. He aquí por qué: a veces, en el proceso de ingresar datos, las personas ponen un espacio antes o después de un nombre. No podrá verlo, pero cuando se trata de combinar dos conjuntos de datos, el software de la hoja de cálculo lo interpretará como dos conjuntos de datos. Por ejemplo, "Rahul" es diferente de "Rahul".

Vaya a la columna donde desea eliminar los espacios en blanco, luego navegue hasta Editar celdas → Transformación común → Recortar espacios en blanco iniciales y finales. Otro problema común con los datos es el formato inconsistente: en ocasiones, alguien deja el bloqueo de mayúsculas o se olvida de poner mayúsculas en un nombre. Estas tres opciones: a titlecase, a mayúsculas, a minúsculas convierte todas las celdas en esa columna para ser formateadas consistentemente, de una manera u otra.

Transformación común en OpenRefine

Una característica muy útil de OpenRefine es su manejo del historial de todas las modificaciones que afectaron los datos desde la creación del proyecto. En la práctica, esto significa que nunca debe tener miedo de probar cosas con el conjunto de datos. Siéntase libre en todo momento de jugar con sus datos y aplicar cualquier número de facetas o transformación porque siempre puede deshacerlos si se da cuenta de que fue un error.

 Para acceder al historial del proyecto, haga clic en el Deshacer rehacer pestaña en la parte superior izquierda de la pantalla, justo al lado de la Filtro / Faceta, como se muestra en la captura de pantalla. Para hacer retroceder el reloj, haga clic en el último paso que desea mantener y el descanso se atenuará. Para cancelar todos los cambios y recuperar los datos como estaban antes de realizar cualquier transformación, haga clic en 0. Crear proyecto. Para rehacer, haga clic en el paso hasta el que desea restaurar el historial.

Historia del proyecto en OpenRefine

Una vez que haya terminado su proyecto, puede exportar los datos de un proyecto existente de OpenRefine. los Exportar El menú en la parte superior derecha de la pantalla le permite hacer precisamente eso. Los formatos admitidos son: TSV, CSV, formato Excel, hoja de cálculo ODF, JSON y tabla HTML. La última opción es útil si desea publicar sus datos limpiados en línea.

Conclusión

Con este tutorial, tienes los conceptos básicos de cómo usar Tabula y OpenRefine. En algún momento, puede sentirse abrumado por la complejidad de OpenRefine pero no se preocupe. Tómese su tiempo y recuerde que trabajar con datos no es solo código o clics, debe seguir su intuición para obtener datos en gran forma, y ​​siempre puede deshacer cualquier cosa si comete un error..

Si tiene algún problema para comenzar con Tabula o OpenRefine, o tiene algún método único que quiera compartir, asegúrese de informarnos en los comentarios a continuación..