|
Página 2 de 2
|
Tesseract Gambas (antes Python)
Autor |
Mensaje |
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Tesseract Python
Bueno traduje todo lo que pude. y le agregue un poco de chimichurri
Dejo el codigo con un formulario que permite seleccionar el pdf (gracias a turbopdf de jsbsan) y luego permite hacer dos tipos de ocr el de tabla y el de texto plano.
De momento funciona solo el de texto plano
El metodo que revisa pixel por pixel de la imagen para detectar las lineas horizontales y las verticales no lo entendi, asi que lo comente para que no "moleste" pero estaria buenisimo que alguno de ustedes que maneje los pixeles y todas esas movidas y le ponga el toque final. para luego pasar a la parte de ocr por areas del la imagen segun las coordenadas de las lineas antes mensionadas.
Saludos.
Descripción: |
Tesseract front-end |
Descargar |
Nombre del archivo: |
tesseract-frontend.tar.gz |
Tamaño: |
20.03 KB |
Descargado: |
66 veces |
Descripción: |
Tesseract front-end |
Descargar |
Nombre del archivo: |
tesseract-frontend.tar.gz |
Tamaño: |
20.03 KB |
Descargado: |
66 veces |
Descripción: |
Tesseract front-end |
Descargar |
Nombre del archivo: |
tesseract-frontend.tar.gz |
Tamaño: |
20.03 KB |
Descargado: |
66 veces |
|
#11 Lunes, 04 Abril 2016, 17:48 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Tesseract Gambas (antes Python)
Bueno logre extraer lineas horizontales (las coordenadas) de una imagen simple. use el método del post.
https://foro.gambas-es.org/viewtopi...highlight=pixel
Pero cuando cargo una imagen mas grande se vuelve tremendamente lento (como lo advierte Jguardon).
¿Alguien me puede orientar sobre como hacer mejor este código?
Saludos.
Public Sub btnTest_Click()
Dim intN, intL, intX, IntY, intX1, IntY1, intX2, IntY2 As Integer
Dim strColor1, strColor2, strColors, strX1, strX2, strJump As String
Dim pioPage As Picture
Dim intWidth As Integer, intHeight, intCounter, intLineRef, intLineActual As Integer
Dim inxHorizontalX1 As New String[]
Dim inxHorizontalX2 As New String[]
pioPage = Picture["algunaimagensimple.png"]
intWidth = pioPage.Width
intHeight = pioPage.Height
intLineRef = Sqr(CFloat(intWidth) ^ 2 + CFloat(intHeight) ^ 2)
intLineRef = intLineRef / 4
inxHorizontalX1.Clear
inxHorizontalX2.Clear
'"FFFFFF" Blanco // '"000000" Negro
Inc Application.Busy
For IntY = 0 To intHeight - 1
For intX = 0 To intWidth - 1
strX1 = Str(Hex$(pioPage.Image[intX, intY], 6))
If strX1 = "000000" Then
intX1 = intX
intX2 = intX
intL = intX + 1
strX2 = Str(Hex$(pioPage.Image[intL, intY], 6))
Repeat
Inc intL
strX2 = Str(Hex$(pioPage.Image[intL, intY], 6))
intX2 = intL
Until strX2 = "FFFFFF"
If (intX2 - intX1) > 300 Then 'intLineRef Then
Print Str(intX1) & ", " & Str(intY) & "---------------" & Str(intX2) & ", " & Str(intY)
inxHorizontalX1.Add(intX1)
inxHorizontalX2.Add(intX2)
intX = intX2 + 1
Endif
Endif
Next
Next
Dec Application.Busy
End
|
#12 Martes, 05 Abril 2016, 15:51 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Tesseract Gambas (antes Python)
Sorry, ya sabes que yo de gráficos ni papa...
=================== No podemos regresar
|
#13 Martes, 05 Abril 2016, 18:25 |
|
|
vicr
Técnico Programador
Registrado: Septiembre 2013
Mensajes: 158
Edad: 47
|
Re: Tesseract Gambas (antes Python)
Tincho dice:
Citar:
...cuando cargo una imagen mas grande se vuelve tremendamente lento (como lo advierte Jguardon).
No sé la respuesta, pero el análisis de imagen al nivel de lo que pretendes me hizo preguntarme lo mismo que te pasa ahora, ¿es lento el análisis con un lenguaje interpretado?.
Resulta que hace un año atrás, en el lado oscuro de Dart Gates, pretendía hacer el efecto "Desenfoque Gaussiano", busqué información al respecto (vectores de pixeles me aparecieron por ahí los que debía promediar con el cercano, o algo así.) Luego encontré porciones de código en Vb.net... y era muy leeeeento. Finalmente encontré un código que además de VB.Net tenía código en C++ y con eso aceleraba el proceso. Por lo tanto, para tu tema, creo que sí en Python no hay problema de velocidad en el proceso en cuestión, en gambas tampoco debería haberlo; pero por el contrario si Python se ve afectado quizá sea necesario el uso en gambas de una rutina hecha en el querido C.
Ahora que lo pienso, ¿no será Tesserac el que hace ese análisis que necesitas?.
Saluos y suerte...
PS: Cuando me vine a la luz vi que con gambas lo que yo quería lo podía hacer comunicándome con Imagick.
|
#14 Martes, 05 Abril 2016, 21:22 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Tesseract Gambas (antes Python)
¿ Todo eso para hacer la función get_hlines de Python ?..
Estoy un poco perdido, pero, ¿ por que usáis cadenas para los número hexadecimales en vez de números ?.
Las cadenas siempre serán más lentas.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#15 Miercoles, 06 Abril 2016, 10:04 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Tesseract Gambas (antes Python)
Shell escribió: ¿ por que usáis cadenas para los número hexadecimales en vez de números ?.Las cadenas siempre serán más lentas.
Si, es verdad, probare usar los números directamente a ver que tal va.
Saludos.
|
#16 Miercoles, 06 Abril 2016, 18:28 |
|
|
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Re: Tesseract Python
me interesa el tema, tengo un viejo proyecto que requiere OCR de partes de la pantalla
|
#17 Sabado, 09 Abril 2016, 14:45 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Tesseract Python
tercoIDE escribió: me interesa el tema, tengo un viejo proyecto que requiere OCR de partes de la pantalla
Bueno, mira de momento logro "leer" las coordenadas en pixeles de una imagen (pero re lento) si lo que necesitas es sacar texto de un area de la pantalla y conoces las coordenadas del área en cuestión es bastante fácil.
Decime mas datos y por ahí te puedo ayudar.
Saludos.
|
#18 Sabado, 09 Abril 2016, 17:13 |
|
|
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Re: Tesseract Python
OK, supongamos que hago una captura de pantalla, o mejor aun de una ventana especifica, en especial esta:
necesito saber los nombres de los jugadores y el dinero que tienen.
Aclaracion:
Pokerstars permite pregramas "espias" que recolectan informacion de manos y las acumulan en una base de datos. Es mas, el soft mismo guarda un .TXT con info de cada mano jugada. Asi que esto es perfectamente legal.
|
#19 Martes, 12 Abril 2016, 12:59 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Tesseract Python
tercoIDE escribió: OK, supongamos que hago una captura de pantalla...
Lo que hice no sirve para hacer lo que dices, pues lee pixel por pixel para ver si es blanco o negro, y se "da cuenta" de se trata de una linea porque cuenta las veces que es negro si es una cantidad de veces igual o superior al patrón, la guarda en l alista de coordenadas, y ahí se termina todo.
La imagen que vos pasaste esta en colores y ademas los recuadros están organizados aleatoria mente.
Pero si lograsemos, mediante otro método, saber las lineas o las intersecciones entonces se podrá fraccionar la imagen y hacer ocr de cada parte.
Saludos.
|
#20 Martes, 12 Abril 2016, 16:56 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 2 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|