OCR para bot en web con flash
OCR para bot en web con flash
Buenas gente.
tengo andando un bot bastante interesante para una pagina web con flash, me automatiza la mayoria de las cosas "tediosas".
me ha llevado un mes largo de trabajo, tiene unas 1000 lineas.
quisiera llevarlo mas alla, pero para ello tengo que poder hacer OCR sobre algunas partes de las paginas, con botones que tienen palabras, pero con imagenes.
o sea: la palabra no es una palabra con letras TTF, sino que es una imagen con la palabra.
al ser una imagen, y poder redimencionarse, cuando me cambia la resolucion de la pc o el zoom del navegador, no me reconoce si lo detecto comparando imagenes.
me interesa bastante que sea rapido, ya que el tiempo de respuesta es casi critico, aun cuando la curva de aprendizaje para programarlo sea mas elevada.
que es lo recomendable?
que tengo que leer?
no tengo experiencia en OCR con autoit.
gracias desde ya.
tengo andando un bot bastante interesante para una pagina web con flash, me automatiza la mayoria de las cosas "tediosas".
me ha llevado un mes largo de trabajo, tiene unas 1000 lineas.
quisiera llevarlo mas alla, pero para ello tengo que poder hacer OCR sobre algunas partes de las paginas, con botones que tienen palabras, pero con imagenes.
o sea: la palabra no es una palabra con letras TTF, sino que es una imagen con la palabra.
al ser una imagen, y poder redimencionarse, cuando me cambia la resolucion de la pc o el zoom del navegador, no me reconoce si lo detecto comparando imagenes.
me interesa bastante que sea rapido, ya que el tiempo de respuesta es casi critico, aun cuando la curva de aprendizaje para programarlo sea mas elevada.
que es lo recomendable?
que tengo que leer?
no tengo experiencia en OCR con autoit.
gracias desde ya.
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: OCR para bot en web con flash
hola felicidades por el programa de librerias que te controla el flash. Has dado un paso importante en contralar autoit. Si deseas compartir el código puede ser interesante por si alguien quiere mejorarlo.
En vez de hacer checksum grandes o identificar botones, puedes hacerlo por zonas de igual color por ejemplo y luego ver el contraste del borde de manera que aunque cambien las características del botón, se pueda reconocer ya que es dificil encontrar otro con esa zona de colores en sitios cercanos y con el contraste (la linea de contraste).
Si quieres agilizar y dar más velocidad puedes rastrear zonas más pequeñas y no toda la pantalla completa, tambien experimentar con diferentes librerías experimentales que están haciendo usuarios en internet buscandolo por OCR AUTOIT.
Salu22:)
En vez de hacer checksum grandes o identificar botones, puedes hacerlo por zonas de igual color por ejemplo y luego ver el contraste del borde de manera que aunque cambien las características del botón, se pueda reconocer ya que es dificil encontrar otro con esa zona de colores en sitios cercanos y con el contraste (la linea de contraste).
Si quieres agilizar y dar más velocidad puedes rastrear zonas más pequeñas y no toda la pantalla completa, tambien experimentar con diferentes librerías experimentales que están haciendo usuarios en internet buscandolo por OCR AUTOIT.
Salu22:)
Re: OCR para bot en web con flash
en realidad no controla el flash, simplemente lee pantallas e identifica cosas contra imagenes guardadas en el disco.
no quiero publicar el codigo completo por cuestiones personales, pero si pondre aqui las funciones que uso, que supongo son las que sirven, y el que quiera me contacta por privado y le envio el codigo completo de lo que estoy haciendo.
aun me quedan muchas cosas por hacer. pero bueno, he avanzado mucho, personalmente. seguro a muchos les parecera una tonteria lo poco de todo esto, pero para mi es todo un logro.
las funciones principales no son mias, la he copiado de otro sitio. pero como me llevo un par de semanas encontrar una que funcione tanto en xp como vista, 7, y el 64bits, y sea facil de entender, la comparto.
la funcion findBMP es la que hace todo el trabajo de buscar una imagen en otra.
acepta varios parametros, los 2 primeros son la imagen a buscar, y la imagen en donde buscar.
yo he creado una funcion encontrar("nombreimagen") que hace mas facil llamarla, que necesita un solo parametro, ya que llama a findBMP con el parametro de buscar en "SCREEN" que hace una captura de pantalla.
estoy pensando en cambiar que use gdicaptura por fastfindpixel, que es mucho mas rapido, pero aun estoy viendo como hacerlo lo mejor posible. igual con la velocidad actual llego.
encontrar() me actualiza las 4 cordenadas que son variables globales, de donde encontro la imagen buscada. luego llamando clickboton() hace un click dentro de la region donde esta la imagen.
se que usar variables globales no es lo mas indicado, pero en este caso me ayuda a tener el codigo mucho mas limpio. cuando lo termine, arreglare los vicios de programacion y lo dejare bien.
tambien hay una funcion escribirlog() que manda a un archivo de texto lo que va haciendo el programa.
con respecto a las librerias de OCR he probado algunas, pero he fracasado con todo exito. por eso pregunto cuales me aconsejan, y que leer al respecto.
no quiero publicar el codigo completo por cuestiones personales, pero si pondre aqui las funciones que uso, que supongo son las que sirven, y el que quiera me contacta por privado y le envio el codigo completo de lo que estoy haciendo.
aun me quedan muchas cosas por hacer. pero bueno, he avanzado mucho, personalmente. seguro a muchos les parecera una tonteria lo poco de todo esto, pero para mi es todo un logro.
las funciones principales no son mias, la he copiado de otro sitio. pero como me llevo un par de semanas encontrar una que funcione tanto en xp como vista, 7, y el 64bits, y sea facil de entender, la comparto.
la funcion findBMP es la que hace todo el trabajo de buscar una imagen en otra.
acepta varios parametros, los 2 primeros son la imagen a buscar, y la imagen en donde buscar.
yo he creado una funcion encontrar("nombreimagen") que hace mas facil llamarla, que necesita un solo parametro, ya que llama a findBMP con el parametro de buscar en "SCREEN" que hace una captura de pantalla.
estoy pensando en cambiar que use gdicaptura por fastfindpixel, que es mucho mas rapido, pero aun estoy viendo como hacerlo lo mejor posible. igual con la velocidad actual llego.
encontrar() me actualiza las 4 cordenadas que son variables globales, de donde encontro la imagen buscada. luego llamando clickboton() hace un click dentro de la region donde esta la imagen.
se que usar variables globales no es lo mas indicado, pero en este caso me ayuda a tener el codigo mucho mas limpio. cuando lo termine, arreglare los vicios de programacion y lo dejare bien.
tambien hay una funcion escribirlog() que manda a un archivo de texto lo que va haciendo el programa.
con respecto a las librerias de OCR he probado algunas, pero he fracasado con todo exito. por eso pregunto cuales me aconsejan, y que leer al respecto.
- Adjuntos
-
- findbmp ejemplo.au3
- (14.54 KiB) Descargado 369 veces
- BasicOs
- Site Admin
- Mensajes: 2091
- Registrado: 21 Nov 2006, 19:24
- Ubicación: El Internet - (Canarias, España)
- Contactar:
Re: OCR para bot en web con flash
Hola JGustavo,
Puedes encontrar en el foro referencias a librerías OCR e incluso puedes usar uno externo que encuentres en internet mandando el parámetro de la imagen de alguna manera.
Estaba viendo que puedes almacenar varias resoluciones típicas para diferentes imágenes, o inversamente incluso puedes modificar la resolución temporal a la que quieras con tus imágenes grabadas. Luego puedes restaurar la resolución a la anterior. Hay muchas utilidades externas que lo hacen.
Es como los juegos que te fijas que modifican la resolución a lo que necesitan para funcionar mejor.
http://will-bloggs-too.com/2009/10/23/a ... esolution/
_ChangeScreenRes(1024,768,32,60)
y detectar:
http://www.elitepvpers.com/forum/autoit ... ution.html
Gracias por el aporte seguro que la seguiras mejorando normalmente...
Salu22:)
Puedes encontrar en el foro referencias a librerías OCR e incluso puedes usar uno externo que encuentres en internet mandando el parámetro de la imagen de alguna manera.
Estaba viendo que puedes almacenar varias resoluciones típicas para diferentes imágenes, o inversamente incluso puedes modificar la resolución temporal a la que quieras con tus imágenes grabadas. Luego puedes restaurar la resolución a la anterior. Hay muchas utilidades externas que lo hacen.
Es como los juegos que te fijas que modifican la resolución a lo que necesitan para funcionar mejor.
http://will-bloggs-too.com/2009/10/23/a ... esolution/
_ChangeScreenRes(1024,768,32,60)
y detectar:
http://www.elitepvpers.com/forum/autoit ... ution.html
Gracias por el aporte seguro que la seguiras mejorando normalmente...
Salu22:)
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: OCR para bot en web con flash
También puedes utilizar una librería externa o programa externo. Mira tesseract, que es un ocr libre y bastante bueno. Su dirección: http://code.google.com/p/tesseract-ocr/
Mira en el foro de habla inglesa que tiene muchos post respecto a este tema, incluso creo recordar que alguna udf: http://www.autoitscript.com/forum/index ... mMainBar=1
Yo trabajé un poco con esto, y dió buenos resultados si los caracteres de las imágenes eran casi perfectos, vamos, como los que se escriben normalmente. Como sean como los de los captcha, nanai de la china .
Yo utilizé el programa en líneas de comandos que tiene, arrancándolo con run o shellexecute. No daba malos resultados. Te sacaba el texto en un fichero de texto, del que luego tenías que leer el contenido con autoit, que por supuesto era el texto de la imagen.
Míralo, estúdialo, y si tienes algún problema, ponlo en el foro bien explicado.
También nos puedes poner algunas imágenes de los botones con el texto que quieres tratar. Así te podríamos ayudar más, ya que podríamos probar nosotros cosas directamente .
Saludos.
Mira en el foro de habla inglesa que tiene muchos post respecto a este tema, incluso creo recordar que alguna udf: http://www.autoitscript.com/forum/index ... mMainBar=1
Yo trabajé un poco con esto, y dió buenos resultados si los caracteres de las imágenes eran casi perfectos, vamos, como los que se escriben normalmente. Como sean como los de los captcha, nanai de la china .
Yo utilizé el programa en líneas de comandos que tiene, arrancándolo con run o shellexecute. No daba malos resultados. Te sacaba el texto en un fichero de texto, del que luego tenías que leer el contenido con autoit, que por supuesto era el texto de la imagen.
Míralo, estúdialo, y si tienes algún problema, ponlo en el foro bien explicado.
También nos puedes poner algunas imágenes de los botones con el texto que quieres tratar. Así te podríamos ayudar más, ya que podríamos probar nosotros cosas directamente .
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: OCR para bot en web con flash
- ............................................
......................................
Re: OCR para bot en web con flash
muchas gracias por el apoyo que me brindan. me siento menos solo programando.
he intentado con tesseract y he fracazado con todo exito.
si bien leo muy bien ingles y habia mirado ese hilo antes (creo que ese, he leido unos cuantos), me pierdo en la idea.
igual voy a leerlo de nuevo a ver si ahora lo entiendo.
que siempre pasa lo mismo, cuando ya entiendes como va, no puedes entender como no lo entendias.
yo dispongo de una captura de pantalla, que puedo enviarla a disco. eso se hacerlo.
de hecho me he creado una ramdisk para meter ahi los archivos que no se puede manejar sin ir a disco, para que sea mas rapido.
me serviria un ejemplo sencillo de como iniciar tesseract y que me lea la imagen o la captura y me cree un archivo de texto con ella.
los ejemplos que he visto eran demasiado complejos para entender la idea.
adjunto unos archivos de muestra de lo que tengo que pasar OCR.
como veran en cerezas, a veces me cambia el tamaño de la letra, y hacer comparacion de imagenes es complicado.
aparte siempre va a aparecer una palabra que no tenga la imagen. por eso el OCR es mi solucion.
de nuevo muchas gracias por la ayuda
he intentado con tesseract y he fracazado con todo exito.
si bien leo muy bien ingles y habia mirado ese hilo antes (creo que ese, he leido unos cuantos), me pierdo en la idea.
igual voy a leerlo de nuevo a ver si ahora lo entiendo.
que siempre pasa lo mismo, cuando ya entiendes como va, no puedes entender como no lo entendias.
yo dispongo de una captura de pantalla, que puedo enviarla a disco. eso se hacerlo.
de hecho me he creado una ramdisk para meter ahi los archivos que no se puede manejar sin ir a disco, para que sea mas rapido.
me serviria un ejemplo sencillo de como iniciar tesseract y que me lea la imagen o la captura y me cree un archivo de texto con ella.
los ejemplos que he visto eran demasiado complejos para entender la idea.
adjunto unos archivos de muestra de lo que tengo que pasar OCR.
como veran en cerezas, a veces me cambia el tamaño de la letra, y hacer comparacion de imagenes es complicado.
aparte siempre va a aparecer una palabra que no tenga la imagen. por eso el OCR es mi solucion.
de nuevo muchas gracias por la ayuda
- Adjuntos
-
- juego de avion.jpg (1.95 KiB) Visto 12466 veces
-
- cerezas.jpg (1.43 KiB) Visto 12466 veces
-
- cerezas redimencionado.jpg (1.78 KiB) Visto 12466 veces
Re: OCR para bot en web con flash
creo que usando el OCR tesseract de google con las imágenes que guardas en disco podrías lograr lo que quieres. ando descarcargando el tesseract para ver si logro hacer algo.
saludos
saludos
- ............................................
......................................
Re: OCR para bot en web con flash
Usando la aplicación de consola
https://code.google.com/p/tesseract-ocr ... e&can=2&q=
Podrías hacerlo con las imágenes que escribes en disco.
algo así:
saludos
https://code.google.com/p/tesseract-ocr ... e&can=2&q=
Podrías hacerlo con las imágenes que escribes en disco.
algo así:
Código: Seleccionar todo
local $imagenes[3] = ["juego de avion.jpg","cerezas.jpg","cerezas redimencionado.jpg"]
local $txtsalida = "salida.txt"
local $i=0
local $resultado=""
for $i=0 to ubound($imagenes)-1
$resultado=_OCR_consola($imagenes[$i], $txtsalida)
$resultado=StringSplit($resultado,@crlf)
MsgBox(0,"",$resultado[1])
Next
Func _OCR_consola($imagen, $txtsalida)
Local $datos=""
ShellExecuteWait("tesseract.exe", '"' & $imagen & '" "' & StringLeft($txtsalida,stringlen($txtsalida)-4) & '" ' & '"-l eng"' & '" ' &'" -psm 6"')
If @error Then
MsgBox(0,"Error","ShellExecuteWait Error")
Exit
EndIf
If FileExists($txtsalida) Then
$datos = FileRead($txtsalida)
Else
$datos = "El archivo " & $txtsalida & " no existe"
EndIf
Return $datos
EndFunc
- ............................................
......................................
Re: OCR para bot en web con flash
fantastico. con eso me sirve.
luego, como es logico ire haciendole mejoras y complicandolo para que haga exactamente lo que quiero, y lo haga lo mas rapido posible.
pero el ejemplo es clarisimo.
un millon de gracias.
luego, como es logico ire haciendole mejoras y complicandolo para que haga exactamente lo que quiero, y lo haga lo mas rapido posible.
pero el ejemplo es clarisimo.
un millon de gracias.
Re: OCR para bot en web con flash
que bien que te funcione. use lenguaje ingles que es el que trae por default. para el español debes descargar los paquetes de español. saludos
- ............................................
......................................