Estoy tratando de extraer el texto que se incluye en este archivo PDF con Python.

Estoy usando el PyPDF2 módulo, y tiene la siguiente secuencia de comandos:

import PyPDF2
pdf_file = open('sample.pdf')
read_pdf = PyPDF2.PdfFileReader(pdf_file)
number_of_pages = read_pdf.getNumPages()
page = read_pdf.getPage(0)
page_content = page.extractText()
print page_content

Cuando ejecuto el código, me sale el siguiente resultado, que es distinta de la incluida en el documento PDF:

!"#$%#$%&%$&'()*%+,-%./01'*23%4
5'%1$#26%3/%7/))/8%&)/26%8#3"%3"*%313/9#&)
%

¿Cómo puedo extraer el texto como está en el documento PDF?

  • Yo nunca he usado ese módulo, pero no hace una diferencia si se abre el archivo en modo binario: pdf_file = open('sample.pdf', 'rb')?
  • Gracias por su respuesta. Traté de que con el modo binario, pero nada cambió
  • Copia el texto con un buen visor de PDF de Adobe canónica del Acrobat Reader, si es posible. ¿Se obtiene el mismo resultado? La diferencia no es que el texto es diferente, pero la fuente es – los códigos de caracteres se asignan a otros valores. No todos los documentos Pdf contienen los datos correctos para restaurar este.
  • Traté de otro documento y funcionó. Sí, parece que el problema es con el propio PDF
  • El PDF contiene un carácter CMap de la tabla, por lo que las restricciones y soluciones discutido en este hilo que es relevante – stackoverflow.com/questions/4203414/….
  • El PDF contiene, en efecto, una correcta CMAP por lo que es trivial para convertir el grupo ad hoc de asignación de caracteres en texto sin formato. Sin embargo, se necesita un procesamiento adicional para recuperar el orden correcto de texto. Mac OS X de Cuarzo de PDF renderer es un asqueroso pedazo de trabajo! En su traducción original de la orden me sale «m T h iuss iisn ga tosam fopllloew DalFo dnogc wumithe ntht eI tutorial»… Sólo después de la clasificación por coordenadas x tengo un mucho más probable resultado correcto: «Esta es una muestra de un documento PDF que estoy usando para seguir con el tutorial».
  • stackoverflow.com/questions/32667398/…

InformationsquelleAutor Simplicity | 2016-01-17

17 Comentarios

  1. 132

    Estaba buscando una solución sencilla para el uso de python 3.x y windows. No parece ser el apoyo de textract, lo cual es lamentable, pero si usted está buscando una solución sencilla para windows/python 3 checkout de la tika paquete, realmente sencillo para la lectura de archivos pdf.

    Tika-Python Python es un enlace a la Apache Tika™ RESTO de servicios que permite Tika a ser llamado de forma nativa en la comunidad de Python.

    from tika import parser
    
    raw = parser.from_file('sample.pdf')
    print(raw['content'])
    • He probado pypdf2, tika y se intentó y no se pudo instalar textract y pdftotext. Pypdf2 devuelto 99 palabras mientras tika devuelto todos 858 palabras de mi prueba de la factura. Así que terminé yendo con tika.
    • El hombre que yo amo. No sé por qué tal una buena respuesta está oculta en StackOverflow. Todo el mundo sigue mencionando que necesitamos utilizar PyPDF2 o pdfminer pero apestan. Estoy en amor con tika ahora
    • Sigo recibiendo un «RuntimeError: no se puede iniciar Tika server error».
    • Esto es impresionante !!
    • La respuesta que he estado buscando durante toda mi vida, ¿por qué nadie recomendamos Tika? Gracias!
    • Si usted necesita para ejecutar este en todos los archivos PDF en un directorio (de forma recursiva), se toma este script
    • usted puede ser que desee considerar la aceptación de esta respuesta. Este analizador de tika me ayudó también. He probado todos los mencionados, a las bibliotecas, pero sin éxito. Tika era el adecuado para mí. (OSX Mojave)
    • Nadie era capaz de encontrar una solución para «RuntimeError: no se puede iniciar Tika servidor»?
    • Esto es muy lento ya que se ejecuta Java RESTO de servidor web en localhost en el puerto 9998 debajo de la capota.
    • para que es tener la «Incapaz de iniciar Tika server error», he resuelto instalando la última versión de Java como se sugirió aquí, lo cual hice en Mac Os X con brew siguiente esta respuesta
    • Como yo estoy detrás de cortafuegos, tika es de ninguna utilidad para mí, porque es ponerse en contacto con fuera de servidor
    • Descarga un tika-server.jar 76 MB archivo en C:\Users\User\AppData\Local\Temp. Es allí una manera de hacer que este permanente si limpio temp más tarde? También se requiere una máquina virtual de JAVA instalado, ¿es eso cierto?

  2. 47

    Uso textract.

    Es compatible con muchos tipos de archivos, incluyendo archivos Pdf

    import textract
    text = textract.process("path/to/file.extension")
    • Textwrap parece ser un bonito envoltorio, sino que depende de numerosas organizaciones no-Python utilidades que pueden no ser fácilmente disponible en un sistema dado.
    • Funciona para los archivos Pdf, epubs, etc – de los procesos de los archivos Pdf que incluso PDFMiner falla.
    • cómo utilizar la función de aws lambda , he probado esto, pero , importación error fro textract
    • textract es un contenedor para Poppler:pdftotext (entre otros).
    • Para usar cualquier cosa en AWS Lambda que no incorporado, usted tiene que incluir y todas las dependencias, en su paquete.
    • si usted conda install swig antes de pip install pocketsphinx luego pip install textract que parece ser el conjuro que hace que funcione.
    • ha obtenido un error solicitudes de 2.21.0 ha requisito chardet<3.1.0,>=3.0.2, pero vas a tener chardet 2.3.0 que es incompatible.’ – trató de todas las versiones de ‘chardet’. No podía trabajar en windows.
    • No fue ‘textract’ de la biblioteca. es muy difícil de ejecutar y Sólo funciona para MAC. No funciona en windows
    • textract es que me exigía hacer un downgrade a python 2.7 (de 3.7). No se puede hacer.

  3. 43

    Vistazo a este código:

    import PyPDF2
    pdf_file = open('sample.pdf', 'rb')
    read_pdf = PyPDF2.PdfFileReader(pdf_file)
    number_of_pages = read_pdf.getNumPages()
    page = read_pdf.getPage(0)
    page_content = page.extractText()
    print page_content.encode('utf-8')

    La salida es:

    !"#$%#$%&%$&'()*%+,-%./01'*23%4
    5'%1$#26%3/%7/))/8%&)/26%8#3"%3"*%313/9#&)
    %

    Usar el mismo código para leer un pdf a partir de 201308FCR.pdf
    .El resultado es normal.

    Su documentación explica por qué:

    def extractText(self):
        """
        Locate all text drawing commands, in the order they are provided in the
        content stream, and extract the text.  This works well for some PDF
        files, but poorly for others, depending on the generator used.  This will
        be refined in the future.  Do not rely on the order of text coming out of
        this function, as it will change if this function is made more
        sophisticated.
        :return: a unicode string object.
        """
    • Esto no funciona para mí. y devuelve Null
    • ¿Usted está consiguiendo nada para page_content? Si sí, entonces ver si ayuda mediante el uso de una codificación diferente de otros (utf-8)
    • Mejor biblioteca que he encontrado para leer el pdf usando python es ‘tica’
  4. 22

    Después de intentar textract (que parecía tener demasiadas dependencias) y pypdf2 (que no se pudo extraer el texto de los pdf que he probado) y tika (que era demasiado lento) que terminó con pdftotext de xpdf (como ya se ha sugerido en otra respuesta) y acaba de llamar el binario de python directamente (puede ser necesario adaptar la ruta a pdftotext):

    import os, subprocess
    SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
    args = ["/usr/local/bin/pdftotext",
            '-enc',
            'UTF-8',
            "{}/my-pdf.pdf".format(SCRIPT_DIR),
            '-']
    res = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output = res.stdout.decode('utf-8')

    Hay pdftotext que hace básicamente lo mismo pero esto supone pdftotext en /usr/local/bin mientras que yo estoy usando esto en AWS lambda y quería usarlo desde el directorio actual.

    Btw: Para el uso de este en lambda que usted necesita para poner el binario y la dependencia a libstdc++.so en su función lambda. Yo personalmente necesarios para compilar xpdf. Como las instrucciones para este podría volar hasta esta respuesta me puso en mi blog personal.

    • Oh mi dios, ¡funciona!! Finalmente, una solución que extrae el texto en el orden correcto! Quiero un abrazo para esta respuesta! (O si no te gustan los abrazos, aquí casi un café/cerveza/…)
    • me alegro de que ayudó a! Upvoting da la misma sensación como abrazar, así que estoy bien!
    • simple … gr8 fuera de la caja de pensamiento!
  5. 10

    Puede que desee utilizar el tiempo demostró xPDF y derivados de herramientas para extraer el texto en lugar de como pyPDF2 parece haber varios temas con la extracción de texto todavía.

    La respuesta larga es que hay gran cantidad de variaciones de cómo un texto se codifica dentro de PDF y que pueden requerir para decodificado PDF de la cadena de sí mismo, entonces puede necesitar mapa con CMAP, entonces puede necesitar para analizar la distancia entre las palabras y las letras, etc.

    En caso de que el PDF está dañado (es decir, mostrar el texto correcto, pero cuando la copia se le da a la basura) y que realmente necesita para extraer el texto, entonces es posible que desee considerar la posibilidad de la conversión de PDF a la imagen (usando ImageMagik) y, a continuación, utilizar Tesseract para obtener el texto de la imagen mediante OCR.

    • -1 porque el OP está pidiendo para la lectura de archivos pdf en Python, y aunque no es un xpdf contenedor para python es mal mantenidos.
  6. 7

    El código de abajo, es una solución a la cuestión en Python 3. Antes de ejecutar el código, asegúrese de que ha instalado el PyPDF2 de la biblioteca en su entorno. Si no está instalado, abra el símbolo del sistema y ejecute el siguiente comando:

    pip3 install PyPDF2

    Solución De Código:

    import PyPDF2
    pdfFileObject = open('sample.pdf', 'rb')
    pdfReader = PyPDF2.PdfFileReader(pdfFileObject)
    count = pdfReader.numPages
    for i in range(count):
        page = pdfReader.getPage(i)
        print(page.extractText())
    • Cómo iba a u guardar todo el contenido en un archivo de texto y lo utilizan para su posterior análisis
    • Esto no resuelve el problema mencionado en la pregunta.
  7. 5

    He intentado muchas Python PDF convertidores, Tika es mejor.

    Tika-Python Python es un enlace a la Apache Tika™ RESTO de servicios
    permitiendo a Tika a ser llamado de forma nativa en la comunidad de Python.

    from tika import parser
    
    raw = parser.from_file("///Users/Documents/Textos/Texto1.pdf")
    raw = str(raw)
    
    safe_text = raw.encode('utf-8', errors='ignore')
    
    safe_text = str(safe_text).replace("\n", "").replace("\", "")
    print('--- safe text ---' )
    print( safe_text )
    • un agradecimiento especial para .encode('utf-8', errors='ignore')
    • Gracias tika está trabajando muy bien que cualquier otra biblioteca.
  8. 4

    Pdf de varias páginas puede ser extraído como texto en un solo tramo, en lugar de dar a cada número de la página como argumento utilizando a continuación el código

    import PyPDF2
    import collections
    pdf_file = open('samples.pdf', 'rb')
    read_pdf = PyPDF2.PdfFileReader(pdf_file)
    number_of_pages = read_pdf.getNumPages()
    c = collections.Counter(range(number_of_pages))
    for i in c:
       page = read_pdf.getPage(i)
       page_content = page.extractText()
       print page_content.encode('utf-8')
    • El único problema aquí el contenido de la nueva página sobrescribe el último
  9. 4

    pdftotext es la mejor y más simple!
    pdftotext también se reserva la estructura así.

    Traté de PyPDF2, PDFMiner y algunos otros pero ninguno de ellos dio un resultado satisfactorio.

    • Mensaje de la siguiente manera al instalar pdf2text,Collecting PDFMiner (from pdf2text), así que no entiendo esta respuesta ahora.
    • pdf2text y pdftotext son diferentes. Usted puede utilizar el enlace de la respuesta.
    • OK. Que es un poco confuso.
  10. 3

    PyPDF2, en algunos casos, ignora los espacios en blanco y hace que el texto de resultado un desastre, pero yo uso PyMuPDF y estoy muy satisfecho
    usted puede utilizar esta enlace para obtener más información

    • pymupdf es la mejor solución que he observado, no requiere mayor bibliotecas de C++ como pdftotext o java como tika
  11. 3

    Aquí es el código más sencillo para la extracción de texto

    código:

    # importing required modules
    import PyPDF2
    
    # creating a pdf file object
    pdfFileObj = open('filename.pdf', 'rb')
    
    # creating a pdf reader object
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj)
    
    # printing number of pages in pdf file
    print(pdfReader.numPages)
    
    # creating a page object
    pageObj = pdfReader.getPage(5)
    
    # extracting text from page
    print(pageObj.extractText())
    
    # closing the pdf file object
    pdfFileObj.close()
    • ‘PyPDF2’ No leer todo el texto del archivo pdf.
    • Fue ‘tica’
  12. 3

    He encontrado una solución aquí PDFLayoutTextStripper

    Es bueno porque puede mantener el diseño del PDF original.

    Está escrito en Java, pero he añadido una Puerta de enlace para soporte de Python.

    Código de ejemplo:

    from py4j.java_gateway import JavaGateway
    
    gw = JavaGateway()
    result = gw.entry_point.strip('samples/bus.pdf')
    
    # result is a dict of {
    #   'success': 'true' or 'false',
    #   'payload': pdf file content if 'success' is 'true'
    #   'error': error message if 'success' is 'false'
    # }
    
    print result['payload']

    Muestra de la salida de PDFLayoutTextStripper:
    Cómo extraer texto de un archivo PDF?

    Puedes ver más detalles aquí Stripper con Python

  13. 0

    Estoy agregando código para lograr esto:
    Se está trabajando muy bien para mí:

    # This works in python 3
    # required python packages
    # tabula-py==1.0.0
    # PyPDF2==1.26.0
    # Pillow==4.0.0
    # pdfminer.six==20170720
    import os
    import shutil
    import warnings
    from io import StringIO
    import requests
    import tabula
    from PIL import Image
    from PyPDF2 import PdfFileWriter, PdfFileReader
    from pdfminer.converter import TextConverter
    from pdfminer.layout import LAParams
    from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
    from pdfminer.pdfpage import PDFPage
    warnings.filterwarnings("ignore")
    def download_file(url):
    local_filename = url.split('/')[-1]
    local_filename = local_filename.replace("%20", "_")
    r = requests.get(url, stream=True)
    print(r)
    with open(local_filename, 'wb') as f:
    shutil.copyfileobj(r.raw, f)
    return local_filename
    class PDFExtractor():
    def __init__(self, url):
    self.url = url
    # Downloading File in local
    def break_pdf(self, filename, start_page=-1, end_page=-1):
    pdf_reader = PdfFileReader(open(filename, "rb"))
    # Reading each pdf one by one
    total_pages = pdf_reader.numPages
    if start_page == -1:
    start_page = 0
    elif start_page < 1 or start_page > total_pages:
    return "Start Page Selection Is Wrong"
    else:
    start_page = start_page - 1
    if end_page == -1:
    end_page = total_pages
    elif end_page < 1 or end_page > total_pages - 1:
    return "End Page Selection Is Wrong"
    else:
    end_page = end_page
    for i in range(start_page, end_page):
    output = PdfFileWriter()
    output.addPage(pdf_reader.getPage(i))
    with open(str(i + 1) + "_" + filename, "wb") as outputStream:
    output.write(outputStream)
    def extract_text_algo_1(self, file):
    pdf_reader = PdfFileReader(open(file, 'rb'))
    # creating a page object
    pageObj = pdf_reader.getPage(0)
    # extracting extract_text from page
    text = pageObj.extractText()
    text = text.replace("\n", "").replace("\t", "")
    return text
    def extract_text_algo_2(self, file):
    pdfResourceManager = PDFResourceManager()
    retstr = StringIO()
    la_params = LAParams()
    device = TextConverter(pdfResourceManager, retstr, codec='utf-8', laparams=la_params)
    fp = open(file, 'rb')
    interpreter = PDFPageInterpreter(pdfResourceManager, device)
    password = ""
    max_pages = 0
    caching = True
    page_num = set()
    for page in PDFPage.get_pages(fp, page_num, maxpages=max_pages, password=password, caching=caching,
    check_extractable=True):
    interpreter.process_page(page)
    text = retstr.getvalue()
    text = text.replace("\t", "").replace("\n", "")
    fp.close()
    device.close()
    retstr.close()
    return text
    def extract_text(self, file):
    text1 = self.extract_text_algo_1(file)
    text2 = self.extract_text_algo_2(file)
    if len(text2) > len(str(text1)):
    return text2
    else:
    return text1
    def extarct_table(self, file):
    # Read pdf into DataFrame
    try:
    df = tabula.read_pdf(file, output_format="csv")
    except:
    print("Error Reading Table")
    return
    print("\nPrinting Table Content: \n", df)
    print("\nDone Printing Table Content\n")
    def tiff_header_for_CCITT(self, width, height, img_size, CCITT_group=4):
    tiff_header_struct = '<' + '2s' + 'h' + 'l' + 'h' + 'hhll' * 8 + 'h'
    return struct.pack(tiff_header_struct,
    b'II',  # Byte order indication: Little indian
    42,  # Version number (always 42)
    8,  # Offset to first IFD
    8,  # Number of tags in IFD
    256, 4, 1, width,  # ImageWidth, LONG, 1, width
    257, 4, 1, height,  # ImageLength, LONG, 1, lenght
    258, 3, 1, 1,  # BitsPerSample, SHORT, 1, 1
    259, 3, 1, CCITT_group,  # Compression, SHORT, 1, 4 = CCITT Group 4 fax encoding
    262, 3, 1, 0,  # Threshholding, SHORT, 1, 0 = WhiteIsZero
    273, 4, 1, struct.calcsize(tiff_header_struct),  # StripOffsets, LONG, 1, len of header
    278, 4, 1, height,  # RowsPerStrip, LONG, 1, lenght
    279, 4, 1, img_size,  # StripByteCounts, LONG, 1, size of extract_image
    0  # last IFD
    )
    def extract_image(self, filename):
    number = 1
    pdf_reader = PdfFileReader(open(filename, 'rb'))
    for i in range(0, pdf_reader.numPages):
    page = pdf_reader.getPage(i)
    try:
    xObject = page['/Resources']['/XObject'].getObject()
    except:
    print("No XObject Found")
    return
    for obj in xObject:
    try:
    if xObject[obj]['/Subtype'] == '/Image':
    size = (xObject[obj]['/Width'], xObject[obj]['/Height'])
    data = xObject[obj]._data
    if xObject[obj]['/ColorSpace'] == '/DeviceRGB':
    mode = "RGB"
    else:
    mode = "P"
    image_name = filename.split(".")[0] + str(number)
    print(xObject[obj]['/Filter'])
    if xObject[obj]['/Filter'] == '/FlateDecode':
    data = xObject[obj].getData()
    img = Image.frombytes(mode, size, data)
    img.save(image_name + "_Flate.png")
    # save_to_s3(imagename + "_Flate.png")
    print("Image_Saved")
    number += 1
    elif xObject[obj]['/Filter'] == '/DCTDecode':
    img = open(image_name + "_DCT.jpg", "wb")
    img.write(data)
    # save_to_s3(imagename + "_DCT.jpg")
    img.close()
    number += 1
    elif xObject[obj]['/Filter'] == '/JPXDecode':
    img = open(image_name + "_JPX.jp2", "wb")
    img.write(data)
    # save_to_s3(imagename + "_JPX.jp2")
    img.close()
    number += 1
    elif xObject[obj]['/Filter'] == '/CCITTFaxDecode':
    if xObject[obj]['/DecodeParms']['/K'] == -1:
    CCITT_group = 4
    else:
    CCITT_group = 3
    width = xObject[obj]['/Width']
    height = xObject[obj]['/Height']
    data = xObject[obj]._data  # sorry, getData() does not work for CCITTFaxDecode
    img_size = len(data)
    tiff_header = self.tiff_header_for_CCITT(width, height, img_size, CCITT_group)
    img_name = image_name + '_CCITT.tiff'
    with open(img_name, 'wb') as img_file:
    img_file.write(tiff_header + data)
    # save_to_s3(img_name)
    number += 1
    except:
    continue
    return number
    def read_pages(self, start_page=-1, end_page=-1):
    # Downloading file locally
    downloaded_file = download_file(self.url)
    print(downloaded_file)
    # breaking PDF into number of pages in diff pdf files
    self.break_pdf(downloaded_file, start_page, end_page)
    # creating a pdf reader object
    pdf_reader = PdfFileReader(open(downloaded_file, 'rb'))
    # Reading each pdf one by one
    total_pages = pdf_reader.numPages
    if start_page == -1:
    start_page = 0
    elif start_page < 1 or start_page > total_pages:
    return "Start Page Selection Is Wrong"
    else:
    start_page = start_page - 1
    if end_page == -1:
    end_page = total_pages
    elif end_page < 1 or end_page > total_pages - 1:
    return "End Page Selection Is Wrong"
    else:
    end_page = end_page
    for i in range(start_page, end_page):
    # creating a page based filename
    file = str(i + 1) + "_" + downloaded_file
    print("\nStarting to Read Page: ", i + 1, "\n -----------===-------------")
    file_text = self.extract_text(file)
    print(file_text)
    self.extract_image(file)
    self.extarct_table(file)
    os.remove(file)
    print("Stopped Reading Page: ", i + 1, "\n -----------===-------------")
    os.remove(downloaded_file)
    # I have tested on these 3 pdf files
    # url = "http://s3.amazonaws.com/NLP_Project/Original_Documents/Healthcare-January-2017.pdf"
    url = "http://s3.amazonaws.com/NLP_Project/Original_Documents/Sample_Test.pdf"
    # url = "http://s3.amazonaws.com/NLP_Project/Original_Documents/Sazerac_FS_2017_06_30%20Annual.pdf"
    # creating the instance of class
    pdf_extractor = PDFExtractor(url)
    # Getting desired data out
    pdf_extractor.read_pages(15, 23)
  14. 0

    Si lo intentas en Anaconda en Windows, PyPDF2 no podría manejar algunos de los PDFs con los no-estándar de la estructura o de los caracteres unicode. Yo recomiendo usar el siguiente código si usted necesita para abrir y leer un montón de archivos pdf – el texto de archivos pdf en la carpeta con la ruta relativa .//pdfs// será almacenado en la lista de pdf_text_list.

    from tika import parser
    import glob
    def read_pdf(filename):
    text = parser.from_file(filename)
    return(text)
    all_files = glob.glob(".\\pdfs\\*.pdf")
    pdf_text_list=[]
    for i,file in enumerate(all_files):
    text=read_pdf(file)
    pdf_text_list.append(text['content'])
    print(pdf_text_list)
  15. -1

    Puede descargar tika-app-xxx.jar(la última) de Aquí.

    A continuación, poner esto .el archivo jar en la misma carpeta de tu archivo de secuencia de comandos de python.

    a continuación, inserte el código siguiente en la secuencia de comandos:

    import os
    import os.path
    tika_dir=os.path.join(os.path.dirname(__file__),'<tika-app-xxx>.jar')
    def extract_pdf(source_pdf:str,target_txt:str):
    os.system('java -jar '+tika_dir+' -t {} > {}'.format(source_pdf,target_txt))

    La ventaja de este método:

    menos dependencia. Único .el archivo jar es más fácil de manejar que un paquete de python.

    multi-formato de apoyo. La posición source_pdf puede ser el directorio de cualquier tipo de documento. (.doc, .html, .odt, etc.)

    hasta la fecha. tika-app.jar siempre la versión anterior a la versión relevante de tika paquete de python.

    estable. Es mucho más estable y bien mantenido (Alimentado por Apache) que PyPDF.

    desventaja:

    Un jre-headless es necesario.

    • no totalmente python solución. Si usted lo recomienda, usted debe construir un paquete de python, y que haya gente importar que. No se recomienda el uso de línea de comandos de ejecución de java de código en python.
    • si escribe un código que se va a cargar en pypi, tengo que admitir que no es una buena idea. Sin embargo, si se trata de una secuencia de comandos de python con el proceso de uso temporal, no está mal, ¿no?
    • Bien, la cuestión no es titulado con «python» – así que creo que indica «aquí está cómo hacerlo en Java» es más aceptable que este. Técnicamente, usted puede hacer lo que quiera en Python. Es por eso que es impresionante y terrible. Uso temporal es un mal hábito.
  16. -1

    PyPDF2 hace el trabajo, pero los resultados pueden variar. Estoy viendo bastante incoherente resultados de su resultado de la extracción.

    reader=PyPDF2.pdf.PdfFileReader(self._path)
    eachPageText=[]
    for i in range(0,reader.getNumPages()):
    pageText=reader.getPage(i).extractText()
    print(pageText)
    eachPageText.append(pageText)

Dejar respuesta

Please enter your comment!
Please enter your name here