Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Proyecto Con OCR
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Proyecto Con OCR 
 
Buenas tardes,
estoy en el desarrollo de un programa para gestionar las cuentas de una Comunidad de vecinos, y bien el tema es que me lo estaba planteando como que entraría a la cuenta de esa comunidad y podría descargar desde web los movimientos, pero va a ser que no puedo porque les cuesta dinero y no quieren hacerlo de esta forma.
Bien otra solución que se me ha ocurrido para darle al Presidente o persona que gestione esto es, introducir un proceso de OCR para poder mediante escaneo o foto de la cartilla con los movimientos detectar estos y poder registrarlos en una base de datos que posteriormente otro proceso realizará un ETL y sacará un Report.
Alguna experiencia con un proyecto con estos requerimientos OCR, algún componente que haya para esta tarea.

Saludos y gracias por las ayudas.
 



 
última edición por calcena el Viernes, 04 Octobre 2019, 16:31; editado 1 vez 
calcena - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
calcena escribió:  
Buenas tardes,
estoy en el desarrollo de un programa para gestionar las cuentas de una Comunidad de vecinos, y bien el tema es que me lo estaba planteando como que entraría a la cuenta de esa comunidad y podría descargar desde web los movimientos, pero va a ser que no puedo porque les cuesta dinero y no quieren hacerlo de esta forma.
Bien otra solución que se me ha ocurrido para darle al Presidente o persona que gestione esto es, introducir un proceso de OCR para poder mediante escaneo o foto de la cartilla con los movimientos detectar estos y poder registrarlos en una base de datos que posteriormente otro proceso realizará un ETL y sacará un Report.
Alguna experiencia con un proyecto con estos requerimientos OCR, algún componente que haya para esta tarea.

Saludos y gracias por las ayudas.


Solo una pregunta por curiosidad. Cuando uno esta en la banca online, existe muchas posibilidades de descargar los movimientos sin coste alguno. ¿Por que dice que cuesta dinero?

Yo seguiría por esta posibilidad, mas que con OCR. Pero si te empeñas. Supongo que sabes que linux el código es accesible y si existe un programa te sugiero que bajes ese código y estudies lo que necesitas.

Te digo esto por que no tengo ni idea de que exista algo en gambas.

Saludos.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
calcena escribió:  
...Alguna experiencia con un proyecto con estos requerimientos OCR, algún componente que haya para esta tarea...

Que yo sepa no hay un componente nativo de gambas que haga ocr de una imagen. Por otra parte si que hay uno que maneja un scanner.
En linux existe un programa llamado Tesseract que es un muy buen programa de terminal para OCR.
Hace un tiempo hice esta función devuelve el texto de una imagen.
Public Function PNGOCRText(strPath As String, Optional strLang As String) As String '' Devuelve el texto extraido, "" si no hay texto.

  Dim strCommand As String
  Dim strTxtTemp As String

  If Exist(strPath) Then
    If Stat(strPath).Type = gb.File Then
      strTxtTemp = ""
      strCommand = "tesseract '" & strPath & "' stdout -l " & strLang & " 2>&1"
      Shell strCommand Wait To StrTxtTemp
    Endif
  Endif
  Return strTxtTemp
End
 

Espero que te sirva
Saludos.
 



 
última edición por tincho el Viernes, 04 Octobre 2019, 21:38; editado 2 veces 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
tincho escribió: [Ver mensaje]
calcena escribió: [Ver mensaje]
...Alguna experiencia con un proyecto con estos requerimientos OCR, algún componente que haya para esta tarea...

Que yo sepa no hay un componente nativo de gambas que haga ocr de una imagen. Por otra parte si que hay uno que maneja un scanner.
En linux existe un programa llamado Tesseract que es un muy buen programa de terminal para OCR.
Hace un tiempo hice esta función devuelve el texto de una imagen.
Public Function PNGOCRText(strPath As String, Optional strLang As String) As String '' Devuelve el texto extraido, "" si no hay texto.

  Dim strCommand As String
  Dim strTxtTemp As String

  If Exist(strPath) Then
    If Stat(strPath).Type = gb.File Then
      strTxtTemp = ""
      strCommand = "tesseract '" & strPath & "' stdout -l " & strLang & " 2>&1"
      Shell strCommand Wait To StrTxtTemp
    Endif
  Endif
  Return strTxtTemp
End
 

Espero que te sirva
Saludos.


Hola, tincho

Muy chulo tu código y buen aporte, Gracias.

Saludos
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
gambafeliz escribió:  
...Muy chulo tu código y buen aporte, Gracias.

Gracias, de todas maneras no se si es lo que busca nuestro amigo, ya que las planillas de extractos bancarios suelen se eso, planillas y ahí el ocr de tesseract no ofrece buenos resultados.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
Me adelanto al tano  

Puedes usar librerias externas y evitar la llamada Shell

' gambas module file

Library "libtesseract"

Public Struct PixColormap

  harray As Pointer '; / * colormap table(array Of RGBA_QUAD) * /
  depth As Integer '; / * Of pix(1, 2, 4 Or 8 bpp) * /
  nalloc As Integer '; / * number Of color entries allocated * /
  n As Integer '; / * number Of color entries used * /
End Struct

Public Struct PixStruct

  w As Integer '; / * width In pixels * /
  h As Integer '; / * height In pixels * /
  d As Integer '; / * depth In bits * /
  wpl As Integer '; / * 32 - bit words / Line * /
  refcount As Integer '; / * reference count(1 If no clones) * /
  xres As Integer '; / * image res(ppi) In x direction * /
  yres As Integer '; / * image res(ppi) In y direction * /
  informat As Integer '; / * Input file format, IFF_ * * /
  text As String '; / * text string associated With pix * /
  colormap As PixColormap '; / * colormap(may be Null) * /
  data As Pointer '; / * the image data * /
End Struct

Public Extern TessVersion() As String

Public Extern Init(datapath As String, language As String) As Integer

Public Extern TessBaseAPIInit3(handle As Pointer, datapath As String, language As String) As Integer

Public Extern TessBaseAPICreate() As Integer

Public Extern TessBaseAPISetImage2(handle As Integer, pix As PixStruct)

Public Extern TessBaseAPISetImage(handle As Integer, imagedata As Pointer, width As Integer, height As Integer, bytes_per_pixel As Integer, bytes_per_line As Integer)

Public Extern TessBaseAPIGetUTF8Text(handle As Integer) As String

Public Function NewTesseract(datos As String, idioma As String) As Integer

  Dim h As Integer, h2 As Integer

  Debug modTesseract.TessVersion()

  h = TessBaseAPICreate()

  Debug "Handle de la API", h

  h2 = TessBaseAPIInit3(h, Null, "eng")

  Return h

End



En un formulario...

' gambas class file

Public hTesse As Integer


Public Sub form_Open()

  'necesitamos inicializar

  hTesse = modTesseract.NewTesseract(Null, "eng")

  If hTesse = 0 Then

    Message("No pude inicializar Tesseract")
    Me.Close
  Endif

End

Public Sub btnOCR_Click()

  Dim imagen As Picture, archivo As String, hImagen As Integer

  Debug "Convierto la Picture a Image"

  imagen = Desktop.Screenshot(Me.Left + PictureBox1.Left, Me.Top + PictureBox1.top + 27, PictureBox1.W, PictureBox1.H)

  archivo = Temp("tesse") & ".jpg"

  Debug "Imagen guardada en " & archivo

  imagen.Save(archivo)

  Debug "Leo la imagen"

  modLeptonica.myPix = modLeptonica.pixRead(archivo)

  modLeptonica.Pixs = modLeptonica.pixScaleColor4xLI(modLeptonica.myPix)

  modLeptonica.Pixd = modLeptonica.pixConvertRGBToGray(modLeptonica.Pixs, 0.5, 0.5, 0.5)

  ' / Para ver los cambios guardamos /
  ' modLeptonica.pixWritePng( User.Home & "/temp.png", modLeptonica.Pixd, 0.1)

  Debug "Se la paso a Tesseract"

  modTesseract.TessBaseAPISetImage2(hTesse, modLeptonica.Pixd)

  Debug "Escaneo OCR"

  TextArea1.Text = modTesseract.TessBaseAPIGetUTF8Text(hTesse)

End
 



este modulo de Leptonica para manejo de imagenes...
' gambas module file

Library "liblept:5"

Public Struct PixColormap

  harray As Pointer '; / * colormap table(array Of RGBA_QUAD) * /
  depth As Integer '; / * Of pix(1, 2, 4 Or 8 bpp) * /
  nalloc As Integer '; / * number Of color entries allocated * /
  n As Integer '; / * number Of color entries used * /
End Struct

Public Struct PixStruct

  w As Integer '; / * width In pixels * /
  h As Integer '; / * height In pixels * /
  d As Integer '; / * depth In bits * /
  wpl As Integer '; / * 32 - bit words / Line * /
  refcount As Integer '; / * reference count(1 If no clones) * /
  xres As Integer '; / * image res(ppi) In x direction * /
  yres As Integer '; / * image res(ppi) In y direction * /
  informat As Integer '; / * Input file format, IFF_ * * /
  text As String '; / * text string associated With pix * /
  colormap As PixColormap '; / * colormap(may be Null) * /
  data As Pointer '; / * the image data * /
End Struct

Public Extern pixRead(archivo As String) As PixStruct

'Public myPix As PixStruct

'Public Extern pixRead(archivo As String) As PixStruct

Public Extern pixScaleColor4xLI(Pixs As PixStruct) As PixStruct

Public Extern pixConvertRGBToGray(Pixs As PixStruct, rcolor As Float, gcolor As Float, bcolor As Float) As PixStruct

' Public Extern pixWritePng(filename As String, Pixs As PixStruct, gamma As Float)

Public myPix As PixStruct
Public Pixs As PixStruct
Public Pixd As PixStruct

 

 



 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
tercoIDE escribió: [Ver mensaje]
Puedes usar librerias externas y evitar la llamada Shell


 

Bravissimo, tercoIDE !!!  10 + magna cum laude
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
tercoIDE escribió: [Ver mensaje]
Me adelanto al tano  
jaja !!!
Igual seguro que saca un as de la manga.
Para que son estos módulos exactamente? Podrías decir una breve descripción?
¿Es para leer planillas escaneadas? o solo texto tipo novela.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
tercoIDE escribió:  
Me adelanto al tano  

Puedes usar librerias externas y evitar la llamada Shell



Me gusto pero estoy mas perdido que el barco del arroz en medio del pacifico a punto de hundirse.

tercoIDE estaría mejor si hicieras una brevisima explicación de lo que hace ¿o es que hace lo que pide el hilo?

Gracias, saludos.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Proyecto Con OCR 
 
gambafeliz escribió:  
calcena escribió:  
Buenas tardes,
estoy en el desarrollo de un programa para gestionar las cuentas de una Comunidad de vecinos, y bien el tema es que me lo estaba planteando como que entraría a la cuenta de esa comunidad y podría descargar desde web los movimientos, pero va a ser que no puedo porque les cuesta dinero y no quieren hacerlo de esta forma.
Bien otra solución que se me ha ocurrido para darle al Presidente o persona que gestione esto es, introducir un proceso de OCR para poder mediante escaneo o foto de la cartilla con los movimientos detectar estos y poder registrarlos en una base de datos que posteriormente otro proceso realizará un ETL y sacará un Report.
Alguna experiencia con un proyecto con estos requerimientos OCR, algún componente que haya para esta tarea.

Saludos y gracias por las ayudas.


Solo una pregunta por curiosidad. Cuando uno esta en la banca online, existe muchas posibilidades de descargar los movimientos sin coste alguno. ¿Por que dice que cuesta dinero?

Yo seguiría por esta posibilidad, mas que con OCR. Pero si te empeñas. Supongo que sabes que linux el código es accesible y si existe un programa te sugiero que bajes ese código y estudies lo que necesitas.

Te digo esto por que no tengo ni idea de que exista algo en gambas.

Saludos.


Bueno el tema es que al no tener domicialiadas nóminas, los bancos, al menos en españa les cobra a las comunidades de vecinos pequeñas por conectarse a la banca online, y lo que se pretende es rebajar costes.

Saludos.
 



 
calcena - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Propuesta De Proyecto Patonsky1 General 7 Martes, 14 Septiembre 2010, 04:06 Ver último mensaje
Patonsky1
No hay nuevos mensajes Proyecto OCR 4octavio4 Aplicaciones/Fragmentos de Código 9 Sabado, 14 Julio 2012, 13:01 Ver último mensaje
alessandri
No hay nuevos mensajes Proyecto De Grado Paquito General 4 Lunes, 16 Noviembre 2015, 10:11 Ver último mensaje
Paquito
No hay nuevos mensajes Directorio Del Proyecto Shell General 5 Lunes, 05 Junio 2017, 11:02 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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
No puede descargar archivos
No puede publicar eventos en el calendario