🔥
Image Understanding (
box_2d)
в Gemini - недооцененная суперсила для OCR и не только
Короче, как я перепробовал почти все и пришел к простому. Недавно работал над задачей: нужно было извлекать данные из документов (инвойсы, ID карты, чеки), причем не просто текст вытащить, а конкретные поля и обязательно показать пользователю откуда именно взяли каждое поле. То есть полноценный grounded extraction с визуальной верификацией.
Перепробовал кучу всего, включая OCR-движки и YOLO модели - все не то: или работает с узким набором доков, или вытаскивает все подряд, или надо дообучать.
И тут я вспомнил про фичу Gemini, которую использовал в других кейсах - Image Understanding с 2D Bounding Boxes. Удивился
насколько это работает лучше всех предыдущих решений. Быстрее, точнее и вполне недорого (особенно с Flash).
Смотрите, большинство vision-моделей могут описать что на картинке. GPT, Claude, другие vision модели - все они видят текст, объекты и понимают контекст. Но Gemini делает больше: он может показать где именно на изображении находится то, что он видит. С точностью до пикселя.
В промпте надо упомянуть необходимость извлечения box_2d контуров и получаете не просто текст, а JSON с координатами каждого поля:
{
"box_2d": [245, 156, 289, 487],
"label": "DOCUMENT_NUMBER",
"value": "AB123456"
}
Координаты нормализованы от 0 до 1000, формат [ymin, xmin, ymax, xmax]. Дальше простая геометрия - и ты можешь наложить эти боксы на оригинал. Получается интерактивная подсветка: навел на поле в списке - подсветилось на изображении.
Смотрите на видео демку из моего проекта.
Зачем это нужно: операторы могут проверять правильность извлечения прямо на документе, RAG-пайплайны хранят координаты для точных ссылок на источник, QA сразу видит где модель ошиблась, клиенты получают прозрачность - что извлекли и откуда.
Этот пост, кстати, хорошее дополнение к
моему обзору LangExtract.
Технические нюансы
- Важно просить Gemini выдать именно box_2d (она натренирована таким образом): "The box_2d should be [ymin, xmin, ymax, xmax] normalized to 0-1000"
- Structured Outputs + JSON schema с box_2d отлично сочетаются и гарантируют валидный формат
- Flash/Flash Lite модели чаще всего достаточно (всего $0.10/$0.40 за миллион токенов), Pro для сложных отчетов
- Выключайте thinking для spatial задач (thinking_budget=0)
- Ресайзите до 640px по большей стороне (часто - лучший вариант, но зависит от кейса)
- Gemini 2.5+ поддерживает Segmentation Masks - то есть выдает также base64 png с точной формой объекта, полезно для computer vision задач и conversational segmentation типа "подсвети строки где сумма больше $1000"
Use cases за пределами документов: UI/UX тестирование и визуальные регрессии, e-commerce (детекция продуктов, ценников, инвентаря), quality control (дефекты, лейблы, компоненты), робототехника (навигация, захват объектов, инспекция).
Если вы делаете что-то с обработкой документов или изображений где важна локализация - попробуйте
Gemini Image Understanding. Это недооцененная фича которая может сэкономить месяцы разработки и деньги на инфраструктуру.
🔥➕🔁
Обсуждение 23
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram