Какие метрики используются для OCR
Что проверяют
Знаете ли вы, что в OCR качество меряют через расстояние редактирования, а не через «процент совпавших символов», и умеете ли считать метрику на уровне символов, слов и полей документа. Следом часто просят посчитать CER на примере или объяснить, почему он бывает больше 100%.
Как отвечать
Основные метрики распознавания строятся на расстоянии Левенштейна между распознанным текстом и эталоном:
- CER:
(S + D + I) / N, где S замены, D удаления, I вставки, N число символов в эталоне. Из-за вставок CER может превысить 100%; - WER: то же на уровне слов. Обычно он выше CER: одна ошибочная буква портит всё слово;
- точность строки или поля: доля полностью верных строк, а для документов доля верно извлечённых полей, например номера паспорта или суммы. Для бизнеса это часто главная цифра;
- детекция текста: если модель сначала ищет области с текстом, её оценивают отдельно через IoU с разметкой, precision, recall и их гармоническое среднее, как в бенчмарках ICDAR.
Считать удобно библиотекой jiwer или классами CharErrorRate и WordErrorRate из torchmetrics. До подсчёта договоритесь о нормализации: регистр, лишние пробелы, пунктуация, «ё» и «е», формы Unicode. От этого CER меняется заметно.
Суммарный CER по датасету считают как сумму ошибок, делённую на сумму длин эталонов. Среднее по строкам даёт другое число, потому что короткая строка весит столько же, сколько длинная.
Полезна и разбивка ошибок по типам: какие символы модель путает (0 и O, 1 и l), где пропускает строки целиком.
Где спотыкаются
Считают «точность по символам» позиционным сравнением. Один пропущенный символ в начале сдвигает строку, и всё остальное засчитывается ошибкой. Без выравнивания метрика бессмысленна.
Приносят precision и recall для распознавания символов, не определив, что считать истинным срабатыванием. Для распознавания текста стандарт это CER и WER.
Оценивают только общую метрику. Модель с CER 2% может стабильно ошибаться в цифрах сумм, и для обработки счетов это хуже, чем опечатки в тексте.