Los PDF son una forma común de compartir texto. PDF significa Portable Document Format y utiliza la extensión de archivo .pdf. Fue creado a principios de la década de 1990 por Adobe Systems.
La lectura de documentos PDF mediante python puede ayudarte a automatizar una gran variedad de tareas.
En este tutorial aprenderemos a extraer texto de un archivo PDF en Python.
Comencemos.
- Lectura y extracción de texto de un archivo PDF en Python
- Usando PyPDF2 para extraer texto de un PDF
- 1. Instala el paquete
- 2. Importar PyPDF2
- 3. Abrir el PDF en modo de lectura binaria
- 4. Usar PyPDF2.PdfDF2. Usar PyPDF2.PdfFileReader() para leer el texto
- Código completo para leer el texto del PDF usando PyPDF2
- Uso de PDFplumber para extraer texto
- 1. Instalar el paquete
- 2. Importar pdfplumber
- 3. Usar PDFplumber para leer pdfs
Lectura y extracción de texto de un archivo PDF en Python
Para el propósito de este tutorial vamos a crear un PDF de ejemplo con 2 páginas. Puedes hacerlo usando cualquier procesador de textos como Microsoft Word o Google Docs y guardar el archivo como PDF.
Texto en la página 1:
Hello World. This is a sample PDF with 2 pages. This is the first page.
Texto en la página 2:
This is the text on Page 2.
Usando PyPDF2 para extraer texto de un PDF
Puedes usar PyPDF2 para extraer texto de un PDF. Veamos cómo funciona.
1. Instala el paquete
Para instalar PyPDF2 en tu sistema introduce el siguiente comando en tu terminal. Puedes leer más sobre el gestor de paquetes pip.
pip install pypdf2
2. Importar PyPDF2
Abre un nuevo cuaderno de python y comienza con la importación de PyPDF2.
import PyPDF2
3. Abrir el PDF en modo de lectura binaria
Empezar con la apertura del PDF en modo de lectura binaria utilizando la siguiente línea de código:
pdf = open('sample_pdf.pdf', 'rb')
Esto creará un objeto PdfFileReader para nuestro PDF y lo almacenará en la variable ‘pdf’.
4. Usar PyPDF2.PdfDF2. Usar PyPDF2.PdfFileReader() para leer el texto
Ahora puedes usar el método PdfFileReader() de PyPDF2 para leer el archivo.
pdfReader = PyPDF2.PdfFileReader(pdf)
Para obtener el texto de la primera página del PDF, utiliza las siguientes líneas de código:
page_one = pdfReader.getPage(0)print(page_one.extractText())
Obtenemos la salida como:
Hello World. !This is a sample PDF with 2 pages. !This is the first page. !Process finished with exit code 0
Aquí utilizamos el método getPage para almacenar la página como un objeto. Luego usamos el método extractText() para obtener el texto del objeto página.
El texto que obtenemos es de tipo String.
De igual forma para obtener la segunda página del PDF usamos:
page_one = pdfReader.getPage(1)print(page_one.extractText())
Obtenemos la salida como :
This is the text on Page 2.
Código completo para leer el texto del PDF usando PyPDF2
El código completo de esta sección se da a continuación:
import PyPDF2pdf = open('sample_pdf.pdf', 'rb')pdfReader = PyPDF2.PdfFileReader(pdf)page_one = pdfReader.getPage(0)print(page_one.extractText())
Si te das cuenta, el formato de la primera página está un poco apagado en la salida anterior. Esto se debe a que PyPDF2 no es muy eficiente en la lectura de PDFs.
Por suerte, Python tiene una mejor alternativa a PyPDF2. Vamos a verlo a continuación.
Uso de PDFplumber para extraer texto
PDFplumber es otra herramienta que puede extraer texto de un PDF. Es más potente en comparación con PyPDF2.
1. Instalar el paquete
Vamos a empezar con la instalación de PDFplumber.
pip install pdfplumber
2. Importar pdfplumber
Comienza con la importación de PDFplumber utilizando la siguiente línea de código :
import pdfplumber
3. Usar PDFplumber para leer pdfs
Podemos empezar a leer PDFs usando PDFplumber con la siguiente pieza de código:
with pdfplumber.open("sample_pdf.pdf") as pdf: first_page = pdf.pages print(first_page.extract_text())
Esto obtendrá el texto de la primera página de nuestro PDF. La salida viene como:
Hello World. This is a sample PDF with 2 pages. This is the first page. Process finished with exit code 0
Puedes comparar esto con la salida de PyPDF2 y ver cómo PDFplumber es mejor cuando se trata de formato.
PDFplumber también proporciona opciones para obtener otra información del PDF.
Por ejemplo, puede utilizar .page_number para obtener el número de página.
print(first_page.page_number)
Salida :