#python #text #text-files #pypdf2
#python #текст #текстовые файлы #pypdf
Вопрос:
Мне нужна небольшая помощь, чтобы понять, почему это работает не так, как ожидалось. следующий код открывает файл PDF, извлекает текст и должен сохранять отдельные текстовые файлы в соответствии с именем файла PDF, однако он не выдает никаких выходных данных. пожалуйста, помогите. код выглядит следующим образом:
import PyPDF2
import os
import glob
directory = 'C:/LIVE/2017/'
fileStructure = glob.glob("C:/LIVE/2017/*")
names = [os.path.basename(x) for x in glob.glob('C:/LIVE/2017/*')]
for file in os.listdir(directory):
with open(os.path.join(directory,file), 'rb') as pdfFileObj:
pdfReader = PyPDF2.PdfFileReader(pdfFileObj, strict=False)
pageObj = pdfReader.getPage(0)
number_of_pages = pdfReader.getNumPages()
for page_number in range(number_of_pages):
page = pdfReader.getPage(page_number)
page_content = page.extractText().encode('utf-8')
getFileName = os.path.basename(pdfFileObj.name)
bcn = getFileName.rsplit(' ', 1)[-1]
bcNum = os.path.splitext(os.path.basename(bcn))[0]
text_file = open(bcNum, "w")
text_file.write(page_content)
text_file.close()
Ответ №1:
Извлекает ли он строки из PDF для начала? Я уже пробовал использовать PyPDF2 раньше и заметил, что у него часто возникают проблемы с получением текста из PDF-файлов, если они не отформатированы точно правильно. Я добился гораздо большего успеха, используя модуль Tika.
from tika import parser
def read_pdf(pdf):
raw = parser.from_file(pdf)
return raw['content']
text_list = list()
for file in os.listdir(directory):
raw_content = read_pdf(pdf)
text_list.append(raw_content)
Комментарии:
1. спасибо, попробую. PyPDF2 работал относительно хорошо для меня.