GeneralInteligencia ArtificialProgramaciónServidoresTecnologíaWeb

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:

  1. 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.
  2. 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.
  3. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *