Перечислить указатель вне диапазона при использовании 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: список, в котором каждый элемент является страницей объекта. Вы можете получить доступ к его свойствам, посмотрите здесь
Другие вопросы по тегам