PDFTableExtract2 est un programme en ligne de commande pour extraire des tableaux à partir de fichiers PDF.

PDFTableExtract2 fonctionnent de manière entièrement automatique ; il peut notamment :

  • Détecter les tableaux sur une page PDF (il supporte plusieurs tableaux par page*)

  • Reconnaître les lignes verticales et horizontales

  • Reconnaître les espaces blancs comme des séparateurs de ligne ou de colonne (*)

  • Détecter les cellules fusionnées (i.e. rowspan et colspan)

  • Extraire le texte de chaque cellule

  • Extraire le texte en-dehors des tableaux (*)

  • En option, utiliser un programme d'OCR (tel que Tesseract) si le texte est sous forme d'image (*)

  • Produire une sortie pseudo-HTML, CSV, JSON ou listes Python

PDFTableExtract2 est écrit en Python 3; il s'agit d'une version améliorée de PDF-table-extract d'Ashima Research. PDFTableExtract2 a été amélioré (en particulier les fonctionnalités marquées d'un *) par Jean-Baptiste Lamy au laboratoire de recherche LIMICS, lors du projet VIIIP sur l'information sur les nouveaux médicaments, financé par l'ANSM (Agence Nationale de Sécurité du Médicament et des produits de santé). Il est disponible sous la licence GNU LGPL v3. En cas de problème, merci de contacter Jean-Baptiste Lamy <email dans la colonne de gauche du site>.

LIMICS
University Paris 13, Sorbonne Paris Cité
Bureau 149
74 rue Marcel Cachin
93017 BOBIGNY
FRANCE

Fonctionnement

La détection se fait suivant trois étapes : reconnaissance des lignes, des délimiteurs et des cellules :

Et voici le résultat produit en pseudo-HTML:

<?xml version="1.0" encoding="utf-8"?>
<html>
<head><meta charset="utf-8"/></head>
<body>
<div>Text before table</div>
<table border="1">
  <tr>
    <td colspan="3">First table, with missing horizontal lines</td>
  </tr>
  <tr>
    <td>Cell 1-1</td>
    <td>Cell 2-1</td>
    <td>Cell 3-1</td>
  </tr>
  <tr>
    <td>Cell 1-2</td>
    <td>Cell 2-2</td>
    <td>Cell 3-2</td>
  </tr>
</table>
<div>Text between tables</div>
<table border="1">
  <tr>
    <td rowspan="2">Second Table</td>
    <td>Header</td>
  </tr>
  <tr>
    <td>This is a multi-line cell</td>
  </tr>
</table>
<div>Text after table</div>
</body>
</html>

Liens

PDFTableExtract2 sur BitBucket (version de dévelopement): https://bitbucket.org/jibalamy/pdftableextract2