Comment parser un document .pdf avec Python 3 et PDFMiner

Arrêtez de copier le net. Scrapez le.

 

Comment parser un document .pdf avec Python 3 et PDFMiner

pdf-python3-scraping-dp0l25m

Le format pdf, ou Portable Document Format (PDF) est un format de fichier développé dans les années 90, qui avait pour but initial de pouvoir présenter des documents toujours de la même façon, indépendamment du software, ou du hardware utilisé lors de la lecture.

Voeux pieux d’harmonisation et d’unité de présentation, qui a toutefois son revers. Chaque fichier PDF va saisir l’ensemble des éléments d’un document, et les encapsuler, c’est à dire les coder à nouveau, en utilisant le langage PostScript, un langage développé par Adobe de 1982 à 1984. Impossible donc de parser ces documents comme on parserait un simple fichier texte.

Dans ce tutoriel nous allons voir comment parser un fichier PDF en utilisant Python 3 et PDFMiner.

Quel document PDF allons nous parser ?

Pour le bien de cette démonstration, nous avons créé un document .pdf simple et prêt à l’emploi.

Dans ce document on trouve les éléments suivants :

  • Un élément texte simple : « salut »
  • Un élément texte, avec coloration de font et de police : « les potes »
  • Un art-element, généré avec word : « d :0) »

pdf-python3-scraping-p54uio3

Installer Python 3 et PDFMiner

Pour installer Python et PIP, vous pouvez vous rendre sur le post que nous avons déjà fait à ce sujet : https://lobstr.io/index.php/2018/02/15/installer-librairies-python-mac-os/

Pour installer PDFMiner, il suffit d’ouvrir votre commande, et de taper les lignes suivantes :

Pour plus de renseignements sur PDFMiner et ses fonctionnalités, notamment avec Python 3, leur git, fréquemment mis à jour, avec ces 738 stars : https://github.com/pdfminer/pdfminer.six

pdf-python3-scraping-yn3hn5z

Le code

Le script ci-dessous permet de lire le fichier .pdf, d’imprimer l’output, et d’enregistrer (si besoin) le fichier dans un fichier .txt.

Vous pouvez également retrouver le script ici : https://gist.github.com/Lobstrio/b6aa541c141d44b8e93325562ce18171

Le script s’appelle pdf_parser.py. Pour faire tourner ce script dans la commande, ou le terminal, vous devez taper le nom du script, suivi du chemin vers le fichier .pdf à parser. Si vous le souhaitez, vous pouvez également ajouté un fichier cible, qui réceptionnera le texte extrait.

Et voilà le résultat :

pdf-python3-scraping-qk7pyvp

Et lorsqu’on ouvre le fichier output_test.txt, voilà le rendu :

pdf-python3-scraping-fxvhf37

Limitations connues

Ce code peut extraire du texte depuis des pdfs simples, d’une page. Toutefois, l’extraction de pdf plus complexe, composés de plusieurs pages et de plusieurs éléments (images, tableau) requiert un réglage plus fin.

Si vous avez besoin de professionnels pour collecter les données de sites complexes, contactez nous grâce au formulaire ci-dessous.

Avertissement: Tout code fourni dans nos tutoriels est destiné à des fins d’illustration et d’apprentissage uniquement. Nous ne sommes pas responsables de la façon dont il est utilisé et n’assumons aucune responsabilité pour toute utilisation préjudiciable du code source. La simple présence de ce code sur notre site n’implique pas que nous encourageons le scraping ou l’extraction de données des sites référencés dans le code et le tutoriel qui l’accompagne. Les tutoriels ne font qu’illustrer la technique de programmation des scrapers web pour les sites internet populaires. Nous ne sommes pas obligés de fournir un support pour le code, cependant, si vous ajoutez vos questions dans la section des commentaires, nous pouvons vous y répondre périodiquement.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *