Комментарии 13
А не проще забирать паспортные данные через ЕСИА? Там, конечно, подключение очень бюрократизировано, но зато сразу нормальные данные на входе. Или под ваши задачи принципиально нужен скан?
Я бы пробовал сначала задать модели контекст задачи жёстче. Ты распознаёшь паспорт гражданина РФ. Ошибка даже в одной букве или цифре недопустима. Ничего не додумывай и не исправляй по вероятности — если символ не читается, верни null. И я бы вообще убрал из промпта конкретные примеры серии/номера. Похожеу Вас модель начала подставлять пример вместо фактических цифр.
И не будет работать с таким стеком. Проверено на более простой задаче. Сколько гемму не промпть, она неспособна прочесть текст с картинки без галлюцинаций. Tesseract - вообще несерьезно. Это устаревший задолго до LLM бума проект, который неспособен распознать ничего кроме скана черно-белого печатного текста. Кодинг агенты рекомендуют его, ведь в их обучающих выборках много упоминаний.
Возьмите OCR нового поколения, и будет вам счастье. Как пример, GLM-OCR, Paddle-paddle.
Да и вообще, парсить документы со строгим шаблоном при помощи ллм странно. Промышленное качество можно получить только на шаблонах и на механизме, который создаст проекцию каждого пикселя фото на точку шаблона.
За идеи по поводу новых ocr спасибо, обязательно попробую. Просто конкретно мой случай это к сожалению не пиксель в пиксель. Это кривые, косые фоточки сделанные телефоном на бегу
это к сожалению не пиксель в пиксель. Это кривые, косые фоточки сделанные телефоном на бегу
Вот именно для этого проекция пиксель в пиксель и нужна. Никто не говорил, что она будет линейной, и что это будет просто. Но без соответствия «точка А на фото соответствует точке В на шаблоне» промышленного качества, увы, не достичь
А почему кстати реально не правите перспективу кадра с помощью OpenCV?
Ведь реально проще будет. Потом обрезаете по контурам, фильтруете шумы и на выходе у вас получается пусть и не скан, но некое его подобие.
Опять же размер фотографии у всех одинаковый, на его примере определяете масштабирование кадра и подгоняете все снимки под один размер, далее делаете координатную сетку и скармливаете конкретные зоны адекватной OCR
п.с.
Вот чего бы я точно не стал делать - это использовать модель общего назначения, да ещё и с небольшим количеством параметров, без файнтюнинга и доп. претрейна в надежде получить точные данные. Даже Frontier модели которые не заточены конкретно под это не дадут идеальный результат, а уж такие небольшие локальные модели тем более...
Там достаточно хитрый выбор искажений получается:
бабочка (когда края центрального разворота, как бы наверх смотрят)
Трапеция (самое простое)
Бабочку не смог победить, а она самая частая
бабочка (когда края центрального разворота, как бы наверх смотрят)
У самого такой паспорт от ношения в кармане. Ещё и ламинат пленка начала немного отслаиваться, теперь из-за этого нормальную фотку уже не сделать, только если через именно сканер его пропускать, иначе блики ужасные
По поводу бликов, это вообще ужас. У самого паспорт в таком состоянии, что его уже нормально не сфоткать. Во-первых он выцвел сильно, стал бледным, а во вторых ламинат даёт ужасные блики, но ему уже больше 15 лет и была ситуация, когда после дождей он отслоится. Попались хорошие девчонки в МФЦ, смогли его прогреть и склеить, но блики просто жесть.
Ну, к слову, дообучение - опасная штука. Завтра изменится шаблон документа, и будет крайне неприятная ситуация - кейсов под обучение под новый шаблон не существует в природе, а задачи на их распознавание заходят в прод уже сегодня

Я распознал паспорт. Чем я могу это доказать?