superfluous read pdfreadwarning pdffilereader library leer instalar found example python pdf pypdf

python - read - ¿Cómo leer línea por línea en archivo pdf usando PyPdf?



python pdf library (3)

Tengo un código para leer de un archivo pdf. ¿Hay alguna manera de leer línea por línea desde el archivo pdf (no páginas) usando Pypdf, Python 2.6, en Windows?

Aquí está el código para leer las páginas en 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

Actualizar:

El código de la llamada es este:

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


Parece que lo que tienes es una gran cantidad de datos de texto que deseas interpretar línea por línea.

Puede usar la clase StringIO para envolver ese contenido como un objeto similar al archivo que puede buscar:

>>> 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''

En tu caso, hazlo:

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())


Usar yield y PdfFileReader.pages pueden simplificar las cosas,

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

Además, algunos pueden buscar en google "python get pdf content text" así que aquí les mostramos cómo: (así es como llegué aquí)

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'')


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