Tesseract: OCR шестнадцатеричных и двоичных строк из старых документов

Tesseract: OCR шестнадцатеричных и двоичных строк из старых документов

У меня есть несколько вопросов о Тессеракте

Контекст

В настоящее время я работаю над старым криптографическим алгоритмом из Восточной Германии (ГДР), который был разработан в 80-х годах. Я реализовал алгоритм на C#. Теперь у меня около 30 страниц тестовых случаев, которые я хочу проверить. Поскольку я не хочу вручную вводить каждую двоичную/шестнадцатеричную строку, я хотел бы распознать ее с помощью Tesseract (или любого другого бесплатного программного обеспечения, которое работает).

Проблема

У меня проблемы с получением удовлетворительных результатов. Подробнее об этом ниже.

Текущее состояние

(извините, я не могу напрямую публиковать изображения) Документ выглядит так: часть страницы/письма в деталях

Наивный подход

С настройками по умолчанию (я использую немецкий язык, но это не имеет значения для соответствующих частей) я получаю ужасные результаты.

tesseract -l deu input.tiff output pdf

Результат выглядит такэтот
Особенно нули вызывают проблемы. Слова, буквы и единицы распознаются немного лучше.

Что я пробовал (предварительная обработка)

  1. Повернуть страницу
  2. Увеличить контраст
  3. Бинаризировать изображение
  4. Размывайте/расширяйте изображение, чтобы заполнить небольшие промежутки между буквами.

Окончательный результат выглядит такэтотНасколько я знаю об OCR, это должно немного улучшить ситуацию.

Что я пробовал (настройки Tesseract)

Мой файл конфигурации выглядит следующим образом:

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

По сути, я говорю Tesseract не пытаться составлять полезные слова из букв и разрешать использовать только символы, необходимые для шестнадцатеричных строк.

Как вы видетездесьэто приводит к немного лучшим результатам, но не во всех случаях. Некоторые нули в последней строке обнаруживаются значительно лучше. Между F ничего полезного не происходит.

Игра с настройками Neural Network vs Classical OCR (--oem 0/1) немного отличается. Классический алгоритм определяет много 0 как 9 (никогда как 0), но гораздо более последовательно (но не хорошо)

Вопрос

Что я могу сделать еще, чтобы улучшить результаты? Я знаю, что я мог бы дополнительно обучить нейронную сеть, но, судя по тому, что я прочитал, это требует некоторых усилий, от которых я хотел бы уклониться (создание Tesseract для себя, работа с машинным обучением, создание маркированных тестовых данных и т. д.).

Что-нибудь еще?

Спасибо за вашу помощь.

Связанный контент