Извлечь текст из файла pdf с помощью pdfplumber
Я хочу извлечь текст из файла pdf, пробовал:
directory = r'C:\Users\foo\folder'
for x in os.listdir(directory):
print(x)
x = x.replace('.pdf','')
filename = os.fsdecode(x)
print(x)
if filename.endswith('.pdf'):
with pdfplumber.open(x) as pdf1:
page1 = pdf1.pages[0]
text1 = page1.extract_text()
print(text1)
и напечатал:
20170213091544343.pdf
20170213091544343
Увидев файл с именем
20170213091544343
, Я добавил:
else:
with pdfplumber.open(x) as pdf1:
page1 = pdf1.pages[0]
text1 = page1.extract_text()
print(text1)
прочитать файл в случае, если в имени файла нет
.pdf
и он обнаружил ошибку:
20170213091544343.pdf
20170213091544343
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-34-e370b214f9ba> in <module>
16
17 else:
---> 18 with pdfplumber.open(x) as pdf1:
19 page1 = pdf1.pages[0]
20 text1 = page1.extract_text()
C:\Python38\lib\site-packages\pdfplumber\pdf.py in open(cls, path_or_fp, **kwargs)
56 def open(cls, path_or_fp, **kwargs):
57 if isinstance(path_or_fp, (str, pathlib.Path)):
---> 58 fp = open(path_or_fp, "rb")
59 inst = cls(fp, **kwargs)
60 inst.close = fp.close
FileNotFoundError: [Errno 2] No such file or directory: '20170213091544343'
1 ответ
Решение
os.listdir()
дает только
filename
и ты должен присоединиться к этому с
directory
for filename in os.listdir(directory):
fullpath = os.path.join(directory, filename)
#print(fullpath)
И вы должны продолжать
.pdf
import os
import pdfplumber
directory = r'C:\Users\foo\folder'
for filename in os.listdir(directory):
if filename.endswith('.pdf'):
fullpath = os.path.join(directory, filename)
#print(fullpath)
#all_text = ""
with pdfplumber.open(fullpath) as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)
#all_text += text
#print(all_text)
или с номером страницы
with pdfplumber.open(fullpath) as pdf:
for number, page in enumerate(pdf.pages, 1):
print('--- page', number, '---')
text = page.extract_text()
print(text)