В череде серых офисных будней возникла насущная проблема. Есть сканы договоров, содержащие адреса пунктов (заправок) в табличной форме. Необходимо занести названия и адреса в базу, добавив геоданные. Можно сделать вручную, но это не наш метод. На дворе XXI век, автоматизация, да и простую лень никто не отменял. Бесплатные OCR распознаватели справляются плохо, особенно с таблицами, платные — не пробовал, жаба  бухгалтер не позволяет. Что же делать? И тут Qwen спешит на помощь! Скормил лист — вроде неплохо, вот оно счастье! Ан нет, опять «эмпирический опыт». Давайте посмотрим, что получилось, и с какими «когнитивными искажениями» пришлось столкнуться.

«Конница стояла над обрывом. И все было бы хорошо, если бы не одно но…»

Итак, поехали! Загружаем скан договора, содержащего таблицу АЗС с адресами, в формате pdf. Просим: «OCR распознать документ». Готово! Смотрим, что получилось. А получилось, на первый взгляд, прекрасно. Структурированный текст, без артефактов, таблицы можно выгрузить в формате csv или xlsx, из замечаний — фамилии подписантов искажены, как и некоторые слова. Но в целом — вроде все здорово, выгружай и работай дальше! Берем адрес, яндекс карты, и смотрим. Заправка? — заправка, координаты — вот они! Идем дальше. Заправка? — а нет заправки! Смотрим рядом — и рядом нет! Как так то?! Что пошло не так? Сверяем адрес в распознанном тексте с исходником, и …

Слева распознанный текст, справа - исходный
Слева распознанный текст, справа - исходный

Нате вам! Смотрим внимательно. «Ноградская» стала «Логранской»? Бывает. Буква «б» стала цифрой 6 — случается. Но позвольте — «50 лет Пионерии» стала «50 лет Победы» а «Пионерская» — «Комсомольской»?

А что дальше? А дальше еще смешнее.

Слева распознанный текст, справа - исходный
Слева распознанный текст, справа - исходный

Кроме типичных ошибок и интерпретаций типа «Гавриловых → Таврилоповых», «Чудного → Нужного», появилось много странного и настораживающего. Железная дорога стала кольцевой, ПМК стало МУП. А география вообще изменилась! Вместо г.Купино возник г. Куйбышев, Доволенский р‑н Довольное с. стало Здвинский р‑н, с. Здвинское, а р.п. Чистоозерное стал п.г.т. Искитимское (такого вообще нет, есть г. Искитим). Расстояние между этими пунктами не близкое, единственное что их объединяет — это райцентры. И, вишенка на торте — улица Щорса стала улицей Горького (с чего бы?). Попытка вразумить LLM промптами типа «OCR распознавание документа. Распознавать данные в таблицах точно. Если распознается с вероятностью меньше ХХ% ставить знак „!!!!!“» к успеху не привели. Машина стояла на своем.

Ну штош… Попробуем зайти с козырей. Заставим упрямую сыграть в «Поле чудес» — сначала прочитать по буквам, а потом угадать слово.

Рождение новой сущности
Рождение новой сущности

Failed. К Победе добавился Октябрь…

На этом эксперименты пришлось закончить, так как задачи разработать промпт не стояло, а время поджимало. Но некоторые выводы сделать можно.

Векторизация, заложенная в модель, создает видимость «правильности». И, как мы видим, логика распознавания может быть весьма причудливой. Скорее всего, «50 лет Победы» в географических названиях встречается существенно чаще, чем «50 лет Пионерии», а для коммунистического Китая что комсомол, что пионерия — молодежные объединения («Пионерская» → «Комсомольская»), райцентры — это райцентры (какая разница какие, в целом же правильно?). 

Главный же вывод тривиален. При распознавании текстов, особенно содержащих чувствительную информацию, лучше сверять исходник и результат очень тщательно, может даже побуквенно (замена «не» на «но» в юридическом тексте может привести к ошеломляющему результату). А уверенность машины в своей правоте — разве не аналог эффекта Даннинга — Крюгера?

P. S. Остается загадкой — чем же комдив Щорс так не угодил?

Комментарии (6)


  1. maedv
    01.11.2025 05:44

    Файнридеру тоже доверяю с трудом, активный словарь подставляет аналогичные чудеса


  1. alan008
    01.11.2025 05:44

    У DeepSeek недавно вышла новая модель для OCR. Насчет качества ничего не скажу, не пробовал.

    https://huggingface.co/deepseek-ai/DeepSeek-OCR


  1. Tzimie
    01.11.2025 05:44

    Один раз я ехал в гости на улицу Гагарина, а приехал на Космонавтов в тот же дом и квартиру


  1. sshmakov
    01.11.2025 05:44

    Похоже, что первичный OCR надо делать другим инструментом, не нейросетью или хотя бы не этой нейросетью. А потом делать исправление ошибок, сверку по ФИАС.


  1. KonstantinTokar
    01.11.2025 05:44

    То же при переводе некоторых текстов - вылезают дикие фантазии. Причём текст выглядит стройным и осмысленным, проверить результат сложно.


  1. AdrianoVisoccini
    01.11.2025 05:44

    Но позвольте — «50 лет Пионерии» стала «50 лет Победы» а «Пионерская» — «Комсомольской»?

    Пионеры победили, в честь этого их приняли в комсомол. Вроде все логично, не понимаю претензий