Contactos

Entrenamiento de tesseract. Tesseract-OCR en Visual Studio: reconoce la página del texto. Digitalización de imágenes uno por uno.

Tesseract. - Una plataforma gratuita para el reconocimiento óptico del texto, las fuentes de las que Google presentó a la comunidad en 2006. Si escribe un software para reconocer texto, es probable que tenga que acceder a los servicios de esta poderosa biblioteca. Y si ella no lo hizo frente a tu texto, entonces te queda de una manera, para enseñarlo. Este proceso es bastante complicado y repleto sin obvio y, a veces, directamente con acciones mágicas. La descripción original es. Necesitaba casi un día entero para comprender todas sus profundidades, así que quiero ahorrar, espero que sea una opción más comprensible. Así que para ayudarte a ti mismo y a los demás pasan por este camino la próxima vez más rápido.

0. Lo que necesitamos

  • Tesseract en realidad.
Montaje Esta biblioteca está en Windows (puede descargar el instalador del repositorio oficial) y bajo Linux. Para la mayoría de las distribuciones de Linux, instale Tesseract, simplemente se puede instalar a través de sudo apt-get install tesseract-ocr, Tengo que agregar la fuente de mi sistema operativo elegante de moda:
gedit /etc/apt/sources.list.
deb http://notesalexp.net/debian/precise/ Precise Main
wget -o - http://notesalexp.net/debian/alexp_key.asc
cLAVE APT AÑADIR ALEXP_KEY.ASC
actualización de apt-get
apt-get install tesseract-ocr
  • Imagen con texto para entrenamiento.
Es deseable que fuera un texto real, que luego tendrá que reconocer. Es importante que cada símbolo de fuente se cumiga en el fragmento escaneado sea al menos 5 veces, y preferiblemente 20 veces. Formato TIFF, sin compresión, preferiblemente no multiplano. Entre todos los personajes debe ser claramente distinguibles. Ponga nuestra imagen en un directorio separado y llame en el formulario<код языка>.<имя шрифта>.Exp<номер>.tif La imagen puede no ser una y diferir, solo deberían numerar en el nombre del archivo. Formato Los nombres de los archivos son muy importantes. En los archivos con nombres incorrectos de la utilidad que usaremos, lo juraremos a errores de segmentación, etc. Por definición, asumimos que estudiamos el lenguaje SCC y la fuente Eee. Por lo tanto, llame al archivo con la muestra de escaneo ccc.eee.exp0.tif

1. Crea y edita el archivo de caja.
Para. Para marcar los caracteres en la imagen y configurar sus coincidencias de los símbolos de texto UTF-8 son archivos de caja. Estos son los archivos de texto habituales en los que cada carácter corresponde a una cadena con un símbolo y las coordenadas de rectángulo en píxeles. Inicialmente, usted genera una utilidad del paquete Tesseract:
tesseract ccc.eee.eee.exp0 batch.nochop MakeBox
Recibió el archivo CCC.EEE.EXP0.BOX en el directorio actual. Míralo. ¿Los símbolos al principio de la línea coinciden con los caracteres en el archivo? Si es así, entonces no necesitas entrenar nada, puedes dormir bien. En nuestro caso, lo más probable es que los personajes no coincidan con ninguno de los números esencialmente. Esos. Tesseract con el diccionario predeterminado no reconoció no solo los personajes, sino también los considerados algunos de ellos para dos o más. Tal vez parte de los personajes que nos "pegamos", es decir,. caerá en una caja común y será reconocida como una. Todo necesita arreglar antes de ir más lejos. Trabajar tedioso y minucioso, pero afortunadamente hay un número utilidades de terceros. Por ejemplo, usé PyTtrainer-1.03. Abrimos la imagen, el archivo de la caja con el mismo nombre que él mismo se retira.
Pasó medio día ... Con una sensación de profunda satisfacción con el PyteseractTrainer (no olvidó guardar el resultado, ¿verdad?) Y tiene un archivo de caja correcto. Ahora puedes ir al siguiente paso.

2. Entrenamiento Tesseract.
tesseract ccc.eee.eee.eee.eee.eee.ee.eee.evp0 nobatch Box.Train
Recibimos muchos errores, pero estamos mirando algo como "Encontramos 105 buenos blobs". Si la cifra es significativamente mayor que la cantidad de caracteres "estudiados", es decir, la posibilidad de que el entrenamiento en su conjunto haya tenido éxito. De lo contrario, regresamos al principio. Como resultado de este paso, tiene un archivo ccc.eee.eee.exp0.tr

3. Retire el conjunto de símbolos
unicharset_extractor ccc.eee.exp0.box.
Recibimos un conjunto de caracteres como un archivo UNICHARSET en el directorio actual, donde cada personaje y sus características se encuentran en una línea separada. Aquí nuestra tarea verificará y corrija las características de los caracteres (la segunda columna en el archivo). Para letras pequeñas del alfabeto, colocamos un signo 3 por grande 5, para la puntuación de 10 para los números 8, todo lo demás (tipo + \u003d -) marcado 0. Los jeros chinos y japoneses nota 1. Por lo general, todas las señales son correctas, Así que esta etapa es mucho tiempo que no tomará.

4. Describe el estilo de fuente.
Cree un archivo CCC.Font_properties con una sola cadena: eee 0 0 0 0 0 0. Aquí escribe el nombre de la fuente, luego el número 1 o 0 está etiquetado en la presencia de caracteres de estilo (respectivamente, en cursiva Bold Fixed Serif Fraktur) . En nuestro caso no hay estilos, así que dejamos todo en los ceros.

5. Clusters de figuras, prototipos y otras magias.
Para estudios posteriores, debemos realizar tres operaciones más. Puedes intentar entender su significado de la descripción oficial, no estaba antes :). Solo realiza:
shapeClusering -F ccc.font_properties -u unicharset ccc.eee.exp0.tr
... archivo mafetable
y entonces:
mftraining -f ccc.font_properties -u unicharset -o ccc.unicharset ccc.eee.exp0.tr
... obtener archivos ccc.unicharset, inttemp, pffmtable
Finalmente:
cNTRAING CCC.EEE.EXP0.TR.
... obtenemos el archivo normproto.

6. diccionarios
El relleno teóricamente de los diccionarios de palabras de uso frecuente (y palabras en absoluto) ayuda a Tesseract-U para tratar con sus garabatos. Entendiendo los diccionarios, pero si de repente quieres, haz archivos.frecuent_words_list y palabras_list en las que entran (cada uno con nueva cadena) En consecuencia, se usan con frecuencia y simplemente las palabras del idioma.
Para convertir estas listas al formato correcto, realice:
wordlist2dawg frecuent_words_list ccc.freq-dawg ccc.unicharset

wordlist2dawg words_list ccc.word-dawg ccc.unicharset

7. Último archivo misterioso
Su nombre es unicharambigs. En teoría, debe prestar atención al tesseract sobre símbolos similares. eso archivo de texto En cada fila con los separadores, las pestañas se describen por pares de cuerdas que pueden confundirse al reconocer. El formato completo se describe en la documentación, no fue necesario y lo dejé vacío.

8. Último equipo
Todos los archivos deben ser renombrados para que sus nombres comiencen con el nombre del idioma. Esos. Solo los archivos permanecerán en el directorio:

ccc.box.
ccc.inttemp
ccc.pffmtable
ccc.tif.
ccc.font_properties.
ccc.normproto.
ccc.shapetable
ccc.tr.
ccc.unicharset.

Y finalmente, realizamos:
combine_TessData CCC.
(!) El punto es obligatorio. Como resultado, obtenemos el archivo CCC.TRINGDATA, lo que nos permitirá reconocer aún más nuestro nuevo idioma misterioso.

9. Revisamos si valió la pena :)
Ahora intentemos reconocer nuestra muestra utilizando el TesSeract ya entrenado:
sudo cp ccc.tretendata / usr / share / tesseract-ocr / tessdata /
tESSERACT CCC.TIF OUTPUT -L CCC
Ahora miramos la salida.txt y nos regocijamos (o se entiende, dependiendo del resultado).

Necesitábamos mejorar el flujo de trabajo en nuestra empresa, en primer lugar, para aumentar la velocidad de procesar documentos de papel. Para hacer esto, decidimos desarrollar una solución de software basada en una de las bibliotecas OCR (reconocimiento de caracteres ópticas).

OCR, o reconocimiento de texto óptico, es una conversión mecánica o electrónica de imágenes de texto impresas en una máquina. OCR es un método para digitalizar el texto impreso para que pueda guardarse electrónicamente, editarse, se muestre y se aplica en dichos procesos de la máquina como cálculos cognitivos, traducción automática y análisis de datos inteligentes.

Además, OCR se utiliza como método para ingresar información de documentos en papel (incluidas las entradas financieras, cartas de negocios, Facturas y mucho más).

Antes de implementar la solicitud en sí, realizamos un análisis exhaustivo de las tres bibliotecas de OCR más populares para determinar la opción más adecuada para resolver nuestras tareas.

Analizamos las tres bibliotecas OCR más populares:

- API de reconocimiento de texto de Google

API de reconocimiento de texto de Google

La API de reconocimiento de texto de Google es el proceso de detección de texto en imágenes y transmisiones de video y texto de reconocimiento contenido. Después de la detección, el reconocedor determina el texto real en cada bloque y lo rompe a las palabras y las líneas. Descubre el texto de varios idiomas (francés, alemán, inglés, etc.) en tiempo real.

Vale la pena señalar que, en general, este OCR ha enfrentado la tarea. Tenemos la oportunidad de reconocer el texto tanto en tiempo real como con imágenes ya listas de documentos de texto. En el curso del análisis de esta biblioteca, revelamos las ventajas y desventajas de su uso.

Beneficios:

- La capacidad de reconocer el texto en tiempo real.

- la capacidad de reconocer texto de imágenes;

- Biblioteca de tamaño pequeño;

- Alta velocidad de reconocimiento.

Desventajas:

- Archivos de gran tamaño con datos capacitados (~ 30MB).

Tesseract.

Tesseract es una biblioteca de ORCR de código abierto para diferentes sistemas operativos. Es gratis software, emitido bajo la licencia de Apache, la versión 2.0, admite diferentes idiomas.

El desarrollo de Tesseract fue financiado. empresa google Desde 2006, el momento en que se consideró una de las bibliotecas OCR más precisas y eficientes con código abierto.

Sé que, en ese momento, en ese momento, los resultados de la introducción de Tesseract, seguimos siendo muy satisfechos, porque La biblioteca es increíblemente volumétrica y no permite reconocer el texto en tiempo real.

Beneficios:

- tiene un código de código abierto;

- En consecuencia, es suficiente enseñar a OCR a reconocer las fuentes deseadas y mejorar la calidad de la información reconocible. Después de la configuración rápida de la biblioteca y la capacitación, la calidad de los resultados del reconocimiento aumentó rápidamente.

Desventajas:

- Precisión de reconocimiento insuficiente, que se elimina por entrenamiento y aprendiendo el algoritmo de reconocimiento;

- Para reconocer el texto en tiempo real, se requiere un procesamiento adicional de la imagen resultante;

- Pequeña precisión de reconocimiento al usar archivos estándar con datos de fuente, palabras y símbolos.

Cualquier línea

Crea línea proporciona SDK multiplataforma, que permite a los desarrolladores integrar fácilmente las funciones de OCR en aplicaciones. Esta biblioteca de OCR nos atrajo por numerosas capacidades que establecen parámetros de reconocimiento y proporcionados por los modelos para resolver tareas aplicadas específicas. Vale la pena señalar que la biblioteca es pagada y destinada a uso comercial.

Beneficios:

- bonito configuración simple Reconocimiento de las fuentes deseadas;

- Reconocimiento de texto en tiempo real;

- Configuración fácil y conveniente de los parámetros de reconocimiento;

- La biblioteca puede reconocer códigos de barras y códigos QR;

- Proporciona módulos listos para resolver diversas tareas.

Desventajas:

- baja velocidad de reconocimiento;

- Para obtener resultados satisfactorios requeridos. configuración inicial Fuentes de reconocimiento.

En el curso del análisis realizado para resolver nuestras tareas, nos alojábamos en la API de reconocimiento de texto de Google, que combina alta velocidad en sí misma, ajuste de luz y resultados de alto reconocimiento.

La solución desarrollada por nosotros le permite escanear documentos de papel automáticamente digitalizarlos y guardar en una sola base de datos. La calidad de la información reconocible es de aproximadamente el 97%, lo cual es un muy buen resultado.

Debido a la introducción del sistema desarrollado interno (incluido el procesamiento de documentos, su creación e intercambio entre departamentos, etc.) se aceleró en un 15%.

Me tomó obtener los valores de los números obstruidos. Números robado De la pantalla.

Pensé, ¿y no intenté probar OCR? Probé Tesseract.

A continuación, le diré cómo traté de adaptar Tesseract, ¿por qué entrené? Y lo que sucedió. El proyecto en Hithabe se encuentra un script CMD que automatiza cuánto tiempo es posible el proceso de entrenamiento, y los datos en los que realizé la capacitación. En una palabra, hay todo lo que necesita para entrenar a Tesseract para entrenar algo útil.

Preparación

Clonando el repositorio o descarga archivo ZIP (~ 6MB). Instale Tesserator 3.01 con desde.syta. Si ya no está allí, entonces desde el subdirectorio / distribución del archivo ZIP.

Ir a la carpeta de muestras, corre montage_all.cmd.
Este script creará una imagen final. muestras / Total.png., no puedes iniciar el script, porque Ya lo coloco en la carpeta raíz del proyecto.

¿Por qué entrenar?

Tal vez y sin entrenar el resultado será bueno? Cheque.
./EXP1 - Como está\u003e Tesseract ../TOTAL.PNG TOTAL

Coloque el resultado corregido en el archivo. model_total.txtPara comparar los resultados del reconocimiento. Un asterisco marca los valores incorrectos.

model_total.txt Reconocimiento
defecto
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255

errores de reconocimiento predeterminados

Se puede ver que hay muchos errores. Si observa de cerca, puede ver que el punto decimal no se reconoce, los números 6 y 8 son reconocidos como 5. ¿El entrenamiento ayudará a deshacerse de los errores?

Ejercicio

TENSERACT DE ENTRENAMIENTO Le permite montarlo en reconocer imágenes de textos en el formulario en el que le alimentará imágenes similares en el proceso de reconocimiento.
Usted pasa las imágenes de entrenamiento de Tesseract, corregir los errores de reconocimiento y transmitir estas instrucciones a la Tesseract-Y. Y corrige los coeficientes en sus algoritmos para continuar evitando los errores que encontró.

Para realizar el entrenamiento, desea ejecutar. / Exp2 - entrenado\u003e Train.cmd

¿Cuál es el proceso de entrenamiento? Y en el hecho de que Tesseract procesa la imagen de entrenamiento y las formas llamadas. Cajas de caracteres: resalta caracteres individuales del texto que crea una lista de restringir rectángulos. Al mismo tiempo, hace adivinar qué tipo de símbolo está limitado por un rectángulo.

Los resultados de este trabajo escriben al archivo total.box, que se parece a esto:
2 46 946 52 956 0
7 54 946 60 956 0
3 46 930 52 940 0
3 54 930 60 940 0
3 46 914 52 924 0
9 53 914 60 924 0
6 31 898 38 908 0
2 40 898 46 908 0
5 48 898 54 908 0
0 59 898 66 908 0

Aquí, en el símbolo de la columna de Singel, y en las coordenadas de 2 a 5 columnas de la esquina inferior izquierda del rectángulo, su altura y ancho.

Por supuesto, es difícil editarlo manualmente e incómodo, por lo que las utilidades gráficas que facilitan este trabajo fueron creadas por los entusiastas. Solía \u200b\u200bestar escrito en Java.

Después de la puesta en marcha. / EXP2 - entrenado\u003e Java -jar JTessBoxEditor-0.6JTessoxoxEditor.jar Necesita abrir el archivo. / EXP2 - entrenado / Total.png, el archivo se abrirá automáticamente. / Exp2 - Formado / Total.box y Rectangle Definido en él se superpondrá en la imagen de entrenamiento.

En la parte izquierda, los contenidos del archivo total.box se dan a la derecha. Hay una imagen de entrenamiento. Por encima de la imagen es la línea activa del archivo total.box

Cajas azules representadas, y caja roja correspondiente a la fila activa.

Corregí todos los 5 ki incorrectos en la derecha de 6 ki y 8º, agregó filas con definiciones de todos los puntos decimales en el archivo y guardados en total.

Después de que se complete la edición, es necesario que el script continúe funcionando, debe cerrar el JTESSBOXEDITOR. Además, todas las acciones son realizadas por un script automáticamente sin participación del usuario. El guión escribe los resultados de la capacitación bajo el código TTN.

Para usar los resultados de aprendizaje al reconocer, debe iniciar TESSERACT C KEY -L TTN
./exp2 - entrenado /\u003e tesseract ../TOTAL.PNG Total-Formado TTN

Se puede ver que todos los números comenzaron a ser reconocidos correctamente, pero el punto decimal aún no se reconoce.

model_total.txt Reconocimiento
defecto
Reconocimiento
Despues de entrenamiento
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255
27
33
39
625 05*
9
163
1,740 10*
15
36
45
72
324
468
93
453
1,200 10*
80 10*
152 25*
158 25*
176 07*
97 50*
170 62*
54
102
162
78
136 50*
443 62*
633 74*
24
1,579 73*
1,576 73*
332 23*
957 69*
954 69*
963 68*
1,441 02*
1,635 34*
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459 69*
456 69*
198
61
255

errores de reconocimiento de aprendizaje

Agrandar imagen

Puede aumentar de diferentes maneras, probé de dos maneras: escala y cambio de tamaño

total-escalado.png (fragmento) total-Resized.png (fragmento)
Convertir Total.png Total-Scaled.png -Scale "208x1920" Convertir Total.png Total-Resized.png -Resize "208x1920"

Dado que las imágenes de los personajes aumentaron con las imágenes en sí mismas, los datos de capacitación en el marco del Código TTN están desactualizados. Por lo tanto, entonces reconocí sin una clave -l TTN.

Se puede ver que en la imagen Total-Scaled.png Tesseract confunde a 7-Ku con un 2º, y no confunde resizaje total.png. En ambas imágenes, el punto decimal es correcto. Reconocimiento de imágenes Total-Resized.png es casi perfecto. Solo hay tres errores: la brecha entre los números en los números 21, 114 y 61.

Pero este error no es crítico, porque Es fácil de solucionarlo simplemente eliminando desde las líneas de los espacios.

errores de reconocimiento totales escalados.

errores de reconocimiento de tamaño total.

model_total.txt Reconocimiento
defecto
Reconocimiento
Despues de entrenamiento
total-escalado.png. total-resized.png.
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459.69
456.69
198
61
255
27
33
39
525 05*
9
153*
1,740 10*
15
35*
45
72
324
455*
93
453
1,200 10*
50 10*
152 25*
155 25*
175 07*
97 50*
170 52*
54
102
152*
75*
135 50*
443 52*
533 74*
24
1,579 73*
1,575 73*
332 23*
957 59*
954 59*
953 55*
1,441 02*
1,535 34*
50
75*
155*
21
45*
30
42
105*
125*
144
114
452*
375*
522
50*
240
245*
459 59*
455 59*
195*
51*
255
27
33
39
625 05*
9
163
1,740 10*
15
36
45
72
324
468
93
453
1,200 10*
80 10*
152 25*
158 25*
176 07*
97 50*
170 62*
54
102
162
78
136 50*
443 62*
633 74*
24
1,579 73*
1,576 73*
332 23*
957 69*
954 69*
963 68*
1,441 02*
1,635 34*
50
76
168
21
48
30
42
108
126
144
114
462
378
522
60
240
246
459 69*
456 69*
198
61
255
22*
33
39
625.05
9
163
1,240.10*
15
36
45
22*
324
468
93
453
1,200.10
80.10
152.25
158.25
126.02*
92.50*
120.62*
54
102
162
28*
136.50
443.62
633.24*
24
1,529.23*
1,526.23*
332.23
952.69*
954.69
963.68
1,441.02
1,635.34
50
26*
168
2 1*
48
30
42
108
126
144
1 14*
462
328*
522
60
240
246
459.69
456.69
198
6 1*
255
27
33
39
625.05
9
163
1,740.10
15
36
45
72
324
468
93
453
1,200.10
80.10
152.25
158.25
176.07
97.50
170.62
54
102
162
78
136.50
443.62
633.74
24
1,579.73
1,576.73
332.23
957.69
954.69
963.68
1,441.02
1,635.34
50
76
168
2 1*
48
30
42
108
126
144
1 14*
462
378
522
60
240
246
459.69
456.69
198
6 1*
255

Digitalización de imágenes uno por uno.

OK, ¿qué pasa si necesita digitalizar imágenes una tras otra en modo de lino real?

Intento uno por uno.
./EXP5 - uno por uno\u003e para / r% i en (* .png) Do tesseract "% i" "% i"
¡Dos y números de tres dígitos no están determinados en absoluto!

625.05
1740.10

Digitalización de pequeños paquetes.

¿Y si desea digitalizar imágenes por paquetes por varias imágenes (6 o 10 en el paquete)? Diez veces.
./exp6 - diez en línea\u003e tesseract teninline.png teninline

Reconocido, e incluso sin una brecha entre los 61.

conclusiones

En general, esperaba los peores resultados, porque Las fuentes de trama pequeñas son un caso de límite debido a su pequeño tamaño, distintas granularidad y constancia. diferentes imágenes Un símbolo coincide completamente. Y la práctica ha demostrado que las cifras de inspiración artificial organizada son mejor reconocidas.

La imagen de preprocesamiento tiene un efecto mayor que el aprendizaje. Aumentar con alisado: convertir -resizar ...

El reconocimiento de un número separado "corto" de dos y tres dígitos de números insatisfactorios, debe recopilarse en paquetes.

Pero en general, Tesseract casi se enfrentó a la tarea, a pesar del hecho de que se afila para otras tareas, reconociendo las inscripciones en la foto y el video, las exploraciones de documentos.

Tesseract. - Una plataforma gratuita para el reconocimiento óptico del texto, las fuentes de las que Google presentó a la comunidad en 2006. Si escribe un software para reconocer texto, es probable que tenga que acceder a los servicios de esta poderosa biblioteca. Y si ella no lo hizo frente a tu texto, entonces te queda de una manera, para enseñarlo. Este proceso es bastante complicado y repleto sin obvio y, a veces, directamente con acciones mágicas. La descripción original es. Necesitaba casi un día entero para comprender todas sus profundidades, así que quiero ahorrar, espero que sea una opción más comprensible. Así que para ayudarte a ti mismo y a los demás pasan por este camino la próxima vez más rápido.

0. Lo que necesitamos

  • Tesseract en realidad.
Montaje Esta biblioteca está en Windows (puede descargar el instalador del repositorio oficial) y bajo Linux. Para la mayoría de las distribuciones de Linux, instale Tesseract, simplemente se puede instalar a través de sudo apt-get install tesseract-ocr, Tengo que agregar la fuente de mi sistema operativo elegante de moda:
gedit /etc/apt/sources.list.
deb http://notesalexp.net/debian/precise/ Precise Main
wget -o - http://notesalexp.net/debian/alexp_key.asc
cLAVE APT AÑADIR ALEXP_KEY.ASC
actualización de apt-get
apt-get install tesseract-ocr
  • Imagen con texto para entrenamiento.
Es deseable que fuera un texto real, que luego tendrá que reconocer. Es importante que cada símbolo de fuente se cumiga en el fragmento escaneado sea al menos 5 veces, y preferiblemente 20 veces. Formato TIFF, sin compresión, preferiblemente no multiplano. Entre todos los personajes debe ser claramente distinguibles. Ponga nuestra imagen en un directorio separado y llame en el formulario<код языка>.<имя шрифта>.Exp<номер>.tif La imagen puede no ser una y diferir, solo deberían numerar en el nombre del archivo. Formato Los nombres de los archivos son muy importantes. En los archivos con nombres incorrectos de la utilidad que usaremos, lo juraremos a errores de segmentación, etc. Por definición, asumimos que estudiamos el lenguaje SCC y la fuente Eee. Por lo tanto, llame al archivo con la muestra de escaneo ccc.eee.exp0.tif

1. Crea y edita el archivo de caja.
Para. Para marcar los caracteres en la imagen y configurar sus coincidencias de los símbolos de texto UTF-8 son archivos de caja. Estos son los archivos de texto habituales en los que cada carácter corresponde a una cadena con un símbolo y las coordenadas de rectángulo en píxeles. Inicialmente, usted genera una utilidad del paquete Tesseract:
tesseract ccc.eee.eee.exp0 batch.nochop MakeBox
Recibió el archivo CCC.EEE.EXP0.BOX en el directorio actual. Míralo. ¿Los símbolos al principio de la línea coinciden con los caracteres en el archivo? Si es así, entonces no necesitas entrenar nada, puedes dormir bien. En nuestro caso, lo más probable es que los personajes no coincidan con ninguno de los números esencialmente. Esos. Tesseract con el diccionario predeterminado no reconoció no solo los personajes, sino también los considerados algunos de ellos para dos o más. Tal vez parte de los personajes que nos "pegamos", es decir,. caerá en una caja común y será reconocida como una. Todo necesita arreglar antes de ir más lejos. Trabajo tedioso y minucioso, pero afortunadamente hay una serie de utilidades de terceros para esto. Por ejemplo, usé PyTtrainer-1.03. Abrimos la imagen, el archivo de la caja con el mismo nombre que él mismo se retira.
Pasó medio día ... Con una sensación de profunda satisfacción con el PyteseractTrainer (no olvidó guardar el resultado, ¿verdad?) Y tiene un archivo de caja correcto. Ahora puedes ir al siguiente paso.

2. Entrenamiento Tesseract.
tesseract ccc.eee.eee.eee.eee.eee.ee.eee.evp0 nobatch Box.Train
Recibimos muchos errores, pero estamos mirando algo como "Encontramos 105 buenos blobs". Si la cifra es significativamente mayor que la cantidad de caracteres "estudiados", es decir, la posibilidad de que el entrenamiento en su conjunto haya tenido éxito. De lo contrario, regresamos al principio. Como resultado de este paso, tiene un archivo ccc.eee.eee.exp0.tr

3. Retire el conjunto de símbolos
unicharset_extractor ccc.eee.exp0.box.
Recibimos un conjunto de caracteres como un archivo UNICHARSET en el directorio actual, donde cada personaje y sus características se encuentran en una línea separada. Aquí nuestra tarea verificará y corrija las características de los caracteres (la segunda columna en el archivo). Para letras pequeñas del alfabeto, colocamos un signo 3 por grande 5, para la puntuación de 10 para los números 8, todo lo demás (tipo + \u003d -) marcado 0. Los jeros chinos y japoneses nota 1. Por lo general, todas las señales son correctas, Así que esta etapa es mucho tiempo que no tomará.

4. Describe el estilo de fuente.
Cree un archivo CCC.Font_properties con una sola cadena: eee 0 0 0 0 0 0. Aquí escribe el nombre de la fuente, luego el número 1 o 0 está etiquetado en la presencia de caracteres de estilo (respectivamente, en cursiva Bold Fixed Serif Fraktur) . En nuestro caso no hay estilos, así que dejamos todo en los ceros.

5. Clusters de figuras, prototipos y otras magias.
Para estudios posteriores, debemos realizar tres operaciones más. Puedes intentar entender su significado de la descripción oficial, no estaba antes :). Solo realiza:
shapeClusering -F ccc.font_properties -u unicharset ccc.eee.exp0.tr
... archivo mafetable
y entonces:
mftraining -f ccc.font_properties -u unicharset -o ccc.unicharset ccc.eee.exp0.tr
... obtener archivos ccc.unicharset, inttemp, pffmtable
Finalmente:
cNTRAING CCC.EEE.EXP0.TR.
... obtenemos el archivo normproto.

6. diccionarios
El relleno teóricamente de los diccionarios de palabras de uso frecuente (y palabras en absoluto) ayuda a Tesseract-U para tratar con sus garabatos. Entendiendo los diccionarios, pero si de repente quieres, haz archivos.frecuent_words_list y Words_List en el que ingresa (cada uno de una línea nueva), respectivamente, a menudo se usa y simplemente las palabras del idioma.
Para convertir estas listas al formato correcto, realice:
wordlist2dawg frecuent_words_list ccc.freq-dawg ccc.unicharset

wordlist2dawg words_list ccc.word-dawg ccc.unicharset

7. Último archivo misterioso
Su nombre es unicharambigs. En teoría, debe prestar atención al tesseract sobre símbolos similares. Este archivo de texto en cada fila con separadores de tabulación se describe por pares de cuerdas que pueden confundirse al reconocer. El formato completo se describe en la documentación, no fue necesario y lo dejé vacío.

8. Último equipo
Todos los archivos deben ser renombrados para que sus nombres comiencen con el nombre del idioma. Esos. Solo los archivos permanecerán en el directorio:

ccc.box.
ccc.inttemp
ccc.pffmtable
ccc.tif.
ccc.font_properties.
ccc.normproto.
ccc.shapetable
ccc.tr.
ccc.unicharset.

Y finalmente, realizamos:
combine_TessData CCC.
(!) El punto es obligatorio. Como resultado, obtenemos el archivo CCC.TRINGDATA, lo que nos permitirá reconocer aún más nuestro nuevo idioma misterioso.

9. Revisamos si valió la pena :)
Ahora intentemos reconocer nuestra muestra utilizando el TesSeract ya entrenado:
sudo cp ccc.tretendata / usr / share / tesseract-ocr / tessdata /
tESSERACT CCC.TIF OUTPUT -L CCC
Ahora miramos la salida.txt y nos regocijamos (o se entiende, dependiendo del resultado).

Tesseract-OCR es una biblioteca gratuita para el reconocimiento de texto. Para conectarlo, debe descargar los siguientes componentes:
LEPTONICA - http://code.google.com/p/leptonica/downloads/detail?name\u003dleptonica-1.68-win32-lib-include-dirs.zip.
La última versión de Tesseract-OCR (en este momento es 3.02) - https://code.google.com/p/tesseract-oc/downloads/detail?name\u003dtesseract-3.02.02-win32-lib-include-dirs .ZIP Y CAN \u003d 2 & Q \u003d
Datos de aprendizaje laboral - https://tessract-oc.googlecode.com/files/tesseract-ocr-3.02.rus.tar.gz
Todo se puede recoger a ti mismo descargando códigos de origenPero no haremos esto.

Al crear un nuevo proyecto, conecte las rutas a los archivos lib y h. Y escribe un código simple.
#Incluir. #Incluir. INT Main () (Tesseract :: Tessbaseapi * Mécrano \u003d Nuevo Tessract :: Tessbaseapi (); Printf ("Tesseract-OCR versión:% s \\ n", myoco-\u003e Versión ()); PRUPTF ("versión LEPTONICA:% S \\ n ", getleptonicasion ()); Si (myocr-\u003e init (," rus ")) (FPRINTF (STDERR", no pudo inicializar Tesseract. \\ N "); Salida (1);) PIX * PIX \u003d PixRead ("test.tif"); myocre-\u003e setimage (pix); BAR OUTTEXT; LSTEX (OUTTEXT, MYACR-\u003e GetUTF8TEXT ()); PRUPTF ("OUTPURACIÓN DE OCR: \\ N \\ N"); PRUPTF (OUTTEXT); Méanoco -\u003e Claro (); Myocr-\u003e Fin (); Pixdestroy (& Pix); devolver 0;)

Conecte los archivos LIB:
libteseratoract302.lib.
linept168.lib

Completo - el programa se crea con éxito. Como ejemplo, toma la siguiente imagen:

Ejecutamos el programa para que la información se muestre en el archivo (ya que UTF-8 en la consola CAPO será):
Prueba\u003e A.TXT

Contenido de archivo a continuación:
Tesseract-OCR versión: 3.02
Versión LEPTONICA: LEPTONICA-1.68 (mar 14 2011, 10:47:28)
Salida de OCR:

, Sustituyendo esta expresión en (63), vemos que
La señal de una sola banda titulada es industrial
y la profundidad de la modulación es igual a a.
7 envoltura HO) Señal primaria directamente
Es imposible observar el osciloscopio, por lo que
Cómo esta señal es de banda estrecha, y nosotros
'Caso "claridad" está ausente, pero
Con modulación de una sola banda, estrecha
'Señal de salmón con el mismo sobre, y luego ella
"Y se manifiesta explícitamente y a veces (como en OP
"Caso soleado) hace confusión en las mentes de mal
e investigadores ..
6.4. "Costa Fórmula"
GU.
Con la llegada de OM en libros de texto, café '
Estatys y Monographs defice la cuestión de
¿Qué tan ganador da la transición de la amplitud?
Modulaciones a un solo carril. Se expresó mucho
Opiniones desordenadas. A principios de los años 60 de ame-
El científico rico J. Kostas escribió eso, ver
Literatura de la revista Trebuned en Ohm, él
Descubierto en cada artículo su estimación de energía.
"Borrar ganancias sobre AM-DOS a
Docena multitus. Como resultado, instaló
- Ganar, indicado en cada artículo,
¡Hace aproximadamente (Z-K-S!) DB, donde M-Number CO-'G
\u003e Autores de este artículo.
E, '11 Si esta broma e inexacta, sigue siendo correcta
'La música refleja esa madurez que existió.
; En esos años. Además del hecho de que diferentes autores.
D Subió una comparación en diversas condiciones y una vez-m.
, NOMU determinó las ganancias de la energía, son tan 1
', `Lo mismo permitió muchos errores diferentes. cuatro "
, 'Aquí hay ejemplos de algún razonamiento. ",
1. Con lo habitual, creyendo el portador del poder.



¿Te gustó el artículo? Compártelo