Я пишу приложение для сканирования чисел из изображения.
Числа используют шрифт OCR-B и могут также содержать символы +
и >
.
Это мое исходное изображение:
Сканирование с использованием Tesseract было не очень хорошим, даже если ограничение персонажа задано указанными символами. Поскольку я не нашел никаких учебных файлов OCRB для Tesseract, я решил сам обучить его.
Я создал этот образ тренировки и сделал из него файл-бокс. Правильный файл окна, все буквы правильно совпадают.
Затем я сделал все шаги описанные здесь, чтобы создать другие необходимые файлы.
Используя этот недавно обученный набор OCR-B tessdata, я получаю довольно хорошие результаты на исходном изображении с одной маленькой ошибкой: все 1
ошибочно принимают за 8
и наоборот. Команда, обрабатывающая изображение, была
$ tesseract esr2c.tif ocrb-esr2c -l ocrb
и выход для исходного изображения был
0800000001456 > 8 00000195731208 8 01050008 023+ 08 0301226 > 20
Если вы замените все 1
и 8
и сравните их с исходным изображением, результат будет правильным (за исключением двух последних букв, которые я могу игнорировать).
Как это могло произойти? Я сделал какую-то ошибку в процессе обучения? Как я могу это исправить?