Наш опыт применения AI-технологий для классификации документов для подачи в суд

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

AI-технологии обработки кредитного досье 

Наш сервис реализован с помощью технологии OCR (машинного распознавания текста). И кроме OCR, мы использовали технологии машинного обучения.

Принцип распознавания и классификации выглядит следующим образом:

  1. OCR — первое звено цикла, машинное распознавание текста. Извлекает текст из изображения документа. OCR обучалась на разных примерах документов, составленных по разным шаблонам. При обучении учитывались и шрифты, и их размеры. А также — поворот документа.

  2. NLP (Natural Language Processing) — второе. Анализирует текст и говорит к какому типу документа относится изображение. Обработка естественного языка нужна для извлечения смысла из тех слов и букв, которые распознали алгоритмы OCR.

  3. CNN (Convolutional Neural Network) — третье, и последнее. Проверяет, является ли изображение паспортом в случаях, если NLP не знает, что это за документ. Сверточная нейронная сеть вступает в работу, когда два прошлых метода распознавания текста не эффективны. Например, если текст плохо пропечатан. Такое часто происходит со сканами паспортов.

Принцип работы OCR

Принцип работы OCR

NLP в работе сервисов появилась не сразу, до этого использовался другой алгоритм. Почему мы его поменяли, и сделали такой цикл распознавания данных, который по итогу получился?  

Путь к NLP и что было до 

Как мы в самом начале определяли тип документа при классификации? Первоначальный алгоритм работал по ключевому слову. Он подразумевал за собой нахождение в документе слов, помогающих идентифицировать тип документа. Например, нам нужно понять, является ли документ Согласием на обработку персональных данных. Если программа найдет в тексте слова «Согласие на обработку персональных данных» — то да. 

Это работало так:  

  • Файл конвертировали в изображение

  • Из изображения извлекали текст

  • В тексте искали одно «ключевое слово»

Но при таком подходе могут возникнуть проблемы. Нам удалось столкнуться с такими трудностями:  

  1. Проблема возникнет, если документ состоит более, чем из одной страницы, а ключевое слово находится только на первой. PDF-файлы с кредитными досье бывают длинными и состоящими из всех документов одновременно, и тогда программа определит тип неправильно. 

  2. Если в документе встречается много одинаковых ключевых слов на разных страницах, и при этом — это разные документы, то программа тоже спотыкается. 

  3. Неточное извлечение OCR — это тоже большая проблема. 

Чтобы избежать их, нужно выделить «ключевые слова» для каждой страницы документа и сделать так, чтобы python мог отличить один класс от другого, даже если у них есть пересечениях в ключевых словах. 

Плюсуем к этому неточность OCR, которая может извлекать неправильный текст: пропустить букву, поменять «О» на »0», или что-то не увидеть… И «ключевые слова» уже не сработают.

Да, эти проблемы можно решить извлечением текста из самого PDF-файла и создать регулярное выражение для каждого «ключевого слова», но это очень долго, и от неточности OCR не спасает. Да и извлечь текст из всего PDF файла не всегда возможно, поскольку там могут встречаться фотографии и данные в других форматах. 

И по итогу мы внедрили в работу продукта NLP. Что поменялось?  

NLP (Natural Language Processing) — это более развитый вариант поиска по «ключевым словам». Модель преобразует текст документа в числовой формат, где каждое число указывает на важность определенного слова или фразы. Как это работает? Примерно как на картинке. 

0fdf266143d211f9741aa1b66066f432.png

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

Когда модели приходит документ на классификацию, она его текст преобразует в числа и предсказывает вероятность того, к какому типу документов относится именно этот, основываясь на обученных весах.

То есть с помощью NLP мы оцениваем сразу все слова в документе, а не ищем конкретные как в поиске по «ключевым словам».

Остальные проблемы, с которыми пришлось столкнуться: как связать технологии воедино, и извлекать данные из паспортов?  

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

Первую проблему мы решили посредством различных тестирований, и на выходе мы получили достаточно сложный продукт с множественной каскадной архитектурой. Какие-то блоки вышли монолитными, где-то использовались микросервисы.

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

На этапе распознавания текстов из паспортов иногда возникали проблемы, поскольку там не такая ровная печать, как в других документах. Для распознавания плохо пропечатанного текста мы стали использовать CNN (свёрточную нейронную сеть) — она распознает конкретные пиксели и отсутствие или наличие на них определенного цвета. А если у одной нейросети не получается распознать текст, то мы пробуем воспользоваться другой. 

У CNN следующий алгоритм работы:

Свёртка: Сеть применяет фильтры к изображению, выделяя ключевые признаки, такие как текстовые области, логотипы и печати.

Подвыборка: Сеть уменьшает размер данных, сохраняя только самые важные из выделенных признаков.

Классификация: На основе этих признаков сеть определяет, к какому типу относится изображение документа.

Принцип работы сверточной нейронной сети

Принцип работы сверточной нейронной сети

Но какое-то время мы не могли найти параметры для CNN. Мы перебирали такие параметры, как свертка, ядро, размер изображения и некоторые другие. По итогу удалось достичь 96% точности изображения — до этого мы показывали результат в 89%.

Разработка и первые тестирования

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

Аналогичный процесс был при выборе, дообучении и использовании алгоритмов распознавания фото и изображений с помощью алгоритмов нейронных сетей. В конце тестов мы остановились на использовании уникального алгоритма, который с одной стороны давал качество в 95–99% точного распознавания документов досье, а с другой — мог обучаться на новый тип документов в течении 1–2 дней.

Что у нас получилось создать

Сейчас мы продолжаем активно развивать наш продукт и добавлять в него новые функции. На выходе, после всех доработок и тестирований нам удалось добиться следующего результата по сравнению с ручной обработкой документов: время обработки кредитных досье снизилось от 10–20 минут до 1–2 минут, а процент ошибок в определении видов документов уменьшился с 10–20% до 1–2%.

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

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

© Habrahabr.ru