Наш опыт применения AI-технологий для классификации документов для подачи в суд
Как мы создали, обучили и выпустили в свет сервис, использующий технологию машинного обучения для распознавания и классификации юридиечских документов? В этой статье мы расскажем вам об опыте разработки этого решения для автоматизации труда юристов и взыскателей и трудностях, с которыми мы столкнулись.
AI-технологии обработки кредитного досье
Наш сервис реализован с помощью технологии OCR (машинного распознавания текста). И кроме OCR, мы использовали технологии машинного обучения.
Принцип распознавания и классификации выглядит следующим образом:
OCR — первое звено цикла, машинное распознавание текста. Извлекает текст из изображения документа. OCR обучалась на разных примерах документов, составленных по разным шаблонам. При обучении учитывались и шрифты, и их размеры. А также — поворот документа.
NLP (Natural Language Processing) — второе. Анализирует текст и говорит к какому типу документа относится изображение. Обработка естественного языка нужна для извлечения смысла из тех слов и букв, которые распознали алгоритмы OCR.
CNN (Convolutional Neural Network) — третье, и последнее. Проверяет, является ли изображение паспортом в случаях, если NLP не знает, что это за документ. Сверточная нейронная сеть вступает в работу, когда два прошлых метода распознавания текста не эффективны. Например, если текст плохо пропечатан. Такое часто происходит со сканами паспортов.
Принцип работы OCR
NLP в работе сервисов появилась не сразу, до этого использовался другой алгоритм. Почему мы его поменяли, и сделали такой цикл распознавания данных, который по итогу получился?
Путь к NLP и что было до
Как мы в самом начале определяли тип документа при классификации? Первоначальный алгоритм работал по ключевому слову. Он подразумевал за собой нахождение в документе слов, помогающих идентифицировать тип документа. Например, нам нужно понять, является ли документ Согласием на обработку персональных данных. Если программа найдет в тексте слова «Согласие на обработку персональных данных» — то да.
Это работало так:
Файл конвертировали в изображение
Из изображения извлекали текст
В тексте искали одно «ключевое слово»
Но при таком подходе могут возникнуть проблемы. Нам удалось столкнуться с такими трудностями:
Проблема возникнет, если документ состоит более, чем из одной страницы, а ключевое слово находится только на первой. PDF-файлы с кредитными досье бывают длинными и состоящими из всех документов одновременно, и тогда программа определит тип неправильно.
Если в документе встречается много одинаковых ключевых слов на разных страницах, и при этом — это разные документы, то программа тоже спотыкается.
Неточное извлечение OCR — это тоже большая проблема.
Чтобы избежать их, нужно выделить «ключевые слова» для каждой страницы документа и сделать так, чтобы python мог отличить один класс от другого, даже если у них есть пересечениях в ключевых словах.
Плюсуем к этому неточность OCR, которая может извлекать неправильный текст: пропустить букву, поменять «О» на »0», или что-то не увидеть… И «ключевые слова» уже не сработают.
Да, эти проблемы можно решить извлечением текста из самого PDF-файла и создать регулярное выражение для каждого «ключевого слова», но это очень долго, и от неточности OCR не спасает. Да и извлечь текст из всего PDF файла не всегда возможно, поскольку там могут встречаться фотографии и данные в других форматах.
И по итогу мы внедрили в работу продукта NLP. Что поменялось?
NLP (Natural Language Processing) — это более развитый вариант поиска по «ключевым словам». Модель преобразует текст документа в числовой формат, где каждое число указывает на важность определенного слова или фразы. Как это работает? Примерно как на картинке.
Модель обучается на этих числовых значениях, изучая, какие слова и фразы чаще встречаются в документах каждого типа. Таким образом и идет обучение для определения конкретных типов документов.
Когда модели приходит документ на классификацию, она его текст преобразует в числа и предсказывает вероятность того, к какому типу документов относится именно этот, основываясь на обученных весах.
То есть с помощью NLP мы оцениваем сразу все слова в документе, а не ищем конкретные как в поиске по «ключевым словам».
Остальные проблемы, с которыми пришлось столкнуться: как связать технологии воедино, и извлекать данные из паспортов?
Помимо этого, основных сложностей в процессе разработки продукта было две — это выбор правильных технологий и связывание их воедино, чтобы получалась синергия, а также распознавание текста в паспортах.
Первую проблему мы решили посредством различных тестирований, и на выходе мы получили достаточно сложный продукт с множественной каскадной архитектурой. Какие-то блоки вышли монолитными, где-то использовались микросервисы.
Почему так вышло? Внутри нашего продукта существует два сервиса — один из классификации документов, а другой — для извлечения атрибутов из них. Хоть сейчас мы и говорим только о первом, второй может работать вместе с ним, если это нужно для выполнения конкретных задач.
На этапе распознавания текстов из паспортов иногда возникали проблемы, поскольку там не такая ровная печать, как в других документах. Для распознавания плохо пропечатанного текста мы стали использовать CNN (свёрточную нейронную сеть) — она распознает конкретные пиксели и отсутствие или наличие на них определенного цвета. А если у одной нейросети не получается распознать текст, то мы пробуем воспользоваться другой.
У CNN следующий алгоритм работы:
Свёртка: Сеть применяет фильтры к изображению, выделяя ключевые признаки, такие как текстовые области, логотипы и печати.
Подвыборка: Сеть уменьшает размер данных, сохраняя только самые важные из выделенных признаков.
Классификация: На основе этих признаков сеть определяет, к какому типу относится изображение документа.
Принцип работы сверточной нейронной сети
Но какое-то время мы не могли найти параметры для CNN. Мы перебирали такие параметры, как свертка, ядро, размер изображения и некоторые другие. По итогу удалось достичь 96% точности изображения — до этого мы показывали результат в 89%.
Разработка и первые тестирования
По ходу разработки мы перепробовали 5 разных алгоритмов машинного обучения, прежде чем нашли подходящий. Также, мы постоянно меняли и настраивали его гиперпараметры, чтобы подобрать максимально универсальные настройки под разные виды входящих документов досье с разным качеством.
Аналогичный процесс был при выборе, дообучении и использовании алгоритмов распознавания фото и изображений с помощью алгоритмов нейронных сетей. В конце тестов мы остановились на использовании уникального алгоритма, который с одной стороны давал качество в 95–99% точного распознавания документов досье, а с другой — мог обучаться на новый тип документов в течении 1–2 дней.
Что у нас получилось создать
Сейчас мы продолжаем активно развивать наш продукт и добавлять в него новые функции. На выходе, после всех доработок и тестирований нам удалось добиться следующего результата по сравнению с ручной обработкой документов: время обработки кредитных досье снизилось от 10–20 минут до 1–2 минут, а процент ошибок в определении видов документов уменьшился с 10–20% до 1–2%.
Каких-то особенных сложностей с внедрением OCR и распознаванием юридических документов у нас не возникало, поскольку они — это тот же текст, только оформленный по определенным правилам. Программа умеет с практически полной точностью распознавать их, потому что мы ее долго обучали именно на тех документах, которые нужны юристам и взыскателям в работе.
А еще недавно мы начали работу над тем, чтобы наш сервис мог выполнять задачи по классификации и подготовке документов для работы с электронной исполнительной надписью нотариуса. Основной процесс работы такой же, как и при классификации досье для подачи в суд, но виды документов немного отличаются.