es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extracción de datos de PDF a archivo de texto.

Tengo varios archivos PDF en una carpeta. Fusioné todos los PDF y ejecuté este código:

doc = fitz.open(merged.pdf)
out = open('raw.txt', "wb")
for page in doc:
    text = page.get_text().encode("utf8")
    out.write(text)
    out.write(bytes((12,)))
out.close()

Para omitir la fusión de PDF, se llegó a este código:

import sys, fitz
from glob import glob
import os

x = "/ruta"

for pdf in glob(x + os.sep + '*.pdf'):
    doc = fitz.open(pdf)
    out = open('raw.txt', "wb")
    for page in doc:
        text = page.get_text().encode("utf8")
        out.write(text)
        out.write(bytes((12,)))
    out.close()

Sin embargo, solo se capturó un PDF. Me gustaría tener la misma salida que en el primer código mencionado.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para tener el mismo resultado que el primer código mencionado, es necesario abrir el archivo de salida ‘raw.txt’ fuera del bucle for, para que no se sobrescriba por cada archivo PDF. Aquí está el código actualizado:

    import sys, fitz
    from glob import glob
    import os
    
    x = "/ruta"
    out = open('raw.txt', "wb")  # abrir archivo de salida
    
    for pdf in glob(x + os.sep + '*.pdf'):
        doc = fitz.open(pdf)  # abrir PDF
        for page in doc:
            text = page.get_text().encode("utf8")
            out.write(text)
            out.write(bytes((12,)))
        doc.close()  # cerrar PDF
    out.close()  # cerrar archivo de salida
    

    Este código extraerá el texto de todos los PDF en la carpeta y lo guardará en el archivo ‘raw.txt’, al igual que el primer código mencionado.

Comments are closed.