Помощь в уточнении сохранения выходных данных из скрипта Python в текстовый файл

#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 работал относительно хорошо для меня.