Как разделить PDF-файл с помощью Python, каждая страница которого содержит набор определенного уникального текстаPython

Программы на Python
Ответить
Anonymous
 Как разделить PDF-файл с помощью Python, каждая страница которого содержит набор определенного уникального текста

Сообщение Anonymous »

У меня есть большой PDF-файл, и мне нужно разбить его на каждые «X» страниц, но «X» может меняться.
Мне нужно разделить каждую страницу, где страница содержит текст «Имя:», но где текст после «Имя:» меняется...
Таким образом, на странице 1 может быть «Имя: Сачин», тогда на странице 2 также может быть «Имя: Сачин», но на странице 3 есть «Имя: Сара», поэтому она должна быть отделена от страниц с 1 по 2, а затем на страницу 3.
Вот скрипт, который я нашел, но он независимо разбивается на каждую страницу.
https://www.blog.pythonlibrary.org/2018 ... th-python/
Заранее спасибо,
Сачин
ОБНОВЛЕНИЕ:
Вот код, который разбивает каждую страницу независимо от того, но который определяет имя после того, как текст «Имя:» найден, и соответственно переименовывает разделенный файл, в имени файла есть имя.
Как мне обновить код, чтобы при обнаружении двух последовательных страниц с одинаковым именем (после текстового поля «Имя:») это ДЕЛАЕТ НЕ РАЗДЕЛИТЬ на этой странице, а объединить две страницы с одинаковым именем в один PDF-файл?
Еще раз спасибо,
Сачин
import os
import re
from PyPDF2 import PdfFileReader, PdfFileWriter

pdf_file_path = 'Payslips.pdf'
file_base_name = pdf_file_path.replace('.pdf', '')
output_folder_path = os.path.join(os.getcwd(), 'Output')

pdf = PdfFileReader(pdf_file_path)

for page_num in range(pdf.numPages):

# Setup Objects & Classes
pdfWriter = PdfFileWriter()
pageObj = pdf.getPage(page_num)
pdfWriter.addPage(pageObj)

# Extract Text
Text = pageObj.extractText()

# print(Text)
MatchedTextArray = re.findall("Name:[^0-9]+?\s", Text)
MatchedText = (MatchedTextArray[0].replace('Name:', '')).replace('\n', '')

# Splitting on UpperCase
res_pos = [i for i, e in enumerate(MatchedText+'A') if e.isupper()]
res_list = [MatchedText[res_pos[j]:res_pos[j + 1]]
for j in range(len(res_pos)-1)]

# Extracting Firstname
firstname = res_list[1]

# Extracting Surname
del res_list[0:2]
surname = ''.join(res_list)

with open(os.path.join(output_folder_path,
'{0}, {1} - {2}.pdf'.format(surname.upper(), firstname.upper(), file_base_name.upper())),
'wb') as f:
pdfWriter.write(f)
f.close()

print("Split Page " + str(page_num))


Подробнее здесь: https://stackoverflow.com/questions/708 ... pecific-un
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»