Cómo extraer texto de PDFs con Python ¡Fácil, rápido y gratis!
Hola, hola Omesitos, bienvenidos a un nuevo tutorial, en el cual veremos cómo extraer texto de PDFs. Este tutorial es parte de una nueva sección del canal en el que vamos a hacer uso de herramientas o packages de Python para applicarlos en nuestro día a día, así que ¡vamos a por ello!.
Si en el día a día te has encontrado con la necesidad de extraer texto de un PDF rápidamente, pero has tenido que hacerlo manualmente, perdiendo mucho tiempo, o te has topado con herramientas costosas que no son prácticas, ¡este tutorial es para ti!. Hoy te enseñaré extraer ese tan deseado texto, de una forma rápida, fácil y completamente gratuita. ¡Estoy segura de que te va a encantar!
¿Qué necesito para extraer texto de PDFs con Python?
Para mantenerlo sencillo vamos a usar Google Colab, es decir, lo haremos online. Allí podremos programar en Python. Entonces necesitaremos:
- Una cuenta en Google Drive.
- Tener instalado en esta cuenta Google Colab. (Esto lo vimos en este tutorial: ¿Qué es Google Colab y cómo usarlo? Python en la nube fácil y rápido)
- Vamos a usar el package: PyPDF2.
- Los PDFs que vayamos a pasar a texto.
¡Vamos con la programación!
1. Instalar de PyPDF2
Lo primero que tendremos que hacer es instalar PyPDF2, para ello vamos a la primera celda y digitamos:
!pip install PyPDF2
Esperamos a que se realice la instalación.
2. Conexión entre Google Colab y Drive
Para poder usar los archivos PDF que subimos a Drive, necesitaremos darle permisos a Google Colaboratory para que nos permita extraer esos archivos de Drive. Para ello tendremos que ejecutar la siguiente celda:
from google.colab import drive drive.mount('/content/drive')
¿Cómo comprobamos que tengamos acceso a los archivos de Drive?. Vamos a Archivos, y veremos que ahora tenemos la carpeta “drive”, la desplegamos y tenemos “My Drive”. Volvemos a desplegar y podremos buscar la carpeta en donde están nuestros documentos.

3. Extraer texto de PDFs con Python
Extraer texto de un archivo PDF puede parecer complicado, pero gracias a Python y a la librería PyPDF2, este proceso es rápido y sencillo. A continuación veremos como hacerlo:
from PyPDF2 import PdfReader path = "/content/drive/MyDrive/pdf_de_entrada.pdf" reader = PdfReader(path) texto_extraido = "" for pagina in reader.pages: texto_extraido += pagina.extract_text() print(texto_extraido)
En primer lugar importamos PdfReader
que proviene de la librería PyPDF2. Es la herramienta que utilizaremos para leer archivos PDF y extraer el contenido de sus páginas.
En la línea 3, definimos la ruta donde está ubicado el archivo PDF, del cual vayamos a extraer el texto. Mientas que en la línea 4 inicializamos el lector de PDF usando PdfReader
. Esto crea un objeto que contiene todas las páginas y nos permitirá extraer el texto de cada una.
En la línea 6, inicializamos una variable vacía llamada texto_extraido
. Esta variable servirá para acumular todo el texto extraído de las páginas del PDF.
En las líneas 8 y 9, usamos un bucle for para recorrer cada página del PDF:
reader.pages
contiene todas las páginas del archivo PDF.- En cada iteración, la variable
pagina
representa una página del PDF. - Utilizamos el método
pagina.extract_text()
para extraer el texto de esa página. - El texto extraído se concatena a la variable
texto_extraido
con+=
.
Para finalizar este bloque de código tenemos la línea 11, en la cual imprimimos el texto acumulado en texto_extraido
. Este paso se realiza después de que el bucle haya procesado todas las páginas.
Si ejecutamos la celda, vamos a obtener un resultado como el siguiente:

Entonces a la izquierda tenemos el PDF de entrada, y a la derecha el texto extraído de ese PDF, que se muestra en consola.
De PDF a Word: Guarda el texto extraído en un archivo editable
Extraer texto de un PDF no es el único paso que podemos dar. Con Python, también podemos guardar ese texto en un archivo Word de forma sencilla. Esto resulta muy útil si deseas editar o compartir el contenido en un formato más accesible. A continuación te enseño cómo hacerlo:
En primer lugar tendremos que instalar el package python-docx, esto lo haremos con pip:
!pip install python-docx
Una vez instalado, pasamos con el programa.
from docx import Document # Crear un nuevo archivo Word doc = Document() # Agregar el texto extraído al documento doc.add_paragraph(texto_extraido) # Guardar el documento en un archivo Word nuevo_path = path.replace(".pdf", "_texto_extraído.docx") doc.save(nuevo_path)
En la línea 1, importamos la función Document
de la librería python-docx. Esta función nos permite trabajar con archivos Word: crearlos, editarlos y guardarlos.
En la línea 4, inicializamos un nuevo documento Word con la función Document
. Este objeto representará el archivo Word donde guardaremos el texto extraído del PDF.
En la línea 7, usamos el método add_paragraph()
del objeto doc
para añadir el texto extraído del PDF como un nuevo párrafo en el documento Word.
En las líneas 10 y 11, creamos un nuevo nombre para el archivo Word reemplazando la extensión .pdf
por _texto_extraído.docx
. Luego usamos el método save()
para guardar el documento Word en esa ubicación. Por ejemplo, si el archivo PDF se llamaba documento.pdf
, el archivo Word resultante se llamará documento_texto_extraído.docx
.
Si ejecutamos, obtendremos el archivo de Word editable, con el texto del PDF:

Limitaciones al Usar PyPDF2 para Extraer Texto de PDFs
Aunque PyPDF2 es una herramienta muy útil para trabajar con archivos PDF, es importante entender que tiene ciertas limitaciones que pueden afectar la calidad y utilidad del texto extraído. A continuación, te presento algunos de los desafíos más comunes:
1. PDFs Basados en Imágenes
PyPDF2 no puede extraer texto de PDFs que contienen imágenes en lugar de texto digital. Esto ocurre con archivos generados a partir de documentos escaneados, ya que el texto en realidad es una imagen, no un dato estructurado. Para este tipo de archivos, se requiere una herramienta de OCR (Reconocimiento Óptico de Caracteres) como Tesseract, que puede convertir imágenes en texto editable.
2. Diseño Complejo de PDFs
Los PDFs con estructuras no lineales, como columnas, tablas, gráficos o diseños complejos, pueden generar texto desorganizado.
3. PDFs Protegidos o Encriptados
Si el archivo PDF está protegido con contraseña o tiene restricciones para copiar contenido, PyPDF2 no podrá extraer el texto.
4. Velocidad y Eficiencia
El procesamiento de documentos muy extensos con PyPDF2 puede ser lento, ya que la librería analiza cada página de forma individual. Esto se vuelve notable en PDFs con cientos o miles de páginas. Por ello, si trabajas con documentos extensos frecuentemente, considera dividir el archivo en partes más pequeñas o explorar librerías más optimizadas.
5. Pérdida del Formato Original
PyPDF2 solo extrae el texto del PDF y no replica el diseño o formato del archivo original. Esto puede incluir:
- Pérdida de saltos de línea y separación de párrafos.
- Desorganización en tablas y gráficos.
- Ausencia de estilos como negritas, cursivas, tamaños de fuente y otros elementos visuales.
Y bien, hemos llegado al final de este tutorial. ¡Espero que te haya gustado y lo hayas encontrado útil!. Nos vemos en un siguiente post.