Перечислить указатель вне диапазона при использовании PDF-сантехника
Здравствуйте, я извлекаю текст из PDF с помощью сантехника PDF и записываю его в текстовый файл, но получаю ошибку индекса за пределами допустимого диапазона.
import glob
import pdfplumber
for filename in glob.glob('*.pdf'):
pdf = pdfplumber.open(filename)
OutputFile = filename.replace('.pdf','.txt')
fx2=open(OutputFile, "a+")
for i in range(0,10000,1):
try:
page = pdf.pages[0]
text = page.extract_text()
print(text)
fx2.write(text)
except Exception as e:
print(e)
fx2.close()
pdf.close() ````
1 ответ
Попробуйте этот код:
filename = 'path/to/your/PDF'
crop_coords = [x0, top, x1, bottom]
text = ''
pages = []
with pdfplumber.open(filename) as pdf:
for i, page in enumerate(pdf.pages):
my_width = page.width
my_height = page.height
# Crop pages
my_bbox = (crop_coords[0]*float(my_width), crop_coords[1]*float(my_height), crop_coords[2]*float(my_width), crop_coords[3]*float(my_height))
page_crop = page.crop(bbox=my_bbox)
text = text+str(page_crop.extract_text())
pages.append(page_crop)
crop_coords
это список, используемый для обрезки вашей страницы. Вот объяснение координат:
x0 = % Distance from left vertical cut to left side of page.
top = % Distance from upper horizontal cut to upper side of page.
x1 = % Distance from right vertical cut to right side of page.
bottom = % Distance from lower horizontal cut to lower side of page.
Если вы не хотите этого делать, просто используйте следующий код:
filename = 'path/to/your/PDF'
text = ''
pages = []
with pdfplumber.open(filename) as pdf:
for i, page in enumerate(pdf.pages):
text = text+str(page.extract_text())
pages.append(page)
В обоих случаях результаты будут такими:
-
text
: строка, содержащая весь текст вашего PDF-файла -
pages
: список, в котором каждый элемент является страницей объекта. Вы можете получить доступ к его свойствам, посмотрите здесь