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.
Copiez et collez dans Excel.
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.
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.
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)
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éス者の割合'})
À 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)
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
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