Leer un archivo PDF, convertirlo a texto y traducir del inglés al español con Python.

Primero, necesitamos instalar las librerías. Puedes hacer esto utilizando pip en la terminal con los siguientes comandos:
pip install pdfplumber
pip install translate
Luego el código es muy sucinto. Cada instrucción cuenta con una descripción comentada de lo que realiza en el programa. Básicamente hay que tener el archivo PDF en el mismo directorio donde se corre este script de Python, y allí mismo se escribe un nuevo archivo con la traducción.
Estas rutas son también modificables a gusto o conveniencia del usuario o sistema en particular.
import os
import pdfplumber
from translate import Translator
# Ruta del archivo PDF
pdf_file = "doc_to_translate.pdf"
# Crear objeto Translator
translator = Translator(to_lang="es")
# Crear nombre de archivo para el archivo de salida
output_file = os.path.splitext(pdf_file)[0] + "_traducido.txt"
# Crear archivo de salida para escritura
try:
with open(output_file, 'w', encoding='utf-8') as output:
# Abrir el archivo PDF
with pdfplumber.open(pdf_file) as pdf:
# Iterar por cada página del archivo PDF
for page in pdf.pages:
# Obtener el contenido de la página y dividirlo en fragmentos de 500 caracteres
text = page.extract_text()
if text:
fragments = [text[i:i+500] for i in range(0, len(text), 500)]
# Traducir cada fragmento y escribirlo en el archivo de salida
for fragment in fragments:
translation = translator.translate(fragment)
output.write(translation + "\n")
print("Traducción completada y guardada en el archivo:", output_file)
except Exception as e:
print("No se pudo realizar la traducción. Error:", e)
En este código, estamos utilizando la biblioteca pdfplumber
para leer el archivo PDF (bien podría ser PyPDF2
también). Además, estamos manejando los errores de lectura y escritura del archivo mediante la utilización de try
y except
blocks. Si hay algún error al leer o escribir el archivo, se mostrará un mensaje de error en lugar de simplemente fallar en silencio.

Translate es una herramienta de traducción simple pero poderosa escrita en python con soporte para múltiples proveedores de traducción. Ofrece integración con la API de traducción de Microsoft, la API de MyMemory traducida, LibreTranslate y las API gratuitas y profesionales de DeepL.
La principal razón para usar translate es hacer traducciones de una manera simple sin la necesidad de un mayor esfuerzo y puede usarse como una herramienta de traducción como línea de comando.

Translate posee una cli muy útil y sencilla de usar con la cual puede configurar los parámetros de traducción, definir el motor de traducción(MyMemory por defecto) o agregar una api-key para su uso. Escribes el siguiente comando y sigues las instrucciones.
translate-cli --generate-config-file

La biblioteca translate
utiliza una API gratuita llamada MyMemory para realizar las traducciones, y hay un límite en el número de traducciones que se pueden hacer de forma gratuita en un día determinado. Este límite puede variar dependiendo de la disponibilidad del servicio.
Para evitar este problema, puedes intentar lo siguiente:
- Esperar hasta que se restablezcan las traducciones gratuitas. La biblioteca
translate
suele mostrar una hora aproximada de cuándo estará disponible la siguiente traducción gratuita. - Utilizar un servicio de traducción de pago que no tenga límites en el número de traducciones que se pueden realizar. Hay varias opciones disponibles en línea, como Google Cloud Translation, Amazon Translate, etc. Deberás registrarte y seguir los pasos necesarios para obtener acceso a la API y las credenciales de autenticación.
- Utilizar otra biblioteca de traducción que utilice una API diferente y no tenga límites en el número de traducciones gratuitas. Hay varias opciones disponibles en línea, como TextBlob, DeepL, etc. Sin embargo, es posible que tengas que ajustar el código para utilizar la API de la biblioteca que elijas.