Как извлечь таблицу в виде текста из PDF с помощью Python?
У меня есть PDF, который содержит таблицы, текст и некоторые изображения. Я хочу извлечь таблицу везде, где есть таблицы в PDF.
Прямо сейчас я делаю вручную, чтобы найти таблицу со страницы. Оттуда я беру эту страницу и сохраняю ее в другом 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
Моя цель - извлечь таблицу из всего документа PDF.
![Please have a look at the sample image of a page in PDF]()
Ответы
Ответ 1
на мой взгляд, у вас есть 4 возможности:
Вы можете работать с PDF напрямую, используя tabula
.Вы можете преобразовать PDF в текст, используя pdftotext, а затем проанализировать текст с помощью Python
Вы можете использовать внешний инструмент, чтобы преобразовать файл PDF в Excel или CSV, а затем использовать необходимый модуль Python, чтобы открыть файл Excel/CSV.
Вы также можете преобразовать pdf в файл изображения, а затем использовать любое недавнее программное обеспечение для оптического распознавания текста (которое автоматически восстанавливает таблицу из изображения) для получения данных или
если вход представляет собой изображение или отсканированный PDF, попробуйте ExtractTable или CamelotPro, если вы уже использовали camelot-py
Ваш вопрос похож на:
С уважением
Ответ 2
Я бы предложил вам извлечь таблицу, используя Tabula. Передайте ваш pdf в качестве аргумента в api tabula, и он вернет вам таблицу в виде фрейма данных. Каждая таблица в вашем pdf файле возвращается как один кадр данных.
Это мой код для извлечения 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)
Пожалуйста, обратитесь к моему репо для более подробной информации.
Ответ 3
Обновление вопроса 2019 года, так как меня всегда направляют сюда каждый раз, когда я ищу "таблицу pdf extract python"
Есть решение на python под названием camelot/excalibur
https://github.com/atlanhq/camelot
Ответ 4
Также как ключевое слово для ваших дальнейших исследований: существует также возможность использования зонального OCR. Я использовал это с большим успехом в проекте. Но этот метод не подходит для высокой громкости/высокой скорости, и для этого требуется определить шаблон извлечения для каждого поля:
![enter image description here]()
С положительной стороны, поскольку он работает визуально, он работает с любой таблицей (текстом, изображением, сканированием).
Ответ 5
Поскольку AI и API доминируют над технологиями в большинстве потребностей разработчиков, здесь, в 2019 году, вы можете попробовать https://extracttable.com, API для определения табличной структуры в изображении или PDF файлах через API и перестать беспокоиться об указании столбцов. или создание правил или табличных областей
Вы должны попробовать их ExtractTable-py - для вывода требуется всего 3 строки кода
Компания также поддерживает CamelotPro, обертку для известной библиотеки с открытым исходным кодом, camelot-py, которая извлекает таблицы не только из текстовых PDF файлов, но и из изображений.
Ответ 6
Вы можете попытаться преобразовать файл pdf в файл excel, а затем вы можете использовать библиотеку openpyxl для извлечения данных из файла excel, добавления этого файла в массив и последующего преобразования массива в json.