with tutorial train neural network guide example datacamp convolutional cnn tensorflow neural-network conv-neural-network

tensorflow - tutorial - ¿Cómo crear una solución OCR especializada para visión artificial?



tensorflow mnist (1)

Necesitamos leer un poco de texto de las fotos de recibos de compra tomadas por la cámara del iPad. Aquí hay una muestra similar a la que debemos leer:

Hay algunas limitaciones para este problema:

  1. Necesitamos leer la cantidad total que siempre aparece después de un marcador de texto (como Grand Total en este ejemplo).
  2. La fuente es siempre la misma.
  3. La aplicación debe funcionar sin conexión sin conectividad de red.

Esto es lo que hemos intentado hasta ahora:

  • La extracción de texto de Google Mobile Vision funcionó como magia. Pero la extracción de texto solo está disponible en Android. Y tenemos que construir la solución en iOS.
  • Google y Microsoft tienen soluciones de visión artificial basadas en la nube que también funcionan con mucha precisión. Pero nuestra aplicación necesita funcionar fuera de línea.
  • Use tesseract OCR. Funcionó muy mal. Sin duda porque tenemos una foto en lugar de una imagen escaneada en blanco y negro.

Ahora estamos pensando en crear una solución personalizada usando NN convolucional. La pregunta que tengo es ¿cómo podemos construir un modelo que aproveche estas dos limitaciones para crear una solución más simple pero más precisa?

  1. La cantidad total siempre aparece después de un marcador de texto. Podemos ignorar el resto del texto de forma segura.
  2. El texto está siempre en inglés y en la misma fuente.

Esta es la tubería general que hemos creado hasta ahora.

  1. Enderece la imagen y escala a un tamaño estándar.
  2. Hacer conv connet para ubicar el marcador de texto ( Grad Total ) debería ser bastante fácil. Podemos omitir completamente la mitad superior de la imagen.

No estamos seguros de qué más hacer en este punto. Cualquier consejo, consejo y ayuda será genial.

PD. Me doy cuenta de que esta es una pregunta acerca de la metodología de diseño y no una pregunta de programación específica. Me disculpo si esto viola las pautas de SO.


Propongo que consideren la solución de deeplearning4j.org. Puede entrenar su red en una máquina potente y luego guardar el estado de la red y usarlo en Android. Aquí explicaron cómo utilizar su red en la aplicación de Android con la ayuda de Java.