sábado, 18 de abril de 2026

DATOS. Archivos PDF

Bibloteca PyMuPDF (II)

Acceso a documentos pdf

Dentro de los diferentes usos que puede tener la biblioteca PyMuPDF, la primera y más básica es la de facilitar el acceso a los documentos; a los documento .pdf, pero no sólo.

La instrucción para acceder a un archivo .pdf es muy simple: doc = fitz.open("archivo.pdf"), habiendo importado PyMuPDF como import fitz.

En realidad, lo que hacemos con esta instrucción es acceder al objeto, tal y como muestra la visualización de esta instrucción cuando los solicitamos print(doc) -> Document('ar_pdf.pdf'), pero a partir de esa instucción, podemos acceder al recuento del número de páginas (print(doc.page_count)), a los metadatos del documento (print(doc.metadata)) o asignar una de sus páginas a una variable (pag_1 = doc[0]), su contenido a otra (texto_1 = pag_1.get_text()) y solicitar la visualización de éste por pantalla (print(texto_1)), cosa que lograremos sí realmente la página en cuestión contiene texto.

Si queremos acceder al contenido completo del archivo (al texto), podremos usar un bucle que recorrar todas sus páginas utilizando la misma función pag.get_text()...


#Acceso a todas las páginas y a todo su contenido
for pag in doc:
    texto = pag.get_text()
    print(texto)

... pero si queremos almacenar este texto en un archivo .txt, deberemos crearlo (función with open(), recorrer las páginas del documento (for pag in doc:), extrayendo su contenido (texto = pag.get_text()) y manipular el archivo .txt como ya sabemos y aquí desarrolla el punto 4 del script.



#0. Importar la biblioteca

import fitz  # PyMuPDF

# 1 Acceder al objeto documento
doc = fitz.open("ar_pdf.pdf")

# 2. Abrir (o crear) el archivo TXT ('w' para modo escritura, 'encoding' para uso de las tildes)
with open("contenido_extraido.txt", "w", encoding="utf-8") as archivo_txt:
    
# 3. Acceso a todas las páginas y a su contenido
    for pag in doc:
        texto = pag.get_text()
        
# 4. Escribir el texto de la página en el archivo TXT
        archivo_txt.write(f"--- Página {pag.number + 1} ---\n")
        archivo_txt.write(texto)
        archivo_txt.write("\n\n")  # Añade espacio entre páginas

# 5. Cerrar el documento PDF
doc.close()

print("El contenido ha sido archivado con éxito en 'contenido_extraido.txt'")


Este script captaura TODO el texto que reconoce en el documento (con independencia de que se encuentre dentro de tablas o no), por lo que no es útil para diferenciar entre distintos tipos de presentación del texto; pero podemos crear scipt que se centren obtener el texto según su presentación. Eso en la próxima entrada.

No hay comentarios:

Publicar un comentario

Comenta esta entrada