Для тех, кто не в курсе - краткий ликбез. Кто в курсе - кусок текста до фразы "по существу" можно пропустить.
С 01.07.2017г. в РФ вступил в силу 54ФЗ. Он предусматривает для определенных категорий розничной торговли (пока не все, например ЕНВД пока освобождены) обязательства прямой он-лайн передачи фискальных чеков в ФНС с использованием т.н. контрольно-кассовой техники (ККТ) или "он-лайн касс". К структуре, формату и данным бумажного варианта фискального чека тоже появились новые требования, в частности - QR-код, который содержит 5 реквизитов. 3 из них - фискальные признаки чека + сумма и дата/время. Т.о. все 5 реквизитов однозначно характеризуют один уникальный чек в разрезе вообще всех чеков. Помимо этого, обязательным, как для он-лайн, так и для бумажного аналога, так же является указание "объектов расчета" - то есть номенклатуры, в общем случае, как правило - это непосредственно товары и услуги. Авансы, кредиты и прочие способы частичной и поэтапной оплаты не берем.
Есть официальное приложение от ФНС - "Проверка чеков". Вот, например, версия для Андроид.
Для регистрации нужен только номер телефона, пароль придет в смс. Приложение сканирует QR и показывает 5 его реквизитов. Далее, по кнопке можно запросить сам чек. По задумке, основная функция приложения - исключительно проверка чеков на корректность (с целью выявления незаконопослушных предпринимателей), тем не менее, варианты экспорта данных тоже предусмотрены. Я рассматриваю экспорт данных с целью дальнейшей загрузки в систему учета личных финансов.
Теперь, по существу.
Итак, наиболее удобный экспорт данных из "Проверки чеков" для дальнейшего парсинга - json. Для учета личных финансов лично я использую 1С Миниденьги, допиленную под себя. Первой версией у меня был бот в Телеграме (который тоже у меня крутится на 1С), которому я отправлял json, а он заносил данные в базу. Трудно, долго, неудобно. Вторая версия была - тот же бот в Телеграме, но ему я уже отправлял сразу фотку QR. Для распознавания использовал вот это. В целом норм, но фотки нужно в высоком расширении, а в Телеграме, в мобильной версии, если прикрепляешь файл сразу с камеры - нет возможности выбрать "не сжимать". Не взлетело.
Погуглив, я нашел определенные спеки, по которым реализовал этот мини-проект. Сканирование использую типовое от 1С, есть косяки, подтупливает, очень чувствительно к картинке, ничего лишнего быть не должно. Когда QR распознался - форма сканирования должна закрываться, так вот - закрывается не всегда. В таком случае - надо нажать кнопку Назад. Если выходит сообщение - "Не удалось получить данные от ФНС" - это подтупливает сервер ФНС, надо просканировать еще раз, обычно со второго раза максимум - норм. Такой же баг есть и в "Проверка чеков".
Есть альтернативное решение сканирования на вот этом внешнем сервисе (собрал под себя, добавил внешние интенты для взаимодействия с 1С). По тестам - не стабильно, работает не на всех устройствах, но сканирует на порядок лучше 1С, отсеивает мусор. Еще минус - надо ставить его как отдельное приложение, для нетиражного некоммерческого решения собирать SO не считаю разумным. Поэтому, это решение не включаю в публикацию. Если кому интересно - конечно выложу.
Выкладываю собранную APK, кому интересны исходники - добавлю. Интересны баги, фичи и предложения по развитию идеи. В константах надо указать номер телефона и пароль из смс (приходит при регистрации в "Проверка чеков" от ФНС).