studio source reconocimiento open library lector example code caracteres ocr tesseract

ocr - source - reconocimiento de caracteres android



¿Cómo hacer tesseract para reconocer solo números, cuando se mezclan con letras? (7)

Quiero usar tesseract para reconocer solo números. El problema es que tengo una mezcla de números y letras y cuando uso SetVariable("tessedit_char_whitelist", "0123456789")
para cada símbolo tesseract devuelve un dígito incorrecto.

¿Puedo establecer un valor de umbral para que tesseract omita los símbolos con poco parecido?

NOTA: configuro tesseract para que reconozca solo los dígitos, por lo que no hay confusión entre O y 0.


Lo hice un poco diferente (con tess-dos). Tal vez sea útil para alguien.

Entonces necesitas inicializar primero la API.

TessBaseAPI baseApi = new TessBaseAPI(); baseApi.init(datapath, language, ocrEngineMode);

Luego establece las siguientes variables

baseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_SINGLE_LINE); baseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!?@#$%&*()<>_-+=/:;''/"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); baseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, ".,0123456789"); baseApi.setVariable("classify_bln_numeric_mode", "1");

De esta forma, el motor comprobará solo los números.


Lo que hago es reconocer todo, y cuando tengo el texto, saco todos los caracteres excepto los números

//This replaces all except numbers from 0 to 9 recognizedText = recognizedText.replaceAll("[^0-9]+", " ");

Esto funciona bastante bien para mí.


Para tesseract 3, el comando es más simple tesseract imagename outputbase digits según FAQ . Pero no funciona para mí muy bien.

Me vuelvo a probar diferentes opciones de -psm 6 y encuentro que -psm 6 funciona mejor para mi caso.

man tesseract para más detalles.


Para tesseract 3, intento crear un archivo de configuración según las preguntas frecuentes.

ANTES de invocar una función Init o poner esto en un archivo de texto llamado tessdata/configs/digits :

tessedit_char_whitelist 0123456789

luego, funciona usando el comando: tesseract imagename outputbase digits



Reconocer solo los números se responde realmente en la página de preguntas frecuentes de tesseract . Consulte esa página para obtener más información, pero si tiene el paquete de la versión 3, los archivos de configuración ya están configurados. Usted solo especifica en la línea de comando:

tesseract image.tif outputbase nobatch digits

En cuanto al valor de umbral, no estoy seguro de a qué te refieres. Si su entrada es una fuente inusual, tal vez podría volver a entrenar con una muestra de su entrada. Una alternativa es cambiar el umbral de poda de tesseract. Ambas opciones también se mencionan en las preguntas frecuentes.


Si uno quiere hacer coincidir 0-9

tesseract myimage.png stdout -c tessedit_char_whitelist=0123456789

O si uno casi quiere emparejar 0-9, pero con uno o más caracteres diferentes

tesseract myimage.png stdout -c tessedit_char_whitelist=01234ABCDE