[Automation] Extraire le tableau en PDF avec Python

Le PDF est gênant

Travailler avec des fichiers PDF en Python est difficile.

Dans certains cas, le tableau est intégré au PDF.

Par exemple

Un grand nombre de données de table sont intégrées dans Rapport de résultat de mise en œuvre du service Zeneiren Stress Check 2018 Je vais.

Par exemple, supposons que vous souhaitiez extraire le [Tableau 14 Pourcentage de personnes très stressées par industrie] à la page 40 du fichier.

Sélectionnez ce tableau et copiez-le et collez-le dans Excel. pdf_table_copy.png

Copiez et collez dans Excel.

pdf_copy2excel.png

Oh? Ça ne marche pas. Toutes les données sont répertoriées dans une cellule.

En fait, vous pouvez utiliser Python pour convertir les tableaux de ce PDF en csv ou Excel relativement facilement.

Convertir un tableau PDF en csv avec Python

Il y a deux étapes pour convertir une table dans un PDF en csv ou exceller avec Python.

Étape 1. Extrayez le tableau du PDF en tant que DataFrame pandas Étape 2. Ecrivez le DataFrame au format csv ou excel

Regardons-les dans l'ordre.

Étape 1. Extrayez le tableau du PDF en tant que DataFrame pandas

Pour extraire un tableau pdf en tant que DataFrame, nous utilisons un module appelé ** tabula **.

Je pense qu'il y a beaucoup de gens qui n'ont pas installé de tabula. pip install tabula-py Installez avec.

De plus, ce tableau fonctionne sur Java, vous devez donc également installer Java.

Maintenant que la tabula est prête, importez des pandas et des tabula.

python



import pandas as pd
import tabula

Pour extraire un tableau d'un PDF tabula.read_pdf("xxx.pdf", lattice=True, pages='xxxx') Utilisez la fonction.

--Dans "" xxx.pdf ", écrivez le chemin du fichier PDF que vous souhaitez lire. --lattice = True est une option pour déterminer les cellules par les bordures de tableau. Si la table que vous souhaitez extraire est séparée par une bordure, spécifiez lattice = True. --pages spécifie les pages que vous souhaitez charger. --Si vous souhaitez lire uniquement la 40e page, spécifiez comme pages = '40'. --Si vous souhaitez charger les pages 40-45, spécifiez comme pages = '40 -45'. --Si vous souhaitez charger toutes les pages, vous pouvez utiliser pages = 'all'.

Maintenant, lisons le tableau à la page 40 du "Rapport de résultat de mise en œuvre du service Zeneiren Stress Check 2018".

python



# lattice=True pour déterminer la cellule par l'axe du tableau
dfs = tabula.read_pdf("Rapport sur les résultats de mise en œuvre du service Zeneiren Stress Check 2018.pdf", lattice=True, pages = '40')

for df in dfs:
    display(df)

tabula_df.png

Il est étrange que \ r soit inclus car le nom de la colonne a été cassé dans la cellule, mais le contenu de la table peut être bien extrait.

Pour le moment, corrigeons correctement les noms des colonnes. Vous pouvez changer le nom de la colonne avec df.rename (columns = {'original column name': 'changed column name'}). Lors de la modification de plusieurs noms de colonnes, vous pouvez connecter le nom de la colonne d'origine '': le nom de la colonne modifié '' en les séparant par une virgule.

python


df = df.rename(columns={'Stress élevé\Nombre de personnes': 'Stress élevéス者数', 'Stress élevéス\Pourcentage de r personnes': 'Stress élevéス者の割合'})

Étape 2. Ecrivez le DataFrame au format csv ou excel

À l'origine, pandas a une fonction pour écrire DataFrame en csv ou Excel.

Enregistrer sous csv: df.to_csv (" filename.csv ", index = None) Enregistrer sous Excel: df.to_excel (" filename.xlsx ", index = None)

Résumé

Enfin, je résumerai ce code.

pyhon


import pandas as pd
import tabula
 
# lattice=True pour déterminer la cellule par l'axe du tableau
dfs = tabula.read_pdf("Rapport sur les résultats de mise en œuvre du service Zeneiren Stress Check 2018.pdf", lattice=True, pages = '40')

#Vérifiez si vous pouvez obtenir le tableau PDF correctement
for df in dfs:
    display(df)

# csv/Enregistrer sous Excel(Cette fois, dfs[0]seulement)
df = dfs[0].rename(columns={'Stress élevé\Nombre de personnes': 'Stress élevéス者数', 'Stress élevéス\Pourcentage de r personnes': 'Stress élevéス者の割合'})
df.to_csv("Tableau PDF.csv", index=None) # csv
df.to_excel("Tableau PDF.xlsx", index=None) # Excel

référence

Voici les autres séries d'automatisation que j'ai écrites. Si vous êtes intéressé, s'il vous plaît!

[Automation] Lire des documents Word avec Python https://qiita.com/konitech913/items/c30236bdf47775535e2f

[Automation] Convertit le code Python en un fichier exe https://qiita.com/konitech913/items/6259f13e057bc25ebc23

[Automation] Envoyer des e-mails Outlook avec Python https://qiita.com/konitech913/items/51867dbe24a2a4272bb6

[Automation] Lire le courrier Outlook avec Python https://qiita.com/konitech913/items/8a285522b0c118d5f905

[Automation] Lire le courrier (fichier msg) avec Python https://qiita.com/konitech913/items/fa0cf66aad27d16258c0

[Automation] Utilisez le presse-papiers avec Python et collez le tableau dans Excel https://qiita.com/konitech913/items/83975332e395a387eace

Recommended Posts

[Automation] Extraire le tableau en PDF avec Python
Lire les données de la table dans un fichier PDF avec Python
Extraire le tableau des fichiers image avec OneDrive et Python
Convertissez l'image au format .zip en PDF avec Python
Extraire le fichier xz avec python
[Automation] Extraire les rendez-vous Outlook avec Python
Afficher Python 3 dans le navigateur avec MAMP
Associez l'ensemble de tables dans les modèles de python.py
[Python] Récupérez les fichiers dans le dossier avec Python
Pixelliser un PDF avec Python
Automatisation de l'interface utilisateur avec Python
Extraire les pièces jointes reçues par Thunderbird avec Python
Essayez de traduire avec Python tout en conservant la mise en page PDF
[Python] Obtenez les nombres dans l'image graphique avec OCR
Explorez l'URL contenue dans le tweet Twitter avec python
Obtenez des résultats au format dict avec Python psycopg2
Ecrire des caractères dans l'illustration de la carte avec OpenCV python
[Python] Comment réécrire le style de table avec python-pptx [python-pptx]
Grattage au sélénium en Python
Exploitez LibreOffice avec Python
Trouver des erreurs en Python
Débogage avec pdb en Python
OCR à partir de PDF en Python
Gérer les sons en Python
Grattage avec du sélénium en Python
Grattage avec Tor en Python
Tweet avec image en Python
Combiné avec ordinal en Python
Intégrez des fichiers PDF avec Python
UI Automation Partie 2 en Python
Appelez l'API avec python3.
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting
Essayez de gratter les données COVID-19 Tokyo avec Python
Comment extraire n'importe quel rendez-vous dans Google Agenda avec Python
Probablement le moyen le plus simple de créer un pdf avec Python 3
Manipulez le presse-papiers en Python et collez le tableau dans Excel
[Homologie] Comptez le nombre de trous dans les données avec Python
Générez automatiquement une table de distribution de fréquence en un seul coup avec Python
Extraire plusieurs doublons de liste en Python
Reconnaissance des nombres dans les images avec Python
Tester avec des nombres aléatoires en Python
Obtenir l'API arXiv en Python
Extraire la valeur maximale avec les pandas.
GOTO en Python avec Sublime Text 3
Travailler avec LibreOffice en Python: import
Convertir Markdown en PDF en Python
Python dans le navigateur: la recommandation de Brython
Enregistrez le fichier binaire en Python
[Automatisé avec python! ] Partie 1: fichier de configuration
Scraping avec Selenium en Python (Basic)
Frappez l'API Sesami en Python
Analyse CSS avec cssutils en Python
[Automation] Envoyer des e-mails Outlook avec Python
Numer0n avec des objets fabriqués avec Python
Obtenez la météo avec les requêtes Python
Obtenez la météo avec les requêtes Python 2
Ouvrez UTF-8 avec BOM en Python