Robô de reconhecimento óptico de caracteres – (Parte 12/12)

Robot de reconocimiento óptico de caracteres – (Parte 12/12)

Este artículo proporciona instrucciones paso a paso para crear un robot capaz de convertir imágenes a un formato procesable por computadora en forma de texto sin formato usando Raspberry Pi y un servidor de cámara web donde podemos transmitir video en vivo a través de una red local. Un paquete de software utilizado en este tutorial para la interfaz de la cámara es Motion, que es un software de código abierto con varias opciones de configuración que se pueden cambiar según nuestras necesidades. Aquí se deben realizar los ajustes para que sea posible crear una cámara web remota que se ejecute en una Raspberry Pi, lo que permitirá visualizar desde cualquier ordenador de la red local para controlar el robot en zonas fuera de la línea de visión. A continuación se analizan las instrucciones paso a paso para el reconocimiento óptico de caracteres.

Robô de reconhecimento óptico de caracteres usando protótipo Raspberry pi

Requisitos previos y equipo:

Necesitará lo siguiente:

  1. Una Raspberry Pi Modelo B o superior.

  2. Un adaptador WiFi USB (aquí se utiliza el adaptador nano USB inalámbrico Edimax – 802.11b/g/n).

  3. Una cámara web USB con micrófono/micrófono USB (aquí se utiliza la cámara web USB Logitech).

  4. Accesorios robóticos (ruedas, motores, chasis y circuitos de accionamiento del motor)

  5. Una tarjeta SD actualizada con el sistema operativo Raspbian (aquí tienes una guía si la necesitas)

  6. Acceso a Raspberry mediante teclado y monitor o de forma remota.

En este proyecto, nuestro objetivo final es encontrar y resolver los diferentes requisitos en la construcción de un robot controlado por web que reconozca y convierta mensajes de texto colocados en el mundo real en archivos de texto legibles por computadora. Nuestro objetivo es integrar las técnicas apropiadas para explicar y demostrar dicha capacidad, utilizando sus limitadas capacidades de hardware y software, y no desarrollar nuevos algoritmos o hardware de reconocimiento de caracteres para hacerlo. El objetivo de nuestro trabajo es proporcionar un robot móvil controlado por Internet con la capacidad de leer caracteres en la imagen y distribuir secuencias de caracteres. Nuestro enfoque requiere las siguientes técnicas:

  1. Control de interfaz de usuario web para movimiento robótico: uso de scripts PHP y Java.

  2. Servidor de cámara web para transmisión de vídeos en vivo: utilizando el paquete Motion Software.

  3. Control de instantáneas de la cámara: mediante script en Python.

  4. Reconocimiento óptico de caracteres para conversión de imagen a texto.

Control web UI para movimientos robóticos:

La interfaz de usuario para el control de los motores que controlan el movimiento del robot está realizada mediante la misma técnica que se utiliza en la domótica mediante Raspberry Pi. El script Java se utiliza para crear la interfaz gráfica de usuario y PHP se utiliza para la comunicación entre la GUI y el GPIO de Raspberry Pi. Todos los detalles técnicos incluidos en esto están bien discutidos en ese artículo.

GUI da interface de controle da Web no Raspberry pi usando Java script e php

Figura 2: GUI de la interfaz de control web en Raspberry Pi usando Java Script y PHP

La imagen de arriba es la GUI de la interfaz de control web, tiene 4 bloques que son el bloque de control, el bloque de transmisión en vivo, el bloque de salida de texto y el bloque de imagen capturada. El bloque de control incluye cuatro interruptores de dirección y un interruptor de parada. El bloque de transmisión en vivo se utiliza para conducir el robot en áreas fuera de la línea de visión. La última imagen capturada se muestra en el siguiente bloque. Y finalmente, en el último bloque se proporciona la salida de texto, que se puede utilizar digitalmente.

Servidor de cámara web para transmisión de vídeos en vivo:

La creación de un servidor de transmisión en vivo con Raspberry Pi se analiza en detalle en el artículo anterior. Aquí tenemos que incluir este servidor con la interfaz recién creada para el robot. Esto se puede hacer incluyendo la URL del video en el archivo index.php que se crea para el servidor explicado en el artículo anterior.

Instalación del motor de reconocimiento óptico de caracteres (OCR): Disha Karnataki

El motor OCR convierte el archivo de imagen que capturamos en tiempo real en un archivo de texto. Estamos utilizando el motor Tesseract OCR. Es compatible con Raspberry Pi y no requiere una conexión en línea para convertir imágenes en texto.

Primero, instale tesseract y escriba el siguiente comando:

sudo apt-get instalar tesseract-ocr

A continuación, pruebe el motor OCR.

Seleccione una buena imagen que contenga un fragmento de texto y pruebe Tesseract siguiendo el comando:

imagen tesseract.jpg

Donde image.jpg es la imagen tomada por la cámara Raspberry Pi con fines de prueba y o es el archivo en el que se guardará el texto de salida en formato de texto, Tesseract lo convertirá en o.txt, por lo que no es necesario agregar la extensión. . Ahora tienes que esperar unos minutos, el OCR consume mucha potencia de procesamiento. Cuando termine el procesamiento, abra el archivo.txt. Si OCR no detectó ningún texto, intente rotar la imagen y ejecutar tesseract nuevamente.

Configuración del código Python para funciones de OCR:

OCR incluye una serie de pasos que deben realizarse uno por uno, lo que dificulta la codificación PHP, por lo que elegimos un script Python con un servidor web que es capaz de realizar todas las funciones con un solo clic en el servidor web PHP. La secuencia de comandos de Python se puede escribir para manejar comandos del sistema y leer la salida del shell mediante la función del sistema importando la biblioteca del sistema operativo. Copie la carpeta de codificación camera_python a la carpeta de inicio de su Raspberry Pi y ejecute el comando usando el siguiente comando. (Asegúrese de que la cámara esté conectada al puerto USB de Raspberry Pi. Este script de Python incluye las siguientes acciones.

  • Parada del servicio de movimiento (transmisión en vivo).

  • Tomando una instantánea.

  • Ejecutando motor OCR.

  • Iniciando el servicio de mudanza.

Ya que nuestro servidor Apache se iniciará automáticamente después de cada reinicio. El trabajo pendiente es iniciar automáticamente el script en Python después de cada reinicio. En este artículo se explica bien cómo ejecutar el script de Python al inicio.

Haciéndolo todos juntos:

PASO 1: Cada parte distinta del robot está completa, es hora de integrarlas para que funcionen como una parte completa. Lo primero es iniciar el servidor Apache, discutido en artículos anteriores. Descargue los archivos de codificación OCR_Robo, extráigalos y colóquelos en la carpeta del servidor web Apache que es /var/www y verifique la disponibilidad del servidor web. Nota: Existen diferentes técnicas comentadas en los artículos anteriores para conocer la dirección IP. Revise cada línea de todos los archivos de codificación y realice cambios en el campo de dirección IP a su propia dirección IP.

Arquivos de codificação OCR_Robo

Fig. 3: Archivos de codificación OCR_Robo

PASO 2: Descargue los archivos de codificación Camera_python y colóquelos en la carpeta de inicio de Raspberry Pi. Cree un archivo llamado launcher.sh usando el siguiente comando.

sudo nano launcher.sh

E ingresa el siguiente código como se muestra en la imagen:

#!/bin/sh

CD /

cd inicio/pi/camera_python

cámara sudo python.py

CD /

Y hágalo ejecutable y capaz de iniciarse al inicio siguiendo los pasos indicados en el artículo anterior.

PASO 3: Realice las conexiones según el diagrama del circuito. Los optoacopladores se utilizan para proteger la Raspberry Pi de riesgos de sobretensión.

Ahora está listo el robot que puede controlarse mediante interfaces web y es capaz de reconocer ópticamente caracteres.

Diagramas de circuito

Diagrama del circuito del robot de reconocimiento óptico de caracteres

Vídeo del proyecto

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.