pablo patricio bogarín - textscan final
DESCRIPTION
entretenimientoTRANSCRIPT
PROYECTO DE INNOVACENTRAL
TEXTSCANLa Manera más fácil y rápida de copiar un documento
INTEGRANTES➢ Luis Gabriel Ortiz Meaurio
➢ Derlis Florentín Pavón Alonso➢ José Iván Sanabria Espínola
ORIENTADORA
Prof. Ing. De Los Ángeles Núñez
Colegio Nacional Pablo Patricio Bogarin
Dirección :Adm. Educ. Lic. Tomas Olmedo
Año 2015
Índice
Resumen ………………………………………………………………………………2
Introducción……………………………………………………………………………3
Justificación del Problema……………………………………………………………3
Objetivos General y Específicos……………………………………………………..3
Hipótesis………………………………………………………………………………..3
Marco Teórico………………………………………………………………………….4
Metodología y Desarrollo……………………………………………………………..10
Resultados……………………………………………………………………………..11
Conclusión……………………………………………………………………………..12
Referencias y Bibliografía consultadas……………………………………………..13
Anexos………………………………………………………………………………….14
1
Resumen
Textscan será una app que permitirá el copiado y pegado de textos que quisiéramos
obtener de forma más fácil y sencilla en nuestros celulares inteligentes, esto se
logrará gracias a la tecnología OCR (Optical Character Recognition) que
básicamente en español significa el reconocimiento óptico de caracteres, es decir,
es el procedimiento que permite la digitalización de un texto a partir de un escaneo.
¿Cómo utilizaremos ésta tecnología para esta app? Es sencillo, utilizaremos la
aplicación TEXTSCAN para que la cámara del Smartphone funcione como el
escáner.
Para el desarrollo de la app implementaremos lenguajes de programación como
python, que se encuentra a nivel de generar compiladores, el mismo simplifica y
agiliza la programación, también es flexible y cuando escribes programas en Python
nunca debes preocuparte por detalles de bajo nivel, como manejar la memoria
empleada por tu programa.
El framework que posiblemente utilizaremos para esta app es el IONIC, un
framework gratuito de Open Source (Código Abierto) con base Apache Cordova,
construido con Sass y optimizado con Angular JS, estos tres últimos también son
frameworks para el desarrollo de aplicaciones móviles que utilizan las herramientas
web genéricas como Javascript, HTML5 y CSS, todos de código abierto.
El objetivo de IONIC es ejercer un modelo-vista-controlador (MVC) un patrón de
arquitectura de software que separa los datos y la lógica de negocio de una
aplicación de la interfaz de usuario y el módulo encargado de gestionar eventos y
comunicaciones. Entre las principales características de este framework, es la
inclusión de una interfaz de línea de comando, ya que podrás crear y compilar en
cualquier plataforma ya sea Android, iOS o Windows Phone.
2
Introducción
En la actualidad la tecnología avanza día a día, pero nosotros no la sabemos utilizar
o la utilizamos para actividades poco provechosas, entonces hoy se ha decidido
utilizar la tecnología para la educación y el más fácil acceso a las informaciones o
contenidos sujetos a una revista, documento o cualquier otra fuente de textos de
interés personal.
Justificación del Problema
Debido a los procesos numerosos que se necesitan para transportar o copiar un
documento utilizando una notebook o copiando los archivos en un pen drive, se
decidió agilizar ese mismo proceso utilizando solo un Smartphone.
De esta manera los interesados ya tendrán el texto deseado de manera que puedan
llevar y leer en el lugar y el tiempo que deseen, es decir, esta app te simplifica la
vida y te ahorra tiempo, ya que no tendrás que copiar palabra por palabra la
información, ni tampoco tendrás que usar una gran computadora para leerlo o
editarlo después, con esta app poseerás todo a mano, todo en tu Smartphone
Objetivo General
Desarrollar TEXTSCAN, una aplicación móvil que básicamente escanea el texto por
medio del enfoque de la cámara del Smartphone sobre la información deseada y la
aplicación se encarga de reconocer los caracteres y guarda el texto escaneado en
un documento de tipo .txt (archivo de texto simple).
Objetivos Específicos
Identificar los requerimientos de una aplicación Móvil
Implementar la aplicación móvil
Realizar pruebas de sistema pertinentes, una vez finalizado el desarrollo.
Hipótesis
Los estudiantes y/o empresarios que reciben una labor específica de copiar un
documento en un corto tiempo, tienen la dificultad de transcribir de manera exacta.
Para los que posean TEXTSCAN esto no será ningún inconveniente.
3
Marco Teórico
¿Qué es el OCR?
El OCR (Optical Character Recognition) es una tecnología que trata de emular la
capacidad del ojo humano para reconocer objetos. Concretamente es un software
que permite el reconocimiento óptico de los caracteres contenidos en una imagen
(documento escaneado o fotografía), de forma que estos se vuelven comprensibles
o reconocibles para un ordenador, obteniendo como resultado final un archivo en un
formato de texto editable. El formato del archivo de salida (txt, pdf, etc.) dependerá
de las posibilidades que ofrezca el software. ¿Cómo funciona el OCR? Para
reconocer los caracteres, el software inspecciona la imagen pixel a pixel, buscando
formas que coincidan con los rasgos de los caracteres. En función del nivel de
complejidad o grado de desarrollo del software, éste buscará coincidencias con los
caracteres y fuentes disponibles en el programa, o tratará de identificar los
caracteres a través del análisis de sus características, de forma que el
reconocimiento de los mismos no se limite exclusivamente a un determinado número
de fuentes. El OCR puede analizar los elementos del documento (bloques de texto,
imágenes, tablas…), examinando los espacios en blanco y descomponiendo el texto
en líneas, palabras y caracteres, de forma que el programa puede formular distintas
hipótesis y cotejarlas con los diccionarios contenidos por el mismo (actualmente los
programas contienen diccionarios en distintos idiomas), para formar palabras y
textos completos. Aunque actualmente el OCR puede llegar a mantener la estructura
de los documentos originales en el archivo de salida, e incluso reconocer caracteres
contenidos en documentos manuscritos, diagramas, partituras, etc., no hay que
olvidar que su nivel de efectividad sigue siendo limitado, lo que hace necesaria una
posterior revisión y corrección manual del texto generado. Actualmente existe en el
mercado una amplia oferta de software OCR, cuyo nivel de sofisticación y precio
está directamente relacionado con su precisión y efectividad en el reconocimiento de
caracteres.
4
¿Para qué se utiliza el OCR?
El OCR es una tecnología transversal, aplicable en distintos ámbitos y sectores para
la digitalización de formularios, documentos administrativos, informes, etc., ya que
las ventajas que ofrece son comunes para todos ellos. En el sector de la cultura, por
ejemplo en el ámbito de la preservación del patrimonio, el OCR se aplica
principalmente en los procesos de digitalización de documentos históricos, en
soporte papel o micro formas.
¿Qué es Python?
Python es un lenguaje de programación creado por Guido van Rossum a principios
de los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses
“MontyPython”. Es un lenguaje similar a Perl, pero con una sintaxis muy limpia y que
favorece un código legible. Se trata de un lenguaje interpretado o de script, con
tipado dinámico, fuertemente tipado, multiplataforma y orientado a objetos.
Lenguaje interpretado o de script
Un lenguaje interpretado o de script es aquel que se ejecuta utilizando un programa
intermedio llamado intérprete, en lugar de compilar el código a lenguaje máquina
que pueda comprender y ejecutar directamente una computadora (lenguajes
compilados). La ventaja de los lenguajes compilados es que su ejecución es más
rápida. Sin embargo los lenguajes interpretados son más flexibles y más portables.
Python tiene, no obstante, muchas de las características de los lenguajes
compilados, por lo que se podría decir que es semi interpretado.
En Python, como en Java y muchos otros lenguajes, el código fuente se traduce a
un pseudo código máquina intermedio llamado bytecode la primera vez que se
ejecuta, generando archivos .pyc o .pyo (bytecode optimizado), que son los que se
ejecutarán en sucesivas ocasiones.
5
Tipado dinámico
La característica de tipado dinámico se refiere a que no es necesario declarar el tipo
de dato que va a contener una determinada variable, Introducción 7 sino que su tipo
se determinará en tiempo de ejecución según el tipo del valor al que se asigne, y el
tipo de esta variable puede cambiar si se le asigna un valor de otro tipo.
Fuertemente tipado
No se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es
necesario convertir de forma explícita dicha variable al nuevo tipo previamente. Por
ejemplo, si tenemos una variable que contiene un texto (variable de tipo cadena o
string) no podremos tratarla como un número (sumar la cadena “9” y el número 8).
En otros lenguajes el tipo de la variable cambiaría para adaptarse al comportamiento
esperado, aunque esto es más propenso a errores.
Multiplataforma
El intérprete de Python está disponible en multitud de plataformas (UNIX, Solaris,
Linux, DOS, Windows, OS/2, Mac OS, etc.) por lo que si no utilizamos librerías
específicas de cada plataforma nuestro programa podrá correr en todos estos
sistemas sin grandes cambios.
Orientado a objetos
La orientación a objetos es un paradigma de programación en el que los conceptos
del mundo real relevantes para nuestro problema se trasladan a clases y objetos en
nuestro programa. La ejecución del programa consiste en una serie de interacciones
entre los objetos. Python también permite la programación imperativa, programación
funcional y programación orientada a aspectos.
6
¿Por qué Python?
Python es un lenguaje que todo el mundo debería conocer. Su sintaxis simple, clara
y sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de librerías
disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una
aplicación en Python sea sencillo, muy rápido y, lo que es más importante, divertido.
La sintaxis de Python es tan sencilla y cercana al lenguaje natural que Python para
todos 8 los programas elaborados en Python parecen pseudocódigo. Por este
motivo se trata además de uno de los mejores lenguajes para comenzar a
programar. Python no es adecuado sin embargo para la programación de bajo nivel
o para aplicaciones en las que el rendimiento sea crítico. Algunos casos de éxito en
el uso de Python son Google, Yahoo, la NASA, Industrias Ligh&Magic, y todas las
distribuciones Linux, en las que Python cada vez representa un tanto por ciento
mayor de los programas disponible.
IONIC
Lo primero que me gustaría explicar, y de forma escueta, es qué es un MVC y de
qué se compone:
El MVC
El MVC (Model-View-Controller o Modelo-Vista-Controlador), es un patrón de diseño
que separa los datos, la lógica y las interfaces de usuario. Como su nombre indica,
está separado en tres componentes: Modelo, Vista y Controlador. Está basado en la
ideología de separación de conceptos y cumple perfectamente con los objetivos de
los patrones de diseño.
1.-Modelo
Es la capa encargada de los datos, es decir, la que se encarga de hacer peticiones a
las bases de datos para enviar o recibir información. Estas bases de datos pueden
estar alojadas de forma local en nuestra app o de forma remota en un servidor
externo.
7
2.-Vista
Se trata del código que nos permitirá presentar los datos que el modelo nos
proporciona, como ejemplo podríamos decir que en una aplicación es el código
HTML que nos permite mostrar la salida de los datos procesados.
3.-Controlador
Es la capa que sirve de enlace entre la vista y el modelo. Envía comandos al modelo
para actualizar su estado, y a la vista correspondiente para cambiar su presentación.
En el caso MVVM (Modelo Vista VistaModelo) la iteracción entre la vista y el
controlador será en los dos sentidos, el controlador muestra los datos en la vista y si
en la vista hay un cambio de datos, se actualiza el modelo automáticamente.
El frameworkIonic
IONIC es una herramienta, gratuita y open source, para el desarrollo de aplicaciones
híbridas basadas en HTML5, CSS y JS. Está construido con Sass y optimizado con
Angular JS .El objetivo de IONIC es ejercer un modelo vista-controlador (MVC),
un patrón basado en la ideología de separación de conceptos, que separa los datos,
la lógica y las interfaces de usuario.
Principales características
Alto rendimiento
La velocidad es importante. Tan importante que sólo se nota cuando no está en tu
app. Ionic está construido para ser rápido gracias a la mínima manipulación del
DOM, con cero jQuery y con aceleraciones de transiciones por hardware.
AngularJS&Ionic
Ionic utiliza AngularJS con el fin de crear un marco más adecuado para desarrollar
aplicaciones ricas y robustas. Ionic no sólo se ve bien, sino que su arquitectura
central es robusta y seria para el desarrollo de aplicaciones. Trabaja perfectamente
con AngularJS.
8
Centro nativo
Ionic se inspira en las SDK de desarrollo móviles nativos más populares, por lo que
es fácil de entender para cualquier persona que ha construido una aplicación nativa
para iOS o Android. Lo interesante, como sabéis, es que desarrollas una vez, y
compilas para varios.
Bonito diseño
Limpio, sencillo y funcional. Ionic ha sido diseñado para poder trabajar con todos
losdispositivos móviles actuales. Con muchos componentes usados en móviles,
tipografía, elementos interactivos, etc.
Un potente CLI
Con un sólo comando podrás crear, construir, probar y compilar tus aplicaciones en
cualquier plataforma.
Entre las principales características de IONIC, es la inclusión de una interfaz de
línea de comando, ya que podrás crear y compilar tus aplicaciones en cualquier
plataforma. También tiene un alto rendimiento, a causa de una mínima manipulación
del DOM(estructura de objetos que genera el navegador cuando se carga un
documento), aceleraciones de transiciones y no trabaja con JQuery.
Unos de los rasgos más importantes y que caracterizan a IONIC es su diseño, ya
que es muy sencillo de manejar, funcional, limpio (característica muy importante
para los desarrolladores) y sobre todo optimizado para trabajar en casi todos los
dispositivos móviles actuales. Una funcionalidad que ha sido incluida hace poco es
la opción de poder desarrollar con el diseño de la interfaz Material Design, incluido
en el tan aclamado o no, versión de AndroidLollipop 5.0.
9
METODOLOGÍA Y DESARROLLO
Este proyecto se inicióel 9 de julio del 2015 para un taller sobre el concurso de
innovaciones tecnológicas que tendrá fin el 21 de septiembre del corriente.
Se realizó el trabajo de investigación, recolección de datos en los laboratorios de
informática del Colegio Nacional Pablo Patricio Bogarin en conjunto con los
profesores de informática.
Los instrumentos utilizados fueron cuaderno, bolígrafo, computadora, pen drive y
conexión a internet.
En la primera etapa se realizó la fundamentación del proyecto, los objetivos general
y específicos.
En la segunda fase del proyecto se investigó sobre la tecnología OCR, y luego
investigar sobre los lenguajes de programación para aplicaciones móviles.
En la tercera etapa del proyecto se decidió cuales serian las alternativas más
apropiadas para realizar la aplicación móvil.
En la cuarta y última fase que será el año entrante se realizará el desarrollo de la
aplicación.
Las técnicas aplicadas fueron lluvia de ideas y la recolección de datos.
10
RESULTADOS
Para la implementación de este proyecto de innovación tecnológica utilizaremos las
ideas posibles para solucionar los problemas de la actualidad, se ha decido
contribuir a la educación con el desarrollo de una app, basándose en las
herramientas de programación como python que es lenguaje interpretado o de script,
con tipado dinámico, fuertemente tipado, multiplataforma y orientado a objetos, el
frameworkionic, es un patrón de diseño que separa los datos, la lógica y las
interfaces de usuario. Para utilizar estas herramientas se ha tenido que averiguar e
interiorizarse de cada una de ellas para su correcta utilización.
El diseño de TEXTSCAN básicamente es la de contar con una interfaz muy intuitiva
y fácil de manejar, además de varias características, las funciones de entrada de
texto, la herramienta borrar y la de marcar, nos permitirán editar y modificar los
documentos para hacer todos los cambios y mejoras que consideremos oportunos.
Además ofreceremos la posibilidad de convertir los documentos a formato PDF y la
opción de poder compartir los documentos por correo electrónico.
Se ha tenido un tiempo de aproximadamente 50 días para la recolección de datos,
informaciones y soluciones, la forma en que se adquirió los conocimientos fue la
más conocida como la autodidacta utilizando la internet y también consultando con
amigos programadores y profesores del área.
No existe un amplio conocimiento en desarrollo de aplicaciones móviles en nuestro
sector académico, lo que genera una necesidad de una mayor investigación y un
grado de dificultad en este tipo de investigaciones.
11
CONCLUSIÓN
Se logrará la realización de una aplicación móvil que pueda escanear texto desde la
cámara para convertirlo en extensión .txt, siempre que podamos cumplir con la
siguiente condición, para convertir un documento escaneado en uno editable el
documento tendrá que estar en cualquiera de los formatos soportados (.jpg, .png, .gif
o PDF). Para escanearlo solo necesitaremos fotografiar con la cámara y,
preferiblemente, aumentar el contraste con alguna aplicación de edición de
fotografía.
Una vez escaneado y optimizado el documento, tendremos que convertir el texto de
la imagen en editable utilizando la aplicación móvil. Cuando hayamos hecho esto ya
podremos subir el documento, el cual se habrá convertido a editable siempre y
cuando el contraste del texto y el fondo de la hoja contribuyan para que la aplicación
detecte los caracteres (letras), sabemos las limitaciones de una cámara, jamás
podríamos obtener los resultados como los que obtenemos con el ojo humano.
12
REFERENCIAS Y BIBLIOGRAFÍA CONSULTADA
http://www.phonegapspain.com/que-es-y-como-empezar-con-ionic-framework/
http://www.ticarte.com/tags/ionic
www.ceibal.edu.uy/contenidos/areas.../aportes/ python _para_ todos .pdf
www.kultura.ejgv.euskadi.eus/r46-19123/es/.../pildora- OCR -2.pdf
http://dev.laptop.org/~edsiper/byteofpython_spanish/ch01s02.html
13
ANEXOS
14