Flipkart Grid 2.0. Один из хакатонов, изменивший мой подход ко многим решениям и проблемам. Итак, около месяца назад я и мой друг случайно зарегистрировались на этот хакатон, но по мере того, как мы углублялись в поиск решения, проблема становилась все более интересной и сложной для работы. Думал поделиться своим подходом в блоге, так как это было почти 1,5 месяца работы.

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

Теперь есть несколько разных подходов к этому решению, и главный недостаток, с которым мы столкнулись, заключался в точности распознавания текста и полученного текста. Поэтому следующим важным приемом было изменение подхода. Именно здесь мы начали использовать метод RCNN, чтобы идентифицировать текст с использованием модели CNN и связать его с идеей RNN, чтобы идентифицировать содержимое счета-фактуры, которые связаны друг с другом.

Модель оказалась довольно успешной, но здесь проявился недостаток. Нам нужно было сосредоточиться на приложении, управляемом пользователем, и было немного сложно интегрировать модель вместе с приложением и одновременно поддерживать базу данных. А вот и следующий подход, который мы опробовали.

Последний подход, который мы опробовали и который оказался весьма полезным, был с AWS. Мне всегда было удобно пользоваться AWS, и мне не нужно было многому учиться, кроме отладки лямбда-функций. В следующем разделе основное внимание будет уделено решению, но вы можете найти все это на моем github.

Ссылка github на решение приведена ниже, а все инструкции упомянуты в файле readme.



По сути, мы создали API-решение для FLIPKART, которое можно использовать для очень эффективного извлечения всех данных из счета-фактуры, и оно было настроено с использованием базы данных (DynamoDB) для обеспечения целостности информации и в то же время обеспечивают эффективные и точные результаты. Вышеупомянутое решение сочетается с простым интерфейсом и блокнотом Python, который будет получать все результаты и преобразовывать их в требуемый файл Excel, который затем может быть предоставлен заказчику. Таким образом, практически все данные, которые были в счете-фактуре, преобразуются в таблицу Excel. Решение отличается высокой надежностью, поскольку оно использует AWS и настроено таким образом, чтобы предоставлять пользователю точные и эффективные результаты. Он предоставляет пользователю внешний интерфейс, что является большим плюсом, поскольку пользователю не нужно сталкиваться с трудностями при открытии консоли AWS, а можно просто запустить несколько команд на основе CLI. Этот API легко вызвать из интерфейса командной строки AWS или с помощью библиотеки Python Boto3 и передать либо указатель на изображение документа, хранящееся в S3, либо необработанные байты изображения для получения результатов. В этом решении для обработки счетов используются следующие подходы для обеспечения более надежного комплексного решения.

  • Функции Lambda, запускаемые при загрузке документа в конкретную корзину S3, для отправки заданий анализа документов и обнаружения текста в Textract.
  • Методы шлюза API для запуска отправки заданий Texttract по требованию
  • Асинхронные вызовы API для запуска анализа документов и обнаружения текста с уникальным токеном запроса для предотвращения дублирования отправки.
  • Использование тем SNS для получения уведомлений о завершении заданий Texttract
  • Автоматически запускаемые лямбда-функции постобработки для извлечения фактических таблиц, форм и строк текста, сохраненных в S3 для будущих запросов.
  • Статус задания и метаданные отслеживаются в таблице DynamoDB, что позволяет устранять неполадки и легко запрашивать результаты.
  • Методы шлюза API для получения результатов в любое время без использования Texttract

Шаги для запуска проекта упомянуты в моем репозитории github. Спасибо за чтение. Продолжай учиться.

Ваше здоровье.