Cree una aplicación web de traductor de texto con Flask y Azure Cognitive Services

Vamos a crear un sitio web que traducirá texto a varios idiomas utilizando Inteligencia Artificial (IA). Usaremos el marco Flask para el front-end y Azure Cognitive Services (recopilación de servicios de IA) para el back-end. 

Para comenzar a escribir nuestra aplicación Flask con Python, debemos configurar nuestro entorno de desarrollo, lo que requerirá la instalación de un par de elementos.

Paso 1: Crear el directorio del proyecto

Podemos crear un directorio de proyecto desde una ventana de comando o terminal con uno de los siguientes comandos:

Para ventanas :

md FlaskAiApp
cd FlaskAiApp

Para mac o linux:

mkdir FlaskAiApp
cd FlaskAiApp

Nota: Mantenga abierta la ventana de comando o terminal para todo el módulo.

Paso 2: Crear el entorno virtual de Python

El entorno virtual de Python no es necesariamente tan complejo como parece. En lugar de crear una máquina virtual o un contenedor, cree un entorno virtual que sea una carpeta que contenga todas las bibliotecas que necesitamos para ejecutar nuestra aplicación, incluido el tiempo de ejecución de Python. Al utilizar un entorno virtual, hacemos que nuestras aplicaciones sean modulares, lo que nos permite mantenerlas separadas entre sí y evitar problemas de versiones. Cuando trabaje con Python, siempre debe usar entornos virtuales como práctica recomendada. Escriba los siguientes comandos en la ventana de comando o terminal. 

Para ventanas :

# Create the environment
python -m venv venv

# Activate the environment
.\\venv\\scripts\\activate

Para macOS y Linux:

# Create the environment
python3 -m venv venv

# Activate the environment
source ./venv/bin/activate

Paso 3: Instalación de Flask y otras bibliotecas

Con nuestro entorno virtual creado y activado, ya se puede instalar la biblioteca Flask que necesitamos para nuestro sitio web. Instalaremos Flask siguiendo una convención común para crear el archivo requirements.txt . El archivo requirements.txt no es especial en sí mismo; es un archivo de texto donde enumeramos las bibliotecas requeridas para nuestra aplicación. Pero los desarrolladores suelen utilizar la convención, lo que facilita la administración de aplicaciones de las que dependen varias bibliotecas.

Abra el directorio del proyecto en Visual Studio Code y cree el archivo requirements.txt y agregue el siguiente texto:

Regrese al símbolo del sistema o a la ventana del terminal y realice la instalación usando pip para ejecutar el siguiente comando:

pip install -r requirements.txt

Paso 4: Creando app.py

Por lo general, un archivo llamado app.py es un punto de entrada para las aplicaciones de Flask. Cree un nombre de archivo app.py en el directorio del proyecto. 

Después de crear el archivo app.py , agregue el siguiente código:

Python3

from flask import Flask, render_template
  
app = Flask(__name__)

La declaración de importación contiene referencias a Flask, que es el núcleo de cualquier programa Flask. Dentro de un tiempo, si queremos devolver nuestro HTML, podemos usar la plantilla de renderizado.

Usaremos una ruta: ‘/’. Esta ruta a menudo se denomina ruta predeterminada o ruta de índice, ya que se usa cuando el usuario no tiene nada más que el nombre de dominio o el servidor. Ahora agreguemos el método de ruta usando el siguiente código. 

Python3

@app.route('/', methods=['GET'])
def index():
    return render_template('index.html')

Usando @app.route, indicamos la ruta que queremos crear. La ruta es ‘/’, que es la ruta predeterminada. Indicamos que esto se va a utilizar para GET . Si se recibe una solicitud GET para /, Flask llamará automáticamente a la función. En el cuerpo del índice, indicamos que vamos a devolver la plantilla HTML denominada index.html al usuario.

Paso 5: Crea la plantilla HTML

Vamos a crear el Jinja (el motor de plantillas para Flask). Primero, cree las plantillas de nombre de carpeta y cree el archivo index.html dentro de la carpeta de plantillas . Agrega el siguiente código:

HTML

<!DOCTYPE html>
<html lang="en">
    
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
        integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
    <title>Text Translator</title>
</head>
    
<body>
    <div class="container">
        <h1>Test Translation service</h1>
        <div>Enter the text you wish to translate, choose the language, and click Translate button</div>
        <div>
            <form method="POST">
                <div class="form-group">
                    <textarea name="text" cols="20" rows="10" 
                              class="form-control"></textarea>
                </div>
                <div class="form-group">
                    <label for="language">Language:</label>
                    <select name="language" class="form-control">
                        <option value="en">English</option>
                        <option value="it">Italian</option>
                        <option value="ja">Japanese</option>
                        <option value="ru">Russian</option>
                        <option value="de">German</option>
                    </select>
                </div>
                <div>
                    <button type="submit" class="btn btn-success">Translate</button>
                </div>
            </form>
        </div>
    </div>
</body>
    
</html>

Paso 6: Prueba de la aplicación

Abra la terminal en Visual Studio Code y ejecute los siguientes comandos:

Para ventanas:  

set FLASK_ENV=development

Para mac OS/Linux:  

export FLASK_ENV=development

Ejecute la aplicación: 

flask run

Abra la aplicación en un navegador navegando a http://localhost:5000. Se mostrará el index.html.

Paso 7: Creación de back-end con Azure Cognitive Services

Azure ofrece servicios cognitivos, que incluyen servicios de visión artificial, voz a texto y servicios de traducción de texto a voz y de texto. Puede acceder a cualquiera de estos servicios a través de kits de desarrollo de software (SDK) o llamándolos de la misma manera que llamaría a cualquier otro punto final HTTP. Necesitará una cuenta de Azure para usar Cognitive Services. Necesitaremos una clave para llamar al Servicio de traducción (o cualquier otro Servicio cognitivo). Esta clave se utilizará siempre que tengamos acceso al servicio. La clave es la misma que la contraseña.

Ahora vamos a crear la clave del Servicio de traducción mediante Azure Portal y almacenarla en el archivo .env de nuestra aplicación.

1. Vaya a Azure Portal.

2. Seleccione Crear un recurso .

 3. En el cuadro de búsqueda, ingrese Traductor .

4. Seleccione Crear .

5. Complete el formulario dado:

  • Suscripción: Su suscripción
  • Grupo de recursos:
    • Seleccione Crear nuevo
    • Nombre: AIFlask
  • Región del grupo de recursos: seleccione una región cercana a usted
  • Región de recursos: Seleccione la misma región que arriba
  • Nombre: un valor único, como ai-tunombre
  • Nivel de precios: Gratis F0

6. Seleccione Revisar+Crear .

7. Seleccione Crear .

8. Seleccione Ir al recurso .

9. Seleccione Keys and Endpoint en el lado izquierdo debajo de GESTIÓN DE RECURSOS

10. Cree un archivo .env en nuestra aplicación para almacenar la clave.

Reemplace los marcadores de posición en el archivo .env .

  • your_key con la clave que copiaste arriba
  • your_endpoint con el punto final de Azure
  • your_location con la ubicación de Azure

Paso 8: llamar al servicio de traducción

En la parte superior del archivo app.py , inserte el siguiente código:-

Python3

# Importing the required libraries
import requests
import os
import uuid
import json
from dotenv import load_dotenv
load_dotenv()

Ahora agregue el código para crear la ruta y la lógica para traducir el texto en la parte inferior de la aplicación.py : –

Python3

# code
@app.route('/', methods=['POST'])
def index_post():
    
    # Read the values from the form
    original_text = request.form['text']
    target_language = request.form['language']
  
    # Load the values from .env
    key = os.environ['KEY']
    endpoint = os.environ['ENDPOINT']
    location = os.environ['LOCATION']
  
    # Indicate that we want to translate and the API 
    # version (3.0) and the target language
    path = '/translate?api-version=3.0'
      
    # Add the target language parameter
    target_language_parameter = '&to=' + target_language
      
    # Create the full URL
    constructed_url = endpoint + path + target_language_parameter
  
    # Set up the header information, which includes our
    # subscription key
    headers = {
        'Ocp-Apim-Subscription-Key': key,
        'Ocp-Apim-Subscription-Region': location,
        'Content-type': 'application/json',
        'X-ClientTraceId': str(uuid.uuid4())
    }
  
    # Create the body of the request with the text to be
    # translated
    body = [{'text': original_text}]
  
    # Make the call using post
    translator_request = requests.post(
        constructed_url, headers=headers, json=body)
      
    # Retrieve the JSON response
    translator_response = translator_request.json()
      
    # Retrieve the translation
    translated_text = translator_response[0]['translations'][0]['text']
  
    # Call render template, passing the translated text,
    # original text, and target language to the template
    return render_template(
        'results.html',
        translated_text=translated_text,
        original_text=original_text,
        target_language=target_language
    )

Paso 9: – Creación de la plantilla para mostrar los resultados 

Vamos a crear el nombre de archivo resultados.html en la carpeta de plantillas y agregar el siguiente código HTML:-

HTML

<!DOCTYPE html>
<html lang="en">
    
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
        integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
    <title>Result</title>
</head>
    
<body>
    <div class="container">
        <h2>Results</h2>
        <div>
            <strong>Original text:</strong> {{ original_text }}
        </div>
        <div>
            <strong>Translated text:</strong> {{ translated_text }}
        </div>
        <div>
            <strong>Target language code:</strong> {{ target_language }}
        </div>
        <div>
            <a href="{{ url_for('index') }}">Try another one!</a>
        </div>
    </div>
</body>
    
</html>

Paso 10: probemos nuestra aplicación de servicio de traducción de texto

Ejecute el comando Flash Run en la terminal para reiniciar el servicio y vaya a http://localhost:5000 para probar su aplicación.

Resultado:

Con éxito, habíamos creado una aplicación de IA usando Python, Flask y Azure Cognitive Services que traduce el texto a diferentes idiomas.

Publicación traducida automáticamente

Artículo escrito por tusharbhadak y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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