Цель проекта - разработка программного модуля для анализа документов, подтверждающих индивидуальные достижения, который позволит автоматически извлекать важную информацию из отсканированных документов и формировать из нее таблицу.
Следующая информация из документов такого типа позволит подтвердить валидность документа, его принадлежность автору, а также позволит оценить значимость документа:
- Дата получения
- ФИО владельца
- Тип документа
- Причина получения
- Место, которое занял владелец
При разработке проекта были сформулированы следующие задачи:
- Сбор датасета. В открытых источниках нет датасета с размеченными документами, подтверждающими индивидуальные достижения, поэтому принято решение собрать и разметить его самостоятельно.
- Дообучение модели
LiLT
. В рамках исследования выбрана модель nielsr/lilt-xlm-roberta-base на основе токенизатора модели FacebookAI/xlm-roberta-base. Выбор данного стека позволяет использовать проект в коммерческих целях, так как модели распространяются под лицензиейMIT
. - Построение инференса модели, внедрение OCR. В качестве алгоритма OCR выбран Yandex Vision OCR.
Датасет PIAD
(Parsing Individual Ahievement Documents) включает в себя 215 отсканированных документов. Данный набор состоит из личных документов автора, документов, которыми поделились друзья и коллеги, и документов, найденных в открытых источниках.
Разметка проводилась с помощью удобного инструмента ubiAI
Note
PIAD не выложен в открытый доступ, так как некоторые элементы содержат персональные данные.
Перед дообучением модели требуется привести датасет в формат, подходящий для обучения из формата, получаемого с ubiAI. За предобработку данных отвечает скрипт preprocessing_data.ipynb.
Скрипт finetuning_lilt_model_kgl.ipynb отвечает за дообучение модели на платформе Kaggle.
- F1-score для всех сущностей - 0.877
- F1-score для сущностей без
Причина получения
- 0.927
Скрипт inference_kgl.ipynb отвечает за инференс алгоритма на платформе Kaggle с использованием Yandex Vision OCR
. В данном скрипте можно увидеть пример работы алгоиртма на нескольких документах из валидационной выборки и итоговую таблицу в виде pd.DataFrame.