Logotipo de Zephyrnet

Proyectos interesantes de Python con código para principiantes – Parte 2

Fecha:

En mi anterior artículo, analicé tres proyectos de Python con códigos y los expliqué en detalle. También te dio algunos ejemplos que puedes probar. Todos estos proyectos eran aptos para principiantes. Esta vez, veremos de nuevo algunos proyectos de python con códigos. Y cuantos más proyectos hagas, más mejorarás en la programación y el lenguaje.

Ahora comencemos con las extracciones de texto paso a paso:

1. Convierta la imagen a gris usando cv2.COLOR_BGR2GRAY.

cv2.cvtColor(entrada_imagen, cv2.COLOR_BGR2GRAY)

2. Encontrar contornos en la imagen:

Para encontrar contornos, use cv2.findContours(). Toma tres parámetros: la imagen de origen, el modo de recuperación de contorno, el método de aproximación de contorno. Esto devolverá una lista de Python de todos los contornos. El contorno no es más que una matriz NumPy de coordenadas (x, y) de puntos límite en el objeto.

3. Aplicar OCR.

Recorriendo cada contorno, tome x, y y ancho, alto usando la función cv2.boundingRect(). Luego dibuje una función de rectángulo en la imagen usando cv2.rectange(). Esto tiene cinco parámetros: imagen de entrada, (x, y), (x+w, y+h), color del límite para el rectángulo, tamaño del límite.

4. Recorta la región rectangular y páselo a tesseract para extraer el texto. Guarde su contenido en un archivo abriéndolo en modo anexar.

Para obtener más detalles, consulte también los comentarios del código.

Código:

import cv2 import pytesseract # ruta a Tesseract-OCR en su computadora pytesseract.pytesseract.tesseract_cmd = 'path_to_tesseract.exe' img = cv2.imread("input.png") #input image gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY ) # Conversión de imagen a escala de grises # realización de umbral OTSU ret, img_thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU | cv2.THRESH_BINARY_INV)
# dar forma a la estructura y tamaño del núcleo # el tamaño del núcleo aumenta o disminuye el área del rectángulo a detectar. rect_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (18, 18)) #dilatación en el umbral imagen dilatación = cv2.dilate(img_thresh , rect_kernel, iterations = 1) img_contours, jerarquía = cv2.findContours(dilatación, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) im2 = img.copy() file = open("Output.txt", "w+") #archivo de texto para guardar los resultados file.write("") file.close() #recorre cada contorno para el contorno en img_contours: x, y, w, h = cv2.boundingRect(contorno) rect = cv2.rectangle(im2, (x, y), (x + w, y + h), (0, 255, 0), 2 ) imagen_recortada = im2[y:y + h, x:x + w] #recortar el archivo de bloque de texto = abrir("Salida.txt", "a") texto = pytesseract.image_to_string(imagen_recortada) #aplicar archivo OCR.escribir (texto) archivo.escribir("n") archivo.cerrar()

Imagen de entrada:

Proyectos de Python con códigosImagen de salida:

Proyectos de Python con códigos

2. Convierta su archivo PDF a voz de audio

Digamos que tiene algún libro en formato PDF para leer, pero se siente demasiado perezoso para desplazarse; qué bueno sería entonces si ese PDF se convierte en un audiolibro. Entonces, implementemos esto usando python.

Necesitaremos estos dos paquetes:

pyttsx3: es para texto a voz y ayudará a la máquina a hablar.

PyPDF2: Es un conjunto de herramientas PDF. Es capaz de extraer información de documentos, fusionar documentos, etc.

Instálalos usando estos comandos:

pip instalar pyttsx3 pip instalar PyPDF2 

Pasos:

  • Importe los módulos requeridos.
  • Utilice PdfFileReader() para leer archivos PDF.
  • El método getPage() se utiliza para seleccionar la página desde la que se va a leer.
  • Extrae el texto usando extract text().
  • Al usar pyttx3, pronuncie el texto.

Código:

# importar los módulos import PyPDF2 import pyttsx3 # ruta de su archivo PDF ruta = open('Book.pdf', 'rb') # PdfFileReader object pdfReaderObj = PyPDF2.PdfFileReader(ruta) # la página con la que desea comenzar from_page = pdfReaderObj.getPage(12) content = from_page.extractText() # leyendo el texto speak = pyttsx3.init() speak.say(content) speak.runAndWait()

¡Eso es todo! Hará el trabajo. Este pequeño código es beneficioso para ti cuando no quieres leer; puedes escuchar.

A continuación, puede proporcionar una GUI a este proyecto usando tikinter o cualquier otra cosa. Puede proporcionar una GUI para ingresar la ruta del pdf, el número de página para comenzar, un botón de parada. ¡Prueba esto!

Pasemos al siguiente proyecto.

3. Lectura de correos y descarga de archivos adjuntos desde el buzón

Comprendamos cuál es el beneficio de leer el buzón con Python. Entonces, supongamos que estamos trabajando en un proyecto en el que algunos datos llegan diariamente en Word o Excel, que se requieren para el script como entrada o para el modelo de aprendizaje automático como entrada. Entonces, si tiene que descargar este archivo de datos diariamente y darle a la mano, será agitado. Pero si podemos automatizar este paso, leer este archivo y descargar el archivo adjunto requerido, sería de gran ayuda. Entonces, implementemos esto.

Usaremos pywin32 para implementar la descarga automática de archivos adjuntos desde un correo en particular. Puede acceder a aplicaciones de Windows como Excel, PowerPoint, Word, Outlook, etc., para realizar algunas acciones. Nos centraremos en Outlook y descargaremos los archivos adjuntos desde el buzón de Outlook.

Nota: Esto no necesita autenticación como identificación de correo electrónico de usuario o contraseña. Puede acceder a Outlook que ya está conectado a su máquina. (Mantenga la aplicación de Outlook abierta mientras ejecuta el script).

En el ejemplo anterior, elegimos smtplib porque solo puede enviar correos electrónicos y no descargar archivos adjuntos. Entonces, usaremos pywin32 para descargar archivos adjuntos de Outlook, y será bastante sencillo. Veamos el código.

Comando para instalar: pip instalar pywin32

Módulo de importación

importar win32com.client

Ahora, establezca una conexión con Outlook.

Outlook = win32com.client.Dispatch(“Outlook.Aplicación”).GetNamespace(“MAPI”)

Intentemos acceder a Inbox:

bandeja de entrada = Outlook.GetDefaultFolder(número)

Esta función toma un número/entero como entrada que indicará el índice de la carpeta de la bandeja de entrada en nuestra aplicación de Outlook.

Para verificar el índice de todas las carpetas, simplemente ejecute este fragmento de código:

import win32com.client Outlook=win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") for i in range(50): try: box = Outlook.GetDefaultFolder(i) name = box.Name print( i, nombre) excepto: pasar

Salida:

3 Elementos eliminados 4 Bandeja de salida 5 Elementos enviados 6 Bandeja de entrada 9 Calendario

Como puede ver en la salida, el índice de la bandeja de entrada es 6. Por lo tanto, usaremos 6 en la función.

bandeja de entrada = Outlook.GetDefaultFolder(6)

Si desea imprimir el asunto de todos los correos electrónicos en la bandeja de entrada, use esto:

mensajes = bandeja de entrada.Items # obtener el primer mensaje de correo electrónico = mensajes.ObtenerPrimero() # para recorrer todo el correo electrónico en la bandeja de entrada mientras es Verdadero: intente: imprimir(mensaje.asunto) # obtener el asunto del mensaje de correo electrónico = mensajes.ObtenerSiguiente () excepto: mensaje = mensajes.GetNext()

Hay otras propiedades también como “message. Asunto del mensaje. senton”, que se puede utilizar en consecuencia.

Descargando archivo adjunto

Si desea imprimir todos los nombres de los archivos adjuntos en un correo:

para archivo adjunto en mensaje.Archivos adjuntos: imprimir (archivo adjunto.Nombre de archivo)

Descarguemos un archivo adjunto (un archivo de Excel con extensión .xlsx) de un remitente específico.

import win32com.client import re import os Outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI") bandeja de entrada = Outlook.GetDefaultFolder(6) mensajes = bandeja de entrada.Items mensaje = mensajes.GetFirst() while Verdadero: prueba: if re.search('Data Report', str(message.Subject).lower()) != None and re.search("ABC prasad", str(message.Sender).lower()) ! = Ninguno: archivos adjuntos = mensaje.Archivos adjuntos para archivo adjunto en mensaje.Archivos adjuntos: si ".xlsx" en archivo adjunto.Nombre de archivo o ".XLSX" en archivo adjunto.Nombre de archivo: nombre_archivo adjunto = str(archivo adjunto.Nombre de archivo).lower() archivo adjunto.GuardarASFile( os.path.join(download_folder_path, adjunto_nombre)) else: pasar mensaje = mensajes.ObtenerSiguiente() excepto: mensaje = mensajes.ObtenerSiguiente() salir

Explicación

Este es el código completo para descargar un archivo adjunto desde la bandeja de entrada de Outlook. Dentro del bloque de prueba, puede cambiar las condiciones. Por ejemplo, estoy buscando aquellos correos que tienen asuntos como Informe de datos y Nombre del remitente "ABC prasad". Por lo tanto, iterará desde el primer correo en la bandeja de entrada y, si la condición se cumple, buscará si ese correo en particular tiene un archivo adjunto con la extensión .xlsx o .XLSX. Entonces puede cambiar todas estas cosas asunto, remitente, tipo de archivo y descargar el archivo que desee. Una vez que encuentra el archivo, se guarda en una ruta dada como "download_folder_path".

Notas finales

Discutimos tres proyectos en un artículo anterior y tres en este artículo. Espero que estos proyectos de python con códigos te hayan ayudado a pulir tu conjunto de habilidades. Solo haz un poco de práctica y prueba estos; disfrutarás codificarlos. Espero que encuentre útil este artículo. vamos a conectarnos LinkedIn.

Gracias por leer

¡Feliz codificación!

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor. 

Fuente: https://www.analyticsvidhya.com/blog/2022/01/interesting-python-projects-with-code-for-beginners-part-2/

punto_img

Información más reciente

punto_img