Tesseract: OCR cadenas hexadecimales y binarias de documentos antiguos

Tesseract: OCR cadenas hexadecimales y binarias de documentos antiguos

Tengo algunas preguntas sobre Tesseract.

Contexto

Actualmente estoy trabajando en un antiguo algoritmo criptográfico de Alemania del Este (RDA) que se desarrolló en los años 80. Implementé el algoritmo en C#. Ahora tengo unas 30 páginas de casos de prueba que quiero comprobar. Como no quiero escribir manualmente cada cadena binaria/hexadecimal, me gustaría realizar OCR con Tesseract (o cualquier software gratuito que funcione).

Problema

Tengo problemas para obtener resultados satisfactorios. Se explica con más detalle a continuación.

Estado actual

(lo siento, no puedo publicar imágenes directamente) El documento se ve así: parte de una pagina/cartas en detalle

Enfoque ingenuo

Con la configuración predeterminada (uso el alemán, no debería importar para las partes relevantes) obtengo resultados miserables.

tesseract -l deu input.tiff output pdf

El resultado pareceeste
Especialmente los ceros causan problemas. Las palabras, letras y unos se reconocen un poco mejor.

Lo que probé (preprocesamiento)

  1. rotar la página
  2. Aumentar contraste
  3. Binarizar la imagen
  4. Erosionar/dilatar la imagen para llenar pequeños espacios entre las letras

El resultado final pareceeste. Hasta donde sé sobre OCR, esto debería mejorar un poco las cosas.

Lo que probé (configuración de Tesseract)

Mi archivo de configuración se parece al siguiente:

load_system_dawg F
load_freq_dawg F
language_model_penalty_non_dict_word 0
language_model_penalty_non_freq_dict_word 0
tessedit_create_pdf T
tessedit_char_whitelist 0123456789ABCDEF

Básicamente le digo a Tesseract que no intente crear palabras útiles a partir de las letras y que solo permita los caracteres necesarios para cadenas hexadecimales.

Como se puede veraquíesto conduce a resultados ligeramente mejores, pero no en todos los casos. Algunos ceros en la última línea se detectan mucho mejor. Entre la F no sucede nada útil.

Jugar con la configuración de Red neuronal versus OCR clásico (--oem 0/1) es una pequeña diferencia. El algoritmo clásico detecta muchos 0 como 9 (nunca como 0), pero de forma mucho más consistente (pero no buena)

Pregunta

¿Qué podría hacer más para mejorar los resultados? Sé que podría entrenar la red neuronal adicionalmente, pero por lo que leí, esto requiere un poco de esfuerzo que me gustaría evitar (construir Tesseract usted mismo, hacer que el material de aprendizaje automático funcione, crear datos de prueba etiquetados, etc.).

¿Algo más?

Gracias por tu ayuda.

información relacionada