#list #pdf #iteration #text-extraction #pypdf2
#Список #PDF #итерация #извлечение текста #pypdf
Вопрос:
Я пытаюсь создать инструмент для извлечения текста с каждой страницы PDF-файла. Пока что только pdfplumber возвращает читаемый текст. Примеры pdfplumber (например https://github.com/jsvine/pdfplumber ) показывает извлекаемый текст на странице. Таким образом, я сделал следующее, чтобы захватить несколько страниц:
import pdfplumber
with pdfplumber.open(file) as pdf:
p1 = pdf.pages[0]
p2 = pdf.pages[1]
p3 = pdf.pages[2]
p1_text = p1.extract_text()
p2_text = p2.extract_text()
p3_text = p3.extract_text()
print(p1_text, p2_text, p3_text)
В моем PDF-файле 17 страниц. Я хочу знать, возможно ли выполнить итерацию по списку (т. Е. 0-16), чтобы сгенерировать p1, p2, p3… p17 (первый блок под инструкцией with).
Я сгенерировал необходимый список, используя:
file = '/Users/Guy/Coding/Crossref/sample.pdf'
from PyPDF2 import PdfFileReader
pdf = PdfFileReader(open(file,'rb'))
total_pages = pdf.getNumPages()
total_pages_range = list(range(1, total_pages))
Но, похоже, не удается объединить их вместе.
Любая помощь была бы высоко оценена — только начинаю с Python. Спасибо.
Ответ №1:
pdfplumber.PDF
Класс имеет .pages
свойство, которое представляет собой список, содержащий по одному pdfplumber.Page
экземпляру на загруженную страницу. Итак, если в вашем PDF-файле есть n
страницы, вы можете перебирать их все следующим образом
import pdfplumber
with pdfplumber.open(file) as pdf:
for page in pdf.pages:
print(page.extract_text())