Tesseract Gambas (antes Python)


Ir a la página Anterior  1, 2

Objetivo: 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.


tesseract-frontend.tar.gz
Descripción: Tesseract front-end 
Descargar
Nombre del archivo: tesseract-frontend.tar.gz
Tamaño: 20.03 KB
Descargado: 67 veces
tesseract-frontend.tar.gz
Descripción: Tesseract front-end 
Descargar
Nombre del archivo: tesseract-frontend.tar.gz
Tamaño: 20.03 KB
Descargado: 67 veces
tesseract-frontend.tar.gz
Descripción: Tesseract front-end 
Descargar
Nombre del archivo: tesseract-frontend.tar.gz
Tamaño: 20.03 KB
Descargado: 67 veces

Perfil MP  
Objetivo: 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

Perfil MP  
Objetivo: Re: Tesseract Gambas (antes Python)
Sorry, ya sabes que yo de gráficos ni papa...

Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: 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

Objetivo: 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.

Perfil MP  
Objetivo: Re: Tesseract Python
me interesa el tema, tengo un viejo proyecto que requiere OCR de partes de la pantalla

Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: Re: Tesseract Python
OK, supongamos que hago una captura de pantalla, o mejor aun de una ventana especifica, en especial esta:

pokerstars-screenshot

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.

Perfil MP  
Objetivo: 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.

Perfil MP  
Ir a la página Anterior  1, 2

Página 2 de 2


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1379s (PHP: -12% SQL: 112%)
Consultas SQL: 25 - Debug off - GZIP Activado