Как выполнить итерацию .extracttext в pdfplumber

#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())