Страница pdfplumber
git говорит, что pdfplumber.open
возвращает экземпляр класса pdfplumber.PDF
.
Этот экземпляр имеет свойство pages
, которое представляет собой список pdfplumber.Page
экземпляров - по одному на Page
, загруженных из вашего pdf. Посмотрев на свой код, вы увидите:
total_pages = len(pdf.pages)
Вы должны получить общее количество страниц для загруженного в данный момент pdf.
Чтобы объединить весь текст pdf в одну гигантскую текстовую строку, вы могли бы попробуйте операцию "for in". Попробуйте изменить существующий код:
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith('.pdf'):
with pdfplumber.open(file) as pdf:
page = pdf.pages[0]
text = page.extract_text()
print(text)
To:
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith('.pdf'):
all_text = '' # new line
with pdfplumber.open(file) as pdf:
# page = pdf.pages[0] - comment out or remove line
# text = page.extract_text() - comment out or remove line
for pdf_page in pdf.pages:
single_page_text = pdf_page.extract_text()
print( single_page_text )
# separate each page's text with newline
all_text = all_text + '\n' + single_page_text
print(all_text)
# print(text) - comment out or remove line
Вместо того, чтобы использовать значение индекса страницы pdf.page[0]
для доступа к отдельным страницам, используйте for pdf_page in pdf.pages
. Он прекратит цикл после того, как достигнет последней страницы без создания исключения. Вам не придется беспокоиться об использовании значения индекса, выходящего за пределы допустимого диапазона.