Я использую приведенный ниже код для извлечения текста из сотен PDF-файлов в определенной папке:
from pypdf import PdfReader
import os
import glob
path = input("Enter the file path: ")
pattern = path + "\\*.pdf"
result = glob.glob(pattern)
for file_name in result:
reader = PdfReader(file_name)
page = reader.pages[0]
text = page.extract_text()
print(text)
Это дает мне следующий результат:
Payslip
March 2024
randomtext
123456Name of the employee
и после этого идет множество строк, которые не имеют значения.
Я хочу иметь возможность извлекать идентификаторы сотрудников из каждого документа , а затем используйте его для ежемесячного переименования каждого файла в папке. Файлы всегда выглядят одинаково, но название месяца и года меняются. Идентификатор сотрудника может состоять из 4–6 цифр, но всегда в одном и том же месте.
Есть ли другая библиотека для чтения PDF-файлов, которую вы бы использовали? Возможно ли извлечь цифры, которые всегда находятся в одном и том же месте, в зависимости от длины, которую я не могу знать заранее?
Остальная часть кода у меня есть, чтобы иметь возможность использовать извлеченный идентификационный номер как часть имени файла, но я не уверен, как каждый месяц брать идентификаторы именно из этого места. Это строка, поэтому я подумывал о нарезке, но поскольку месяц постоянно меняется и я не могу быть уверен, когда он будет состоять из 4, 5 или 6 цифр, я отказался от этой идеи. Случайный текст всегда состоит из 9 символов, включая начальный пробел.
Заранее спасибо!
Я пробовал разрезать его, но в этом случае это не работает. параметр. Я составил код на основе предыдущего кода, который я использую для переименования PDF-файлов в папке, но в таких случаях идентификационный номер всегда присутствует в имени файла, так что это намного проще.
Я закончил свой код (извините, он некрасиво выглядит, я занимаюсь этим только в качестве хобби и пытаюсь исключить некоторые ручные процессы на работе):
from pypdf import PdfReader
import os
import glob
import re
month = input("Which month's reports? Type the full name of the month: "
"(In the following format: MM_YYYY) ")
path = input("Enter the file path: ")
pattern = path + "\\*.pdf"
result = glob.glob(pattern)
for file_name in result:
reader = PdfReader(file_name)
page = reader.pages[0]
text = page.extract_text()
mylist = text.split()
myIds = []
myIds.append(mylist[4])
mystring = ''.join(myIds)
temp = re.findall(r'\d+', mystring)
res = list(map(int, temp))
old_name = file_name
number = str(res)
number = number.replace('[', '')
number = number.replace(']', '')
new_name = path + '\\' + number + ".Company Name Payslip" + "_" + \
month + old_name[-4:]
os.rename(old_name, new_name)
Подробнее здесь: https://stackoverflow.com/questions/784 ... n-a-folder