Problemas para reconocer dígitos en Tesseract – android

Esperaba que alguien pudiera decirme por qué es mi Tesseract tiene problemas para reconocer algunas imágenes con dígitos, y si hay algo que puedo hacer al respecto. Todo está funcionando según la prueba, y puesto que es solamente dígitos que necesito, pensé que podría manejar con el patrón inglés hasta que tuve que comenzar con la exhibición 7segmented aswell.

Aunque estoy teniendo un montón de problemas con las imágenes añadidas, me gustaría saber si debo empezar a trabajar en mis propios algoritmos de reconocimiento o si podría hacer mis propios conjuntos de datos para Tesseract y luego funcionaría, ¿alguien sabe dónde Limitación se encuentra con Tesseract?

Las cosas intentaron: intentado fijar psm a one_line, one_word, one_char (y chop encima de la imagen). Con one_line y one_word no hubo cambios significativos. Con one_char se reconoce un poco mejor, pero a veces, debido a un gran espaciado se adjunta un número extra a la misma, que luego se atornilló, si se mira a la imagen adjunta Cero Entonces resultó en 04. También he intentado hacer la binarización yo mismo, esto dio lugar a un reconocimiento más pobre y era muy rescate consumiendo. He intentado invertir las imágenes, esto no hace ninguna diferencia en absoluto para tesseract.

He adjuntado las imágenes que necesito, entre otras, para ser procesadas.

Explicación sobre las imágenes:

Decodethisimage_seven Es una imagen que el tesseract no tiene problemas para reconocer, aunque se ha hecho en la palabra para las conveniencias de construir una aplicación alrededor de una imagen de trabajo.

Decodethisimage_eight Es la imagen de la vida real que coincide con el image_seven. Pero no puede reconocer esto.

Decodethisimage_four2 Es otra imagen que me gustaría que reconozca, y sí sé que no se puede skrewed, y hice unskrew (creo skrew es el término aquí == "straighting") que cuando la prueba.

Conozco algunas opciones que podrían ayudarle:

  1. Añada espacio adicional entre el borde de la imagen y el texto. Tesseract funcionaría horrible si el texto en la imagen se coloca en el borde.
  2. Duplique su imagen. Por ejemplo, si estás realizando OCR en una palabra 'foobar', clona la imagen y envía 'foobar foobar foobar foobar foobar' a tesseract, los resultados serían mejores.
  3. Google para font training y image binarization para tesseract.

Tenga en cuenta, que la cámara incorporada en los dispositivos móviles en su mayoría producen imágenes de baja calidad (blured, noised, asimétrico, etc.) OCR en sí es un proceso de comsuming de recursos y si agrega un preprocesamiento digno de imagen a eso, móviles de gama baja y media Dispositivos (que probablemente tengan Android) podrían enfrentar un rendimiento inesperadamente lento o incluso falta de recursos. Eso está bien para los proyectos de libre / estudio, pero si usted está planeando una aplicación comercial – considere el uso de un SDK mejor.

Echa un vistazo a esta pregunta para más detalles: OCR for android

Tesseract no hace segmentación para usted. Tesseract hará un umbral de la imagen antes del tesseract real algo. Después del umbral, puede haber algunos bordes, artefactos que permanecen en la imagen.

Trate de modificar manualmente sus imágenes a colores en blanco y negro y ver lo que tesseract devuelve como salida.

Trate de umbral (automáticamente) sus imágenes y ver lo que tesseract devuelve como salida. La salida de thresholding puede ser demasiado mala haciendo tesseract para dar mala salida.

Su 4ª imagen probablemente fallará debido al umbral (tiene 3 colores: fondo negro, fondo grisáceo y letras blancas) y el umbral puede estar entre (fondo negro, fondo grisáceo).

Generalmente Tesseract quiere buenas imágenes en blanco y negro. Puede ser necesario el preprocesamiento de las imágenes para obtener mejores resultados.

Para su primera imagen (con el resultado "04"), intente ver el resultado de la caja (char + coordenadas de la caja que contiene el carácter reconocido). El "0" puede ser un pequeño artefacto – como una gota de 4 por 4 de píxeles.

Usted puede dar javaocr una prueba ( http://sourceforge.net/projects/javaocr/ , sí, soy desarrollador)

Therre no es liberación offocial sin embargo, y usted tendrá que buscar fuentes (buena noticia: hay una muestra android de trabajo incluyendo sampler, entrenador fuera de línea y la aplicación de reconocimiento)

Si sólo una fuente, puede obtener resultados bastante buenos con él (alcancé hasta las tasas de reconocimiento 99,96 en los dígitos de la misma fuente)

PS: es puro java y utiliza momentos invariantes para realizar coincidencias (por lo que no hay problemas con la escala y la rotación). También hay una binarización bastante eficaz.

Verlo en acción:

https://play.google.com/store/apps/details?id=de.pribluda.android.ocrcall&feature=search_result#?t=W251bGwsMSwxLDEsImRlLnByaWJsdWRhLmFuZHJvaWQub2NyY2FsbCJd

  • Aplicación de OCR para Android que utiliza Tesseract
  • Leptonica para mejorar tesseract ocr en android
  • Entrenamiento Tesseract datos para Android difícil de lograr?
  • Números digitales en Tesseract OCR
  • ¿Cómo configurar Tesseract en Eclipse para el desarrollo de Android?
  • Buscando ANPR / LPR (Reconocimiento Automático de Placas de Matrícula / Reconocimiento de Matrículas) SDK para android
  • ¿Cómo utilizar OpenCV + Tesseract para el reconocimiento de texto exacto en Android?
  • Cómo reducir el tamaño de la aplicación Android?
  • Android Tesseract OCR 7 dígitos de segmento
  • Mejor ejemplo de OCR (reconocimiento óptico de caracteres) en android
  • Creación de una actividad de cámara optimizada / adecuada para OCR
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.