¿Cuál es el proceso de un algoritmo de red neuronal convolucional para un OCR?

Es bastante sencillo de describir, pero difícil de implementar en la práctica. Mi comprensión actual es que aplicar una CNN a toda la página es una pérdida de tiempo. Lo que quieres es:

  1. Aplique MSER o cualquier algoritmo relevante a la imagen para identificar zonas de texto.
  2. Extraer dichas zonas de texto.
  3. Use un CNN en la zona de texto extraído para obtener características.
  4. Alimentar dichas características en un LSTM bidireccional
  5. Usando la clasificación temporal conexionista, cree el texto resultante.

Para agregar algo de peso a mi respuesta, así es como lo hizo dropbox: crear una tubería moderna de OCR usando la visión por computadora y el aprendizaje profundo

Y si quieres implementarlo:

  • Documento: [1507.05717] Una red neuronal entrenable de extremo a extremo para el reconocimiento de secuencias basado en imágenes y su aplicación al reconocimiento de texto de escena
  • Implementación de trabajo con Torch: bgshih / crnn
  • Mi implementación (inacabada) con TensorFlow: Kankroc / crnn

Esos enlaces solo describen la parte de la red neuronal del OCR. Para el MSER, puede analizar la implementación de OpenCV, que es buena pero lenta según el equipo de Dropbox. Existe la API base en C ++ y los enlaces de Python. Para ver un ejemplo sobre cómo usar MSER con Python, puede consultar aquí: Kankroc / opencv-mser