Curso
Documentos PDF
PDF es el formato de documento portátil que puede incluir texto, imágenes, gráficos, etc., a diferencia de los archivos de texto plano. Es un archivo con la extensión ".pdf" e inventado por Adobe. Este tipo de archivo es independiente de la plataforma: no depende de software, hardware ni del sistema operativo.
Pasos para instalar el paquete:
-
Necesitas instalar un paquete llamado "pypdf2" que permite trabajar con archivos con extensión ".pdf".

-
Verás el paquete 'pypdf2' instalado como se muestra a continuación.

Leer documentos PDF y extraer datos
Solo extraerás el texto del archivo PDF, ya que PyPDF2 tiene limitaciones a la hora de obtener contenido multimedia enriquecido. Los logotipos, imágenes, etc. no se pueden extraer — descarga el siguiente archivo PDF para seguir este tutorial.
Descargar archivo PDF

La sentencia 'import' del código anterior carga el módulo PyPDF2. Debes usar 'open('pdfFileName', 'openingMode')' donde 'pdfFilename' es 'test.pdf' y 'openingMode' es 'rb', es decir, lectura en formato binario.

PyPDF2 proporciona el método 'PdfFileReader', que recibe el objeto recién creado 'pdfFileObject'. Ahora puedes acceder al atributo 'numPages' de 'pdfFileObject', que devuelve el número total de páginas.
La salida anterior es 1, ya que el archivo PDF tiene una sola página.
Puedes usar el método 'getPage(0)' sobre 'pdfReaderObject' para obtener la primera página. El resultado se guarda en 'firstPageObject', desde donde puedes imprimir todo el texto de esa página usando 'extractText()'.
El código anterior devuelve todo el texto del archivo PDF. Sin embargo, la imagen no aparece en la terminal, algo que no es posible obtener con PyPDF2.
Combinar varios archivos PDF en un único PDF
Vas a combinar dos archivos PDF distintos en un único documento. El PDF antiguo es el que usaste antes, y el PDF nuevo puedes descargarlo del siguiente enlace:
Nuevo archivo PDF.

Importarás el módulo PdfFileMerger del paquete PyPDF2, que sirve para combinar archivos PDF. Se especifica la 'path' con la ruta a la carpeta donde están los archivos. Además, los PDFs a combinar se incluyen en la lista 'pdf_files'.
Se crea el objeto 'merger' con 'PdfFileMerger'. Se recorre la lista y se van añadiendo los archivos mediante el método 'append', pasando la ruta y el nombre de archivo. Por último, se obtiene el resultado final con 'merger.write()', que guarda el contenido combinado con un nuevo nombre de PDF.
La imagen anterior muestra 'merged.pdf', que contiene el contenido combinado de 'test.pdf' y 'test-1.pdf'.
Documentos de Word
Los documentos de Word llevan la extensión ".docx" al final del nombre de archivo. No contienen solo texto como los archivos de texto plano: son documentos de texto enriquecido. Un documento de texto enriquecido incluye diferentes estructuras y formatos: tamaño, alineación, color, imágenes, tipo de letra, etc.
Necesitas una aplicación para trabajar con documentos de Word. La aplicación más popular en Windows y macOS es Microsoft Word, pero requiere una suscripción de pago. Sin embargo, existe una alternativa gratuita como "LibreOffice", que en Linux suele venir preinstalada. También puedes descargar estas aplicaciones para Windows y macOS. En este tutorial usaremos Microsoft Word en Windows.
Pasos para instalar el paquete
-
Necesitas instalar un paquete llamado "python-docx" para trabajar con documentos de Word con extensión ".docx".

-
Verás el paquete 'python-docx' instalado como se muestra a continuación.

Puedes programar en el intérprete interactivo de Python, pero es preferible usar un editor de texto. En este tutorial usaremos Sublime Text para la parte de código.
Escribir un documento de Word

Arriba puedes ver que se importa 'document' del paquete 'docx' en la primera línea. La segunda línea crea un documento de Word nuevo mediante el objeto Document. El archivo se guarda como 'first.docx' usando 'document.save()'.
Añadir un título

El código anterior usa 'Document()' para abrir un archivo nuevo y 'document.save('addHeader.docx')' para crear el archivo .docx editado. Puedes añadir un título con el método 'add_heading('text', level=número)', que recibe el texto del título y el nivel de encabezado, de 0 a 4.

El código anterior genera un nuevo archivo 'addedHeader.docx'. El nivel 0 crea un titular con una línea horizontal debajo del texto, mientras que el nivel 1 es el encabezado principal. Los demás niveles son subtítulos, con tamaños de fuente decrecientes.
Añadir un párrafo

El código anterior usa 'Document()' para abrir un documento nuevo y 'document.save('addParagraph.docx')' para crear el archivo .docx editado. Puedes añadir un párrafo con el método 'add_paragraph('text', style='estilo_opcional')', que recibe el texto y, opcionalmente, el 'style'. Puedes usar, por ejemplo, 'List Number' y 'List Bullet'.

El resultado es un nuevo archivo 'addedParagraph.docx' que contiene un párrafo sencillo en la primera línea. Después hay un título y, debajo, una lista ordenada con los ítems 1 y 2. Más abajo hay otro título con una lista desordenada con dos elementos con viñetas.
Añadir una imagen

El código anterior usa 'Document()' para crear un archivo nuevo y 'document.save('addPicture.docx')' para guardar el archivo .docx editado. Puedes añadir una imagen con 'add_picture()', cuyo primer parámetro es la ruta de la imagen, por ejemplo 'cat-1.jpeg'. Los parámetros de ancho y alto son opcionales; por defecto son 72 dp, pero aquí usamos 'Inches' para nuestro caso.

El resultado es un nuevo archivo 'addedPicture.docx' que contiene una imagen de un gato con 1,25 pulgadas de ancho y alto.
Leer un documento de Word
Ahora vas a leer un documento de Word de ejemplo desde Python. Puedes descargarlo aquí:
Descargar ejemplo.

La primera línea del código importa 'Document' del módulo 'docx', que se usa para cargar el archivo y crear un objeto. 'obtainText' es una función que recibe el archivo 'fullText.docx'. Se itera por cada párrafo a través de 'document.paragraphs' y se inserta en una lista vacía con el método 'append'. Finalmente, la función devuelve una lista de párrafos separados por saltos de línea.

La salida anterior devuelve texto plano, sin estilos, colores, etc.; no es un documento de texto enriquecido.
Enhorabuena
Enhorabuena, has terminado este tutorial.
Si quieres aprender más sobre la importación de datos en Python, prueba el curso Introduction to Importing Data in Python de DataCamp.
Échale un vistazo también a nuestro tutorial sobre estructuras de datos en Python.
Estos recursos también pueden ayudarte a ampliar conocimientos sobre temas específicos.
Referencias:
Automate Boring Stuff With Python: Working with Word Documents