web-dev-qa-db-fra.com

Comment extraire un tableau sous forme de texte à partir de PDF à l'aide de Python?

J'ai un PDF qui contient des tableaux, du texte et des images. Je veux extraire la table où que se trouvent les tables dans le PDF.

Je suis en train de chercher manuellement la table à partir de la page. À partir de là, je capture cette page et l'enregistre dans un autre fichier PDF.

import PyPDF2

PDFfilename = "Sammamish.pdf" #filename of your PDF/directory where your PDF is stored

pfr = PyPDF2.PdfFileReader(open(PDFfilename, "rb")) #PdfFileReader object

pg4 = pfr.getPage(126) #extract pg 127

writer = PyPDF2.PdfFileWriter() #create PdfFileWriter object
#add pages
writer.addPage(pg4)

NewPDFfilename = "allTables.pdf" #filename of your PDF/directory where you want your new PDF to be
with open(NewPDFfilename, "wb") as outputStream:
    writer.write(outputStream) #write pages to new PDF

Mon objectif est d’extraire la table de l’ensemble du document PDF.

Please have a look at the sample image of a page in PDF

26
venkat

à mon avis vous avez 4 possibilités:

  • Vous pouvez traiter le pdf directement en utilisant tabula

  • Vous pouvez convertir le pdf en texte en utilisant pdftotext, puis analyser le texte avec python.

  • Vous pouvez utiliser un outil externe pour convertir votre fichier pdf en Excel ou csv , puis utilisez le module requis python pour ouvrir le fichier Excel /. fichier csv.

  • Vous pouvez également convertir un fichier PDF en fichier image , puis utiliser n’importe quel logiciel OCR récent (qui reconstruit automatiquement un tableau à partir de la photo) pour obtenir des données.

Votre question est presque similaire avec:

Cordialement

39
A STEFANI

Je vous suggère d'extraire le tableau à l'aide de tabula. Passez votre pdf comme argument à la tabula api et il vous renverra le tableau sous forme de dataframe. Chaque table de votre pdf est renvoyée sous la forme d’une seule base de données. Ceci est mon code pour extraire le pdf.

#the table will be returned in a list of dataframe,for working with dataframe you need pandas
import pandas as pd
import tabula
file = "filename.pdf"
path = 'enter your directory path here'  + file
df = tabula.read_pdf(path, pages = '1', multiple_tables = True)
print(df)

S'il vous plaît se référer à cette repo de la mienne pour plus de détails.

10
Himanshu Poddar

Une mise à jour de 2019 à la question, car je suis toujours dirigé ici chaque fois que je recherche "table d'extrait de python pdf"

Il y a une solution python appelée camelot/excalibur

https://github.com/atlanhq/camelot

3
josem8f

Avec l'IA et les API dominant la technologie dans la plupart des besoins des développeurs, ici en 2019, vous voudrez peut-être essayer https://extracttable.com , alimenté par l'IA (ne vous souciez plus de spécifier des colonnes ou de créer des règles) ), principalement pour détecter la structure tabulaire dans les images (PDF) ou via une API , qui renvoie une réponse JSON sous forme de tableau, vous donne davantage de contrôle sur celle-ci.

La société gère également https://github.com/ExtractTable/camelotpro , un wrapper pour la célèbre bibliothèque open source camelot-py, qui extrait des tables non seulement à partir de fichiers PDF au format texte, mais également à des images.

0
Saradhi