Pregunta

Bueno, yo estoy usando un cumplido .NET versión de este OCR que se encuentran en: http://www.pixel-technology.com/freeware/tessnet2/

Lo tengo funcionando, pero el objetivo de este es traducir las placas de la licencia, por desgracia, el motor realmente no traducir con precisión algunas letras, por ejemplo, he aquí una imagen que me analizan para determinar el carácter de los problemas

enter image description here

Resultado:

12345B7B9U ABCDEFGHIJKLMNUPIJRSTUVHXYZ

Por lo tanto, los siguientes caracteres están siendo traducidos incorrectamente:

1, O, Q, W

Esto no parece tan malo, sin embargo en mis placas, el resultado no es tan grande:

enter image description here = H4 ODM

enter image description here = LDH IFW

Falsa Prueba

enter image description here = NR4 y2k

Como usted puede ser capaz de decir, he tratado de reducción de ruido, aumentando el contraste y eliminar los píxeles que no son de negro absoluto, sin mejoras reales.

Al parecer, usted puede "aprender" el motor de nuevas fuentes, pero creo que tendría que volver a compilar la biblioteca .NET, también parece que esta se realiza en un SO Linux que no tengo.

http://www.scribd.com/doc/16747664/Tesseract-Trainingfor-Khmer-LanguageFor-Posting

Así que estoy atascado como lo que para tratar la siguiente, yo he escrito una rápida aplicación de consola puramente para fines de prueba, si alguien quiere intentarlo.Si alguien tiene alguna idea/manipulación gráfica/biblioteca pensamientos, te agradecería audiencia de ellos.

¿Fue útil?

Solución

Usé Tesseract a través de Tessnet2 recientemente (Tessnet2 es una envoltura de VS2008 C ++ alrededor de Tesseract 2.0 hecha por Rémy Thomas, si mal no recuerdo). Déjame intentar ayudarte con el poco conocimiento que tengo sobre esta herramienta:

  • Primero, como dije anteriormente, este contenedor es solo para Tesseract 2.0 y la versión más reciente de Tesseract en Google Code es 3.00 (el código ya no está alojado en Source Forge). Hay colaboradores habituales: vi que está prevista la versión 3.01 más o menos. Por lo tanto, no se beneficia de las últimas mejoras, incluido el análisis del diseño de la página, que puede ayudar cuando sus matrículas no son 100% horizontales.

  • Le pedí a Rémy una envoltura Tessnet2 .NET alrededor de la versión 3, no planea ninguna por ahora. Así que, como hice yo, ¡tendrás que hacerlo tú mismo!

  • Entonces, si desea obtener la última versión de las fuentes, puede descargarlas de Subversion repositorio (todo se describe en la página dedicada del sitio ) y usted ' Podrá compilarlos si tiene Visual Studio 2008, ya que sus fuentes contienen una solución VS2008 en la subcarpeta vs2008. Esta solución está hecha de proyectos VS2008 C ++, por lo que para poder obtener resultados en C # tendrá que usar .NET P / Invoke con el tessDll creado por el proyecto. Nuevamente, si necesita esto, tengo ejemplos de código que pueden interesarle, pero es posible que desee quedarse con C ++ y hacer sus propios proyectos nuevos de WinForm, por ejemplo.

  • Cuando haya logrado compilar (no debería haber mayores problemas para eso, pero dígame si encuentra algunos, es posible que yo también los haya encontrado :-)), tendrá en la salida varios binarios que te permitirá hacer un entrenamiento específico! Nuevamente, hay una página especialmente dedicada al entrenamiento de Tesseract 3 . Gracias a esta formación, puede:

    • restrinja su conjunto de caracteres, lo que eliminará automáticamente la puntuación ('/ - \' en lugar de 'A', por ejemplo)

    • indique las ambigüedades que ha detectado ('D' en lugar de 'O' como puede ver, 'B' en lugar de '8', etc.) que se tendrán en cuenta cuando utilice su entrenamiento.

  • También vi que los resultados de Tesseract son mejores si restringes la imagen a la zona donde se encuentran las letras (es decir, sin rostro, sin paisaje alrededor): en mi caso, necesitaba reconocer solo una zona específica de tarjetas fotos tomadas desde una cámara web, así que usé procesamiento de imágenes para restringir la zona. Eso fue largo, por supuesto, pero mis imágenes provenían de muchas fuentes diferentes, así que no tuve otra opción. Si puede obtener imágenes que estén restringidas al mínimo, ¡será genial!

Espero que te haya sido de alguna ayuda, ¡no dudes en darme tus comentarios y preguntas!

Otros consejos

Hola, he hecho muchos ocr con tesseract y también he tenido algunos de tus problemas. Preguntas acerca de las herramientas de PROCESAMIENTO DE IMÁGENES y te recomiendo "unpaper" (también hay puertos de Windows, consulta Google). Ese es un buen programa para eliminar sesgos, eliminar giros, eliminar bordes y ruido, etc. Genial para correr antes de ocr'ing.

Si tiene un color de fondo (algo) variable en sus imágenes, le recomendaría secuencia de comandos imagemagick "textcleaner" Creo que es la detección de bordes y el blanqueamiento de todas las cosas que no son nerviosas.

Y si tiene texto complejo, "ocropus" podría ser útil. La sintaxis es (en Linux): "ocroscript rec-tess"

Mi configuración es 1. limpiador de texto 2. unpaper 3. grupos

Con estos tres pasos puedo leer casi cualquier cosa. Incluso las imágenes bastante borrosas y ruidosas tomadas con una iluminación desigual, con dos columnas de texto muy compacto, resultan muy legibles. De acuerdo, tal vez tus necesidades no sean tanto texto, pero los pasos 1) y 2) podrían ser de utilidad para ti.

Actualmente estoy creando un motor de reconocimiento de matrículas para ispy . Obtuve resultados mucho mejores con tesseract cuandodividir la matrícula en caracteres individuales y crear una nueva imagen que se muestra verticalmente con un espacio en blanco alrededor de ellos como:

W

4

O

O

M

Creo que un gran problema que tiene tesseract es que intenta hacer palabras a partir de letras y números horizontales y, en el caso de matrículas con letras y números mezclados, decidirá que un número es una letra o viceversa.Ingresar una imagen con los caracteres espaciados verticalmente hace que los trate como caracteres individuales en lugar de texto.

Una gran lectura! http://robotics.usc.edu/publications/downloads/pub/635/

Acerca de su problema de sesgo de placas:

Tema:Cuando OCR de entrada está tomada de una cámara de mano o de otro dispositivo de captura de imagen cuya perspectiva no es fijo como un escáner, las líneas de texto puede obtener sesgada de su original orientación [13].Basado en nuestros experimentos, la alimentación de un girar imagen de nuestro motor de OCR que produce muy buenos resultados.Enfoque Propuesto:Un sesgo de detección es necesario realizar el proceso antes de llamar al motor de reconocimiento.Si cualquier inclinación es detectado, un auto-rotación procedimiento se realiza para corregir el sesgo antes de procesamiento de texto más.Si bien la identificación del algoritmo para ser utilizado para la detección de torceduras, nos encontramos con muchos enfoques, tales como la mencionada en [13], se basan en la hipótesis de que los documentos han s et márgenes.Sin embargo, este supuesto no siempre se cumple en nuestra aplicación.Además, los métodos tradicionales basados en morfológicos las operaciones y métodos de proyección son extremadamente lentos y tienden a fallar en presencia de la cámara con captura de imágenes.En este trabajo, podemos elegir un más robustos enfoque basado en Branchand- Texto dependiente de la línea de encontrar el algoritmo (RAST algoritmo) [25] sesgo de detección y auto-rotación.La idea básica de este algoritmo para identificar cada línea de forma independiente y el uso de la la pendiente de la mejor línea de gol como el ángulo de sesgo para toda la segmento de texto.Después de detectar el ángulo de sesgo, la rotación es realizados en consecuencia.Basado en nuestros experimentos, hemos encontrado este algoritmo muy robusta y extremadamente eficiente y rápido.Sin embargo, sufrió de una menor limitación en el sentido de que no pudo detectar la rotación mayor que 30.También hemos probado un enfoque alternativo, que podría detectar cualquier ángulo de desfase de hasta el 90.Sin embargo, este enfoque se basa en presencia de algún tipo de la cruz en la imagen.Debido a la falta de extensibilidad, decidimos quedarnos con RAST el algoritmo.

Tesseract 3.0x, de forma predeterminada, penaliza las combinaciones que no son palabras y no son palabras comunes.Las preguntas frecuentes describen un método para aumentar su aversión a tales tonterías.Puede resultarle útil desactivar la penalización por palabras raras o inexistentes, como se describe (inversamente) aquí: http://code.google.com/p/tesseract-ocr/ wiki / FAQ # ¿Cómo_aumentar_la_confianza_en / fuerza_del_diccionario ?

ABCocr .NET usa Tesseract3, por lo que podría ser apropiado si necesita el último código en .NET.

Si alguien del futuro se encuentra con esta pregunta, existe una herramienta llamada jTessBoxEditor que facilita la enseñanza de Tesseract.Todo lo que debe hacer es apuntar a una carpeta que contiene imágenes de muestra, luego hacer clic en un botón y crea su archivo * .learneddata para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top