Оптическое распознавание документа (OCR, Optical Character Recognition) это превращение изображения в текст. Внутри это не один приём, а последовательность: картинку чистят, выравнивают, разбирают на блоки, строки и символы, каждый символ опознают, а результат проверяют по языку.
Знать эту цепочку полезно по одной причине: большая часть проблем с качеством возникает на первых двух шагах, то есть ещё до того, как система дошла до букв.
Шесть шагов от пикселя до буквы
| Шаг | Что происходит | Что ломается |
|---|---|---|
| 1. Подготовка изображения | Картинку переводят в чёрно-белую, убирают шум, пятна и фон | Неровный свет: часть страницы уходит в тень и текст в ней пропадает |
| 2. Выравнивание | Страницу поворачивают в горизонт и убирают перспективу от съёмки под углом | Сильный наклон и загиб листа: строки перестают быть прямыми |
| 3. Разбор страницы | Лист делят на блоки: колонки, таблицы, колонтитулы, печати | Две колонки склеиваются в одну ленту, таблица читается поперёк |
| 4. Сегментация | Блоки режут на строки, строки на слова, слова на отдельные символы | Слипшиеся буквы, мелкий шрифт, подчёркивание, печать поверх текста |
| 5. Опознание символа | Каждый фрагмент сопоставляют с известными начертаниями: раньше по эталонам, теперь нейросетью | Похожие знаки: ноль и буква О, единица и палочка, русская С и латинская C |
| 6. Проверка по языку | Результат сверяют со словарём и контекстом, для каждого слова считают уверенность | Артикулы и аббревиатуры: словарь здесь не помогает, а иногда мешает |
Первые два шага почти целиком зависят от того, как документ попал в систему. Остальные четыре от самой системы. Отсюда и практический вывод: если результат плохой, сначала смотрят на исходник.
Порядок шагов важнее, чем кажется. Ошибка на раннем шаге не исправляется на позднем: если страницу не выровняли, сегментация разрежет строки неверно, и самая умная модель опознания символов будет работать с обрезками букв.
Поэтому сравнивать системы по «движку распознавания» бессмысленно. Разница между хорошим и плохим результатом на одном и том же документе чаще возникает на подготовке изображения и разборе страницы, о которых в описании обычно не пишут.
Почему один и тот же счёт читается по-разному
| Что влияет | Почему | Что можно сделать |
|---|---|---|
| Разрешение скана | Мелкому шрифту не хватает точек, чтобы отличить похожие буквы | Сканировать документы в 300 точек на дюйм, в режиме «текст», а не «фото» |
| Свет и тень | После перевода в чёрно-белое затемнённая часть страницы становится пятном | Снимать при ровном освещении, без вспышки в упор |
| Угол съёмки | Перспективу приходится выпрямлять, и часть деталей при этом теряется | Держать камеру над документом, а не сбоку |
| Печати и подписи поверх текста | Линии печати сливаются с буквами, и сегментация их теряет | Ничего: с этим работает система, но такие места стоит проверять |
| Сжатие файла | JPEG с сильным сжатием съедает тонкие детали букв | Сохранять сканы в PDF или PNG и не пережимать перед отправкой |
| Копия копии | Каждое повторное копирование и факс добавляют шум и теряют контраст | Просить у контрагента исходный файл, а не скан распечатки |
Если распознавание работает плохо, сначала посмотрите на исходники, а не на систему. Пачка ровных сканов и пачка фотографий под углом это два разных проекта с разным результатом.
Уверенность распознавания: самый практичный показатель
Кроме текста хорошая система отдаёт для каждого слова число: насколько она уверена в прочитанном. Это не общий процент точности из презентации, а оценка по конкретному месту конкретного документа.
Польза прямая. Уверенность позволяет не перепроверять всё подряд, а показать человеку только сомнительные места. Работы становится меньше там, где она бесполезна, и она остаётся там, где действительно нужна.
Поэтому вопрос «какая у вас точность» полезен меньше, чем вопрос «видно ли, где система не уверена, и можно ли поправить это место, не переделывая документ». Про границы технологии в целом мы написали в статье об OCR.
Почему цифры и артикулы ошибаются чаще текста
На шестом шаге система опирается на язык: слово «поставка» она восстановит, даже если одна буква прочиталась плохо, потому что такого слова с опечаткой в словаре нет.
С номером счёта, артикулом и суммой этот приём не работает: любая комбинация цифр допустима, проверить её не по чему. Именно поэтому ошибки чаще всего вылезают там, где цена ошибки выше всего.
Лечится это не распознаванием, а проверками поверх него: контрольная сумма ИНН, календарь для дат, сверка суммы цифрами с суммой прописью, справочник номенклатуры. Такие проверки ловят большую часть ошибок до того, как их увидит человек.
Что происходит после того, как буквы прочитаны
На этом оптическое распознавание заканчивается: дальше есть текст и координаты слов на странице. Что делать с этим результатом, зависит от задачи.
Если нужен поиск по архиву, текста достаточно: он ложится в документ текстовым слоем, невидимой текстовой копией поверх картинки, и архив начинает искаться по содержимому. Подробно об этом в статье о распознавании текста документов.
Если нужны значения — цена, срок, реквизиты — поверх распознавания ставят модели, которые понимают структуру документа. Чем классы технологий отличаются друг от друга, разбираем в обзоре технологий распознавания документов.
В IntDoc оптическое распознавание это первый шаг из четырёх: документ читается построчно, из него вытягиваются поля, предложения приводятся к единому виду и сравниваются, лучшее показывается с обоснованием. Работает со сканами и фотографиями с телефона, результат выгружается в Excel, CRM и Битрикс24.