Задача состояла в создании альтернативы популярным сканерам документов, которая не требует от пользователя compromises в виде просмотра рекламы или передачи личных данных на сторонние сервера. Необходимо было разработать приложение, работающее полностью локально на устройстве, но при этом обладающее удобным интерфейсом и качественными алгоритмами обработки изображений.
Целевая аудитория — студенты, офисные сотрудники и все, кто ценит цифровую гигиену и хочет быстро оцифровывать документы (лекции, чеки, визитки) без риска утечки информации.
Я реализовал OpenScan как кроссплатформенное решение, используя фреймворк Flutter (язык Dart), что позволило покрыть сразу две платформы (Android и iOS) из единой кодовой базы.
Технические особенности реализации:
Локальная обработка: Вся логика сканирования, обрезки краев и конвертации в PDF выполняется непосредственно на устройстве клиента. Никакие изображения не загружаются в облако, что гарантирует 100% приватность.
Архитектура: Использование нативных библиотек (Java/Kotlin для Android) через Platform Channels для высокопроизводительной обработки изображений, интегрированных в Dart-код приложения.
Функционал: Реализованы алгоритмы автоматического обнаружения границ документа, коррекции перспективы и улучшения читаемости текста (бинаризация).
UX/UI: Создан минималистичный интерфейс, фокусирующий внимание на контенте. Предусмотрены функции пакетного сканирования, управления качеством экспорта и удобной сортировки документов по дате.
Open Source: Проект распространяется под лицензией BSD-3-Clause, код открыт для аудита сообществом.
Выпущена стабильная beta-версия приложения OpenScan.
Пользователи получили инструмент, который:
— Позволяет создавать качественные PDF-сканы за секунды без интернета.
— Гарантирует отсутствие рекламы и трекеров.
— Подходит как для учебы (оцифровка конспектов), так и для работы (архивация чеков, договоров).
Проект подтверждает мою экспертизу в кроссплатформенной разработке (Flutter/Dart) и умение интегрировать сложные нативные модули обработки данных в мобильные приложения.