web-dev-qa-db-fra.com

Extraire / Identifier les tables de PDF python

Existe-t-il des bibliothèques open source prenant en charge l'identification et l'extraction de table?

Je veux dire par là:

  1. Identifier une structure de table existante
  2. Classer la table à partir de son contenu
  3. Extraire les données de la table dans un format de sortie utile, par ex. JSON/CSV etc.

J'ai parcouru des questions similaires sur ce sujet et trouvé les éléments suivants:

  • PDFMiner qui résout le problème 3, mais il semble que l'utilisateur soit obligé de spécifier à PDFMiner où il existe une structure de table pour chaque table (corrigez-moi si je me trompe)
  • pdf-table-extract qui tente de résoudre le problème 1 mais selon la liste À faire , ne peut pas actuellement identifier les tables séparées par des espaces. C'est un problème car toutes les tables de mes PDF sont séparées par des espaces!

Actuellement, je pense que je devrais passer beaucoup de temps à développer une solution d’apprentissage automatique afin d’identifier les structures de table à partir de PDF. Par conséquent, toute approche alternative serait plus que bienvenue!

42
Alexander McFarlane

Vous devriez certainement jeter un coup d'œil à cette réponse:

et aussi jeter un oeil à tous les liens qui y sont inclus.

Tabula/TabulaPDF est actuellement le meilleur outil d’extraction de table disponible pour le PDF scraping.

35
Kurt Pfeifle

Après de nombreuses heures fructueuses à explorer les bibliothèques d'OCR, les cadres de sélection et les algorithmes de classification, j'ai trouvé une solution si simple qu'elle vous donne envie de pleurer!

J'espère que vous utilisez Linux.

pdftotext -layout NAME_OF_PDF.pdf

INCROYABLE!!

Maintenant, vous avez un fichier texte Nice avec toutes les informations alignées dans les colonnes Nice, il est maintenant trivial de le formater en CSV, etc.

C’est pour des moments comme celui-ci que j’adore Linux, ces gars-là ont mis au point des solutions AMAZING pour tout, et les ont mis GRATUITEMENT!

36
Ike

J'aimerais juste ajouter à la réponse très utile de Kurt Pfeifle - il existe maintenant un wrapper Python pour Tabula, et cela semble très bien fonctionner jusqu'à présent: https: //github.com/chezou/tabula-py

Ceci convertira votre trame de données PDF en une trame de données Pandas. Vous pouvez également définir la zone en coordonnées x, y, ce qui est évidemment très pratique pour les données irrégulières. Les données.

16
Blodwyn Pig