it-swarm.com.de

Wie extrahiere ich mit Python eine Tabelle als Text aus PDF)?

Ich habe eine PDF die Tabellen, Text und einige Bilder enthält. Ich möchte die Tabelle extrahieren, wo immer sich Tabellen in der PDF befinden.

Im Moment mache ich es manuell, um die Tabelle von der Seite zu finden. Von dort aus nehme ich diese Seite auf und speichere sie in einem anderen 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

Mein Ziel ist es, die Tabelle aus dem gesamten PDF Dokument zu extrahieren.

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

26
venkat

meiner meinung nach hast du 4 möglichkeiten:

  • Sie können das pdf direkt behandeln mit tabula

  • Sie können das PDF in Text umwandeln mit pdftotext und dann Text mit Python analysieren

  • Sie können ein externes Tool verwenden, um Ihre PDF-Datei in Excel oder CSV zu konvertieren und dann das erforderliche python Modul zum Öffnen der Excel/CSV-Datei verwenden.

  • Sie können auch pdf in eine Bilddatei konvertieren und dann eine neuere OCR-Software (die die Tabelle automatisch aus dem Bild rekonstruiert) verwenden, um Daten zu erhalten

Ihre Frage ist ähnlich wie bei:

Grüße

39
A STEFANI

Ich würde Ihnen vorschlagen, die Tabelle mit Tabula zu extrahieren. Übergeben Sie Ihr PDF als Argument an die tabula api und Sie erhalten die Tabelle in Form eines Datenrahmens. Jede Tabelle in Ihrem PDF wird als ein Datenrahmen zurückgegeben. Dies ist mein Code zum Extrahieren von 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)

Bitte beziehen Sie sich auf diese Repo von mir für weitere Details.

10
Himanshu Poddar

Ein 2019-Update der Frage, da ich jedes Mal, wenn ich nach "python extract pdf table" suche, hierher geleitet werde

Es gibt eine python Lösung namens camelot/excalibur

https://github.com/atlanhq/camelot

3
josem8f

Da KI und APIs die Technologie für die meisten Entwickleranforderungen dominieren, sollten Sie 2019 versuchen, https://extracttable.com , KI-powered (keine Gedanken mehr über das Angeben von Spalten oder das Erstellen von Regeln zu machen) ), in erster Linie um Tabellenstrukturen in Bildern oder PDFs über die API zu erkennen, die eine tabellarische JSON-Antwort zurückgeben, können Sie diese genauer steuern.

Das Unternehmen unterhält auch https://github.com/ExtractTable/camelotpro , einen Wrapper für die berühmte Open-Source-Bibliothek camelot-py, der Tabellen nicht nur aus Text-PDFs, sondern auch aus Bildern extrahiert

0
Saradhi