Восстание машин: Как роботы захватили бухгалтерию
Кнопка — бэк-офис для предпринимателей. Ведём бухгалтерию, решаем юридические вопросы и забираем рутину.
В 2016 году разработчики Кнопки создали много роботов, всего их — 42. Это наши помощники, они забирают на себя рутину в работе бухгалтера: один распознаёт документы, второй их сортирует, третий проводит банковскую выписку. У каждого робота есть имя: Раскукожка, Сортировка, Проводник, есть даже робот Паникёр. Рассказываем, зачем нам помощники с искусственным интеллектом и как они работают.
Техническая вводная
Наши клиенты общаются с нами через веб-приложение или в мобильном приложении на Айфоне или Андроиде. Веб-приложение разработано на платформе .NET. Сначала была Java, но сейчас её почти не осталось. Недавно перенесли приложения в Azure.
Бухгалтеры ведут учёт тысячи клиентских баз в системе 1С. Для хранения баз используем технологию облачной системы 1сFresh, а многочисленные роботы живут кто где — часть в Azure, часть на наших серверах.
Так мы уверены, что все документы, базы клиентов и другие данные в безопасности.
Рассказывает разработчик Кнопки. Почему перешли с Java на .NET:1. Наше приложение в тот момент — это наследие, которое мы получили после 5 лет разработки. Оно создавалось без применения каких-либо инженерных практик. Структура кода и отсутствие его тестирования создавали гигантские трудности в написании новых фич. Чтобы сделать хоть какое-то даже небольшое изменение, мы тратили кучу сил и времени. Кроме того, приложение было спроектировано таким образом, что любые тесты приходилось очень долго и неудобно писать. Модульного тестирования не существовало. Были только интеграционные тесты, которые использовали живую базу. По итогу, все тесты проходили часами.
2. В силу того, что в приложении был один Enterprise и он погонял другой Enterprise, наше приложение очень долго разворачивалось и собиралось. Долго — это до 40 минут. Приходилось очень много времени, чтобы собрать и развернуть приложение после малейшего изменения или чтобы просто посмотреть на то, как выглядит какая-то фича на форме в вёрстке. Появлялись билд-хобби. :)
3. Стало очевидно, что новые фичи мы должны писать в отдельном приложении сбоку. Наших компетенций в .NET в тот момент стало сильно больше — у нас поменялась команда. Команда единогласно признавала, что язык C# намного приятнее Java. Кроме того, в .NET есть такие технологии как Linq, которые позволяют иметь дело не с настоящей базой, а с полноценной её InMemory реализацией.
4. Большая часть нашего приложения работает с 1С. И делаем мы это очень спорным способом через COM API, COM — работает только в Windows среде и .NET имеет нативную поддержку COM-а. То есть у нас всё равно было уже много кода на .NET, и команда видела, что этот код приятнее.
Как было до роботов
1С умеет готовить любую отчётность, но для этого нужно постоянно поддерживать актуальное состояние бухгалтерской базы. Кто-то должен завести в систему первичные документы, импортировать и провести банковскую выписку, создать и провести учётные документы. А ещё исправить ошибки, возникшие во время работы. Это важные задачи, но они занимают много времени.
Например, чтобы обработать банковскую выписку, по каждому платежу нужно определить, к какому виду операции он относится: оплата поставщику, возврат покупателю, снятие наличных, выдача займа контрагенту и так далее. Бухгалтер, зная особенности клиента, точно определит вид операции и правильно проведёт платёж в 1С.
Но каждый обработанный бухгалтером платёж означает, что с ростом клиентской базы придётся увеличивать штат бухгалтеров. Мы посчитали, что будущего с таким подходом у нас не будет.
Решили развивать машинное обучение и создать искусственный бухгалтерский интеллект, чтобы с его помощью автоматизировать ведение бухгалтерии. 90% всех бухгалтерских операций система будет выполнять сама, и лишь в 10% понадобится участие человека.
Как теперь
Андрей — владелец небольшой кофейни в Москве. Каждый день он закупает продукты у поставщиков, кормит москвичей отменной выпечкой и угощает кофе.
Учёт ведёт в iiko, а бухгалтерию доверяет Кнопке. Первичные документы аккуратно собирает и раз в неделю привозит к нам в Московский офис. Мы работаем с первичкой: сканируем, сортируем и отправляем контрагентам. Клиенту документы доступны в облаке, оригиналы храним в несгораемых шкафах, а сканы сразу попадают на конвейер документов.
Первым делом первичку Андрея мы сканируем и получаем pdf со всеми документами в одном файле. Чтобы разделить документы, в работу вступает робот Раскукожка. Он превращает пдфку в 150 джипегов.
Потом робот Сортировщик смотрит на каждый скан и понимает, какой из документов — акт, какой — УПД, а какой — товарная накладная. Он аккуратно сортирует их и кладёт в нужную папку.
Сканы бывают разные. Если документ вверх ногами или лежит на боку, Сортировщик их переворачивает, чтобы человеку было удобно читать.
Внутри Сортировщика живёт две свёрточных нейронных сети — одна для поворота, другая для классификации документов. Для обучения сетей потребовалось 40 тысяч размеченных вручную сканов.
Затем весь текст в документе распознаётся другим роботом. Он определяет название клиента, контрагента, дату, номер и всю фактурную часть. Для распознавания мы пользуемся решением от наших партнёров, которые, в свою очередь, используют софт ABBYY.
И только после этого скан попадает к бухгалтеру:
Бухгалтер проверяет и нажимает кнопку «Сохранить».
Дальше в работу включается робот Проводник, он сохраняет каждый документ в 1С и проводит его.
После этого бухгалтер проверяет все поступления и списания с расчётного счёта компании. Для этого нужна выписка с банковского счёта клиента. Раньше нам приходилось её запрашивать у всех клиентов.
Теперь всё проще. Чтобы получать выписку без участия клиента, мы интегрировались с Альфой, Точкой и Тинькофф банком. Клиентам не нужно заходить в интернет-банк, качать выписку и высылать её бухгалтеру. А в 1С всегда актуальная информация по платежам. Также выписка из этих банков отображается в клиентских приложениях. Остальные банки пока обслуживаются вручную.
Но просто скопировать платёж из банка в 1С недостаточно. Каждый платёж нужно правильно провести — и это тоже делает специальный робот. Для обучения использовались несколько сотен тысяч платежей, проведённых вручную.
Но прежде нам нужно было договориться со всеми бухгалтерами компании, чтобы проводить выписку одинаково. Оказалось, в бухгалтерии присутствует творчество. :)
В итоге, получили точность проведения выписки 97% — это сравнимо с точностью человека.
Когда всё сделано и проверено, бухгалтер Ирина отправляет Андрею готовый отчёт и предварительную сумму налога. Андрей счастлив, заранее знает предварительную сумму налога и может её скорректировать. Как — подскажет бухгалтер.
Что всё это значит?
Использование алгоритмов машинного обучения позволяет нам увеличивать клиентскую базу и при этом не нанимать новых сотрудников.
Для бухгалтеров Кнопки рабочий процесс упрощается и позволяет за короткий срок проверить правильность выполненных операций и что-то поправить, если нужно. Алгоритм самообучающийся, каждое исправление бухгалтера совершенствует процесс и улучшает алгоритм.
Не так давно Минфин прогнозировал замену бухгалтеров на искусственный интеллект и постепенное исчезновение профессии бухгалтера. Не волнуйтесь, совсем без бухгалтеров не останемся, но отбор пройдут явно лучшие. Они и будут управлять роботами.
Мы считаем, это неплохо — зачем нам 5 миллионов бухгалтеров на население в 145 миллионов? Для сравнения, в США при населении в 300 миллионов насчитывается чуть больше миллиона бухгалтеров.
Мы верим, что в ближайшем будущем за счёт искусственного интеллекта качество бухгалтерского и налогового учёта вырастет в разы.
Благодарим за статью Максима Ахмадинурова movemind.
Комментарии (1)
28 апреля 2017 в 13:26
0↑
↓
Наша бухгалтерия традиционно «тяжелее» американской.