Как разделить чек по фото

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

    Разделить чек по позициям честнее, чем поровну. Но только если кто-то готов вбить двадцать три строки в телефон – а у нас за вечер в ресторане чеки с 20+ позициями были нормой. Обычно не готов никто, поэтому счёт делят поровну и кто-то переплачивает.

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

    Как чек превращается в список позиций

    Технология называется OCR – распознавание текста на изображении. Для чеков она делает больше: мало прочитать символы, надо понять, где название блюда, где количество, где цена, а где итог.

    Снимок сначала разворачивается по EXIF – иначе чек, сфотографированный боком, боком и уедет. Потом модель разбирает строки. На выходе список: название, количество, цена. Плюс итог, чтобы было с чем сверить.

    Экран Пополамы с распознанным чеком из кафе в Барселоне: 17 позиций на 220,40 евро, слева исходные названия по-испански, справа переведённые на русский
    Слева — как позиции напечатаны в чеке, справа — после перевода. Валюта подтянулась с фото сама.

    Что распознаётся уверенно

    Печатные кассовые чеки из ресторанов, кафе и магазинов – основной сценарий, и на них всё работает хорошо: названия позиций, количество, цены, сумма по строке и итог.

    Отдельно про поездки: распознаётся ещё и валюта, а названия позиций на незнакомом языке переводятся прямо при сканировании. В Японии это оказалось важнее, чем мы думали – читать чек из магазина иероглифами так себе развлечение.

    Где ошибается – и это нормально

    Ни одно распознавание не даёт стопроцентной точности. Относитесь к результату как к черновику, который почти всегда верен.

    Чаще всего виновата не модель, а фотография: чек на тёмном столе, снятый под углом, с бликом поперёк колонки цен. Лента из супермаркета на полметра либо не влезает в кадр, либо превращается в серую полосу – такой чек лучше снять частями.

    Из содержимого сложнее всего даются весовой товар вида «0,412 кг × 899,00» и отдельные строки скидок. Рукописные счета распознаются заметно хуже печатных – их придётся поправить руками.

    Проверка за полминуты

    Не надо перечитывать все позиции. Достаточно сравнить итог в приложении с итогом на чеке.

    Сошлось – можно раскладывать по людям. Разошлось – ищите точечно, почти всегда виновата одна строка. Поправить одну быстрее, чем вбивать двадцать три.

    Сверяйте итог, а не позиции. Итог – это контрольная сумма всего чека.

    Как снимать, чтобы распозналось с первого раза

    Расправьте чек на ровной поверхности, сгибы съедают строки. Снимайте сверху, а не под углом: перспектива сильнее всего искажает колонку цен. Следите, чтобы тень от телефона не падала на чек. Кадрируйте по краям, без половины стола.

    Какие форматы подходят

    То, что реально лежит в галерее телефона: JPEG, PNG, WebP, HEIC и HEIF с айфонов, а также PDF – если чек пришёл из доставки или почтой. Конвертировать заранее ничего не нужно.

    Что дальше

    Распознанный чек – ещё не ответ на вопрос, ради которого всё затевалось. Нужно не «сколько стоил ужин», а «кто кому сколько переводит».

    Поэтому после раскладки считается общий баланс: встречные долги схлопываются, и вместо шести переводов по кругу остаётся один-два. Особенно заметно это в поездке, где чеков набирается несколько десятков и платят их по очереди разные люди.

    Частые вопросы

    Какие чеки распознаются по фото?
    Печатные кассовые чеки из ресторанов, кафе и магазинов распознаются уверенно: названия позиций, количество, цены, итог и валюта. Рукописные счета распознаются заметно хуже – их придётся поправить руками.
    Что делать, если чек распознался с ошибкой?
    Сверьте итог в приложении с итогом на чеке – это контрольная сумма всего документа. Если суммы разошлись, почти всегда виновата одна строка: весовой товар, скидка или позиция, засвеченная бликом. Поправьте её вручную.
    Можно ли загрузить чек в PDF?
    Да. Пополама принимает JPEG, PNG, WebP, HEIC и HEIF с айфонов, а также PDF – если чек пришёл из доставки или по почте. Конвертировать заранее ничего не нужно.

    Читайте также