Как читать по строкам в pdf-файле с помощью PyPdf?

У меня есть код для чтения из pdf-файла. Есть ли способ читать строки за строкой из файла pdf (а не страницы) с использованием Pypdf, Python 2.6, в Windows?

Вот код для чтения страниц в формате pdf:

import pyPdf def getPDFContent(path): content = "" num_pages = 10 p = file(path, "rb") pdf = pyPdf.PdfFileReader(p) for i in range(0, num_pages): content += pdf.getPage(i).extractText() + "\n" content = " ".join(content.replace(u"\xa0", " ").strip().split()) return content 

Обновить:

Код вызова:

 f= open('test.txt','w') pdfl = getPDFContent("test.pdf").encode("ascii", "ignore") f.write(pdfl) f.close() 

3 Solutions collect form web for “Как читать по строкам в pdf-файле с помощью PyPdf?”

Похоже, что у вас есть большой фрагмент текстовых данных, которые вы хотите интерпретировать по очереди.

Вы можете использовать класс StringIO, чтобы обернуть этот контент в качестве файла для поиска, подобранного для поиска:

 >>> import StringIO >>> content = 'big\nugly\ncontents\nof\nmultiple\npdf files' >>> buf = StringIO.StringIO(content) >>> buf.readline() 'big\n' >>> buf.readline() 'ugly\n' >>> buf.readline() 'contents\n' >>> buf.readline() 'of\n' >>> buf.readline() 'multiple\n' >>> buf.readline() 'pdf files' >>> buf.seek(0) >>> buf.readline() 'big\n' 

В вашем случае выполните следующие действия:

 from StringIO import StringIO # Read each line of the PDF pdfContent = StringIO(getPDFContent("test.pdf").encode("ascii", "ignore")) for line in pdfContent: doSomething(line.strip()) 
 import pyPdf def getPDFContent(path): content = "" num_pages = 10 p = file(path, "rb") pdf = pyPdf.PdfFileReader(p) for i in range(0, num_pages): content += pdf.getPage(i).extractText() + "\n" content = " ".join(content.replace(u"\xa0", " ").strip().split()) return content 

Использование yield и PdfFileReader.pages может упростить вещи,

 from pyPdf import PdfFileReader def get_pdf_content_lines(pdf_file_path): with open(pdf_file_path) as f: pdf_reader = PdfFileReader(f) for page in pdf_reader.pages: for line in page.extractText().splitlines(): yield line for line in get_pdf_content_lines('/path/to/file.pdf'): print line 

Кроме того, некоторые могут google «python получить текст в формате pdf», вот как это сделать: (вот как я сюда попал)

 from pyPdf import PdfFileReader def get_pdf_content(pdf_file_path): with open(pdf_file_path) as f: pdf_reader = PdfFileReader(f) content = "\n".join(page.extractText().strip() for page in pdf_reader.pages) content = ' '.join(content.split()) return content print get_pdf_content('/path/to/file.pdf') 
  • Разбор PDF без объекта Root с использованием PDFMiner
  • Как установить poppler в ubuntu 15.04?
  • Получение номеров страниц из документа с помощью pyPDF
  • Лучший способ экспорта Pandas DF в PDF-файл с использованием Python
  • Создание сплющенного PDF-файла с помощью Python
  • Открытие pdf-страниц с pyPdf
  • Как вы смещаете все страницы документа PDF на один дюйм?
  • pypdf Объединение нескольких PDF-файлов в один PDF-файл
  • Python PyPDF2 присоединяется к страницам
  • разделить pdf на основе контура
  • Добавить ссылку в документ в PDF
  • Python - лучший язык программирования в мире.