python: проблема с сохранением l oop как переменной - PullRequest
0 голосов
/ 06 августа 2020
full_text = ''

i=0
while i<pdf_reader.getNumPages():
    pageinfo = pdf_reader.getPage(i)
    text += str(pageinfo.extractText())
    print(pageinfo.extractText())
    i = i + 1

Я пытаюсь извлечь весь текст из файла PDF, я могу извлечь все тексты на l oop. Однако я хочу сохранить l oop в качестве переменной для манипуляции. После того, как я сохранил для l oop как all_results, после этого я просто не могу выполнять никаких действий. Например, я пытаюсь проверить длину текста, и на выходе получается 0.

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Вы можете использовать пакет PDF Miner для извлечения текста из файлов PDF. Настоящим я прилагаю образец кода (Протестировано).

from io import StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage


def convert(fname, pages=None):
    if not pages:
        # To include all pages
        pagenums = set()
    else:
        # We can specify pages by giving an iterable of pagenumbers
        pagenums = set(pages)

    output = StringIO()
    manager = PDFResourceManager()
    converter = TextConverter(manager, output, laparams=LAParams())
    interpreter = PDFPageInterpreter(manager, converter)

    # Input PDF
    infile = open(fname, 'rb')
    for page in PDFPage.get_pages(infile, pagenums):
        interpreter.process_page(page)

    # Close all
    infile.close()
    converter.close()
    txt = output.getvalue()
    output.close()
    return txt


# Usage
text = convert('/home/stark/Desktop/file.pdf')  # Includes all Pages
text = convert('/home/stark/Desktop/file.pdf', pages=[1, 2, 3])  # specify pages here
print(text)
0 голосов
/ 06 августа 2020

Если я правильно понимаю вопрос, вы хотите объединить весь текст в одну переменную, которая будет использоваться после выполнения l oop.

Попробуйте этот код:

all_pg_text = ''
all_results = 0
for i in range(0, num_of_pages):
    print("Page Number: " + str(i))
    print("- - - - - - - - - - - - - - - - - - - -")
    pageObj = pdf_reader.getPage(i)
    pg_text = pageObj.extractText()
    print(pg_text)  # one page
    all_pg_text += pg_text  # add to full text
    print("- - - - - - - - - - - - - - - - - - - -")
    all_results +=i
pdfFile.close()

print(all_pg_text)\

Исходя из вашего обновленного вопроса, это может сработать:

full_text = ''

i=0  
while i < pdf_reader.getNumPages():
    pageinfo = pdf_reader.getPage(i)
    full_text += str(pageinfo.extractText())
    print(pageinfo.extractText())
    i = i + 1  

print(full_text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...