Extraer / identificar tablas de PDF python

¿Hay bibliotecas de código abierto que admiten la identificación y extracción de tablas?

Con esto quiero decir:

  1. Identificar una estructura de tabla existente
  2. Clasificar la tabla a partir de su contenido.
  3. Extraiga los datos de la tabla en un formato de salida útil, por ejemplo, JSON / CSV, etc.

He examinado preguntas similares sobre este tema y he encontrado lo siguiente:

  • PDFMiner que aborda el problema 3, pero parece que el usuario debe especificar a PDFMiner dónde existe una estructura de tabla para cada tabla (corríjame si me equivoco)
  • pdf-table-extract que intenta solucionar el problema 1, pero de acuerdo con la lista de tareas pendientes, actualmente no puede identificar las tablas que están separadas por espacios en blanco. ¡Esto es un problema ya que todas las tablas en mis PDF están separadas por espacios en blanco!

Actualmente, estoy pensando que tendría que dedicar mucho tiempo a desarrollar una solución de Aprendizaje Automático para identificar estructuras de tablas a partir de archivos PDF. Por lo tanto, cualquier enfoque alternativo sería más que bienvenido!

Definitivamente deberías echar un vistazo a esta respuesta mía:

  • Extraer el contenido de la tabla de una colección de archivos PDF

y también echar un vistazo a todos los enlaces incluidos en el mismo.

Tabula / TabulaPDF es actualmente la mejor herramienta de extracción de tablas que está disponible para el raspado de PDF.

Después de muchas horas fructíferas de exploración de bibliotecas de OCR, cuadros delimitadores y algoritmos de agrupación en clúster, ¡encontré una solución tan simple que te da ganas de llorar!

Espero que estés usando Linux;

pdftotext -layout NAME_OF_PDF.pdf

¡¡INCREÍBLE!!

Ahora tiene un buen archivo de texto con toda la información alineada en bonitas columnas, ahora es trivial formatear en un csv, etc.

Es por momentos como este que amo a Linux, estos muchachos idearon soluciones INCREÍBLES para todo, y lo pusieron allí GRATIS!

Simplemente me gustaría agregar a la muy útil respuesta de Kurt Pfeifle: ahora hay un envoltorio de Python para Tabula, y esto parece funcionar muy bien hasta ahora: https://github.com/chezou/tabula-py

Esto convertirá tu tabla PDF a un dataframe de Pandas. También puede configurar el área en coordenadas x, y, lo que obviamente es muy útil para datos irregulares.