TGViewer
Agentic World Agentic World @anti_notes · 1.21K subscribers
Post #89 1.11K
Последний пост был написан больше месяца назад - и это потому что я...отдыхал 🤩👍

Отпуск в 3 недели это страшная штука - с одной стороны ты токенмаксишь по полной с пивасиком на море, с другой - после выхода сразу пришлось нырнуть в работку, подзабив на канал. Крутого контента - вагон, отписываться рано! 🤙

Исправляюсь 🫡

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

Для построения хорошего OCR есть два подхода - классика и VLM (то есть, vision-ллмка). Оба подхода хороши, но механизмы работы у них разные и оттого природа ошибок - тоже.

Классический OCR обычно разделяет задачу на несколько этапов: предобработка, поиск областей текста, выделение строк и распознавание последовательности символов. На последней стадии движок преобразует изображение строки в последовательность символов, опираясь прежде всего на их визуальную форму. Любой символ (типа буквы "А") - это на самом деле абстракция, у которой есть конкретное написание в разных шрифтах, и вот конкретное написание, состоящее из разных черточек-палочек, называется глифом. l, 1 и I, а также 0 и О - могут быть слабоотличимы в разных шрифтах, и движок распределяет вероятность между несколькими похожими вариантами.

И главный плюс OCR - он говорит, "бро, я тут вижу плохо". Вокруг этого появилась куча всего - словари, эвристики, координаты и многое другое. Но главный принцип - классика не понимает документ, а аккуратно его замеряет и оцифровывает. Дальше - сами.

У VLMки механика совершенно другая.

Изображение превращается в сетку патчей, каждый из которых кодируется в вектор — визуальный токен. Для трансформера слово и кусок изображения - объекты одного типа. Все эти патчики отправляются в трансформер и вот здесь благодаря механизму внимания открывается самая большая магия.

Когда мы дописываем промпт "посмотри в шапку документа", то это может сузить задачу и модель действительно может справиться с этим лучше. При этом, на выходе по-прежнему генерация - а значит, вероятностное распределение того, что МОЖЕТ здесь быть. Как следствие - периодическая уверенная ложь, которую не отличить от правды.

Если попытаться свести к выводу, то:

- OCR не видит документ в привычном понимании, он в первую очередь считывает визуальные признаки текста и выдает локальную уверенность в результате

- VLM "видит" документ целиком - может учитывать раскладку, структуру, соседние поля и смысл - но ей не всегда хватает силенок увидеть все идеально. А когда чего-то не увидит - МОЖЕТ исказить реальность ̶т̶.̶е̶.̶ ̶н̶а̶п̶и̶з̶д̶и̶т̶ ̶к̶а̶к̶ ̶л̶ю̶б̶а̶я̶ ̶л̶л̶м̶к̶а̶. И это главная проблема VLM в распознавании документов - ее уверенность не отвечает на вопрос "насколько хорошо документ был обработан".

Ну а в реальной жизни - из-за разной природы ошибок, они отлично дополняют друг друга в сложных пайплайнах. VLM разбирает структуру документа и находит нужные поля, а OCR дополнительно за ней перепроверяет все критичное 👍🤩🤩
  • 👍 11
  • 🔥 6
  • 👏 2
  • 🍾 1
  • 👾 1
More from @anti_notes
  1. Sep 18, 2026Пост конференций и полезных ссылок Конфы - я люблю. Послеживаю за расписанием на сайтике e…
  2. Sep 10, 2026А теперь хотелось бы поговорить про важное в эпоху дизрапта разработки продуктов: про скво…
  3. Sep 10, 2026Про deep tech night Конфа крутая! Собственно, как все tech-конфы Яндекса. Организация во в…
  4. Sep 5, 2026Это я еду на «главную tech-конференцию Яндекса» (они сами в рекламе так писали) deep tech…
  5. Sep 3, 2026Когда все-таки приехал в офис на встречу государственной важности, а там… (кручу назад, по…
  6. Aug 31, 2026Стартуем неделю с крутейшей темы: глубокий разбор того, как работает текстовый вотермарк в…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →