Распознаем документы с помощью FPN и Tesseract

Содержание

Слайд 2

Who are you, again?

2015-2019
Бакалавриат Data Science

2018-now
Разработчик машинного обучения

Who are you, again? 2015-2019 Бакалавриат Data Science 2018-now Разработчик машинного обучения

Слайд 3

Глава 1 О проблеме

Глава 1 О проблеме

Слайд 4

Описание проблемы

Пользователь

Электронная подпись

Шаг 1

Шаг 2

Шаг 3

Описание проблемы Пользователь Электронная подпись Шаг 1 Шаг 2 Шаг 3

Слайд 5

Описание проблемы

Пользователь

Электронная подпись

Шаг 1

Шаг 2

Шаг 3

Заполнить данные в форму

Описание проблемы Пользователь Электронная подпись Шаг 1 Шаг 2 Шаг 3 Заполнить данные в форму

Слайд 6

Описание проблемы

Пользователь

Электронная подпись

Шаг 1

Шаг 2

Шаг 3

Распечатать и подписать заявление

Описание проблемы Пользователь Электронная подпись Шаг 1 Шаг 2 Шаг 3 Распечатать и подписать заявление

Слайд 7

Описание проблемы

Пользователь

Электронная подпись

Шаг 1

Шаг 2

Шаг 3

Отправить на проверку
и дождаться одобрения

Описание проблемы Пользователь Электронная подпись Шаг 1 Шаг 2 Шаг 3 Отправить

Слайд 8

Описание проблемы

Пользователь

Электронная подпись

Шаг 1

Шаг 2

Шаг 3

Описание проблемы Пользователь Электронная подпись Шаг 1 Шаг 2 Шаг 3

Слайд 9

Описание проблемы

Шаг 1

Шаг 2

Шаг 3

Описание проблемы Шаг 1 Шаг 2 Шаг 3

Слайд 10

Описание проблемы

Шаг 1

Шаг 2

Шаг 3

Описание проблемы Шаг 1 Шаг 2 Шаг 3

Слайд 11

Описание проблемы

Шаг 1

Шаг 2

Шаг 3

Описание проблемы Шаг 1 Шаг 2 Шаг 3

Слайд 12

Описание проблемы

Шаг 1

Шаг 3

Шаг 2

Описание проблемы Шаг 1 Шаг 3 Шаг 2

Слайд 13

Интересные цифры

Время оператора
на 1 заявление:

2 МИН.

Интересные цифры Время оператора на 1 заявление: 2 МИН.

Слайд 14

Интересные цифры

Время оператора
на 1 заявление:

2 МИН.

Время ожидания
очереди к оператору:

2-4 ЧАСА
x кол-во

Интересные цифры Время оператора на 1 заявление: 2 МИН. Время ожидания очереди
ошибок

Слайд 15

Решение

Распознаем скан/фото и предупреждаем об ошибках:
не совпадает дата
не совпадает номер телефона
не совпадают

Решение Распознаем скан/фото и предупреждаем об ошибках: не совпадает дата не совпадает
реквизиты паспорта
нет подписи

Слайд 16

Глава 2 О том, как устроена архитектура решения

Глава 2 О том, как устроена архитектура решения

Слайд 17

Цели

Быстро для создания

Контролируемо

Поменьше велосипедов

Цели Быстро для создания Контролируемо Поменьше велосипедов

Слайд 18

Заявление

Заявление

Слайд 19

Заявление

QR код

Таблица

Дата

Паспортные данные

Блок подписей
+ печать

Телефон

Заявление QR код Таблица Дата Паспортные данные Блок подписей + печать Телефон

Слайд 20

1 giant model

End2End

1 giant model End2End

Слайд 21

1 giant model

End2End – way too heavy

Долго и сложно создавать
Очень сложно контролировать

1 giant model End2End – way too heavy Долго и сложно создавать Очень сложно контролировать

Слайд 22

OCR

OCR + rules

rules

OCR OCR + rules rules

Слайд 23

OCR

OCR + rules – way too unstable

rules

Низкое качество
Сложные и нестабильные правила

OCR OCR + rules – way too unstable rules Низкое качество Сложные и нестабильные правила

Слайд 24

QR код

Таблица

Дата

Паспортные данные

Блок подписей
+ печать

Телефон

QR код Таблица Дата Паспортные данные Блок подписей + печать Телефон

Слайд 25

QR код

Таблица

Дата

Паспортные данные

Блок подписей
+ печать

Телефон

QR код Таблица Дата Паспортные данные Блок подписей + печать Телефон

Слайд 26

Таблица

Дата

Паспортные данные

Блок подписей
+ печать

Телефон

Таблица Дата Паспортные данные Блок подписей + печать Телефон

Слайд 27

Pipeline

Segmentation

Text recognition

Дата

Телефон

Другие данные

ФИО, серия, номер

Multilabel classification

Есть печать
Есть подпись субъекта
Есть расшифровка

Pipeline Segmentation Text recognition Дата Телефон Другие данные ФИО, серия, номер Multilabel

Слайд 28

Pipeline

Segmentation

Text recognition

Multilabel classification

Есть печать
Есть подпись субъекта
Есть расшифровка

Orientation

Дата

Телефон

Другие данные

ФИО, серия, номер

Pipeline Segmentation Text recognition Multilabel classification Есть печать Есть подпись субъекта Есть

Слайд 29

Pipeline

Segmentation

Text recognition

Multilabel classification

Есть печать
Есть подпись субъекта
Есть расшифровка

Orientation

Box extraction

Дата

Телефон

Другие данные

ФИО, серия, номер

Pipeline Segmentation Text recognition Multilabel classification Есть печать Есть подпись субъекта Есть

Слайд 30

Технологии

Text recognition

Multilabel classification

Есть печать
Есть подпись субъекта
Есть расшифровка

Дата

Телефон

Другие данные

ФИО, серия, номер

Segmentation

Orientation

Box extraction

MobileNet

FFT /

Технологии Text recognition Multilabel classification Есть печать Есть подпись субъекта Есть расшифровка
MobileNet для поворотов
FPN для сегментации

Tesseract + эвристики

Слайд 31

Глава 3 О граблях, технологиях и озарениях

Глава 3 О граблях, технологиях и озарениях

Слайд 32

Segmentation

Text recognition

Multilabel classification

Есть печать
Есть подпись субъекта
Есть расшифровка

Orientation

Box extraction

Предобработка картинки

Сегментация

Распознавание текста

Дата

Телефон

Другие данные

ФИО, серия,

Segmentation Text recognition Multilabel classification Есть печать Есть подпись субъекта Есть расшифровка
номер

Слайд 33

Предобработка картинки

Сегментация

Распознавание текста

Как сделать поворот картинок?

Предобработка картинки Сегментация Распознавание текста Как сделать поворот картинок?

Слайд 34

Предобработка картинки

Сегментация

Распознавание текста

Как максимально глупо (но очень быстро) сделать поворот картинки?

Предобработка картинки Сегментация Распознавание текста Как максимально глупо (но очень быстро) сделать поворот картинки?

Слайд 35

Предобработка картинки

Сегментация

Распознавание текста

Как максимально глупо (но очень быстро) сделать поворот картинки?

сделать обучающую

Предобработка картинки Сегментация Распознавание текста Как максимально глупо (но очень быстро) сделать
разметку на глаз
начать с модели (MobileNet), вместо алгоритма
обучать как классификацию на 360 классов
Loss: categorical_crossentropy

Слайд 36

Предобработка картинки

Сегментация

Распознавание текста

Как максимально глупо (но очень быстро) сделать поворот картинки?

сделать обучающую

Предобработка картинки Сегментация Распознавание текста Как максимально глупо (но очень быстро) сделать
разметку на глаз
начать с модели, вместо алгоритма
обучать как классификацию на 360 классов
Loss: categorical_crossentropy

Loss (2 градуса разницы) = Loss (45 градусов разницы)

Слайд 37

Предобработка картинки

Сегментация

Распознавание текста

Как максимально глупо поворачивать картинку?

Метрика: среднее отклонение угла

Было

Предсказание

Предобработка картинки Сегментация Распознавание текста Как максимально глупо поворачивать картинку? Метрика: среднее отклонение угла Было Предсказание

Слайд 38

Предобработка картинки

Сегментация

Распознавание текста

Вывод:

Иногда самое тупое решение может оказаться неплохим baseline-ом.

P.S. В конечном

Предобработка картинки Сегментация Распознавание текста Вывод: Иногда самое тупое решение может оказаться
итоге мы используем Fast Fourier transform (FFT)

Слайд 39

Segmentation

Text recognition

Multilabel classification

Есть печать
Есть подпись субъекта
Есть расшифровка

Orientation

Box extraction

Предобработка картинки

Сегментация

Распознавание текста

Дата

Телефон

Другие данные

ФИО, серия,

Segmentation Text recognition Multilabel classification Есть печать Есть подпись субъекта Есть расшифровка
номер

Слайд 40

Предобработка картинки

Сегментация

Распознавание текста

FPN – Feature Pyramid Network

https://arxiv.org/abs/1612.03144

Предобработка картинки Сегментация Распознавание текста FPN – Feature Pyramid Network https://arxiv.org/abs/1612.03144

Слайд 41

Предобработка картинки

Сегментация

Распознавание текста

https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c

FPN:
ну очень быстрый обзор

Предобработка картинки Сегментация Распознавание текста https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c FPN: ну очень быстрый обзор

Слайд 42

Предобработка картинки

Сегментация

Распознавание текста

https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c

FPN:
ну очень быстрый обзор

U

Предобработка картинки Сегментация Распознавание текста https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c FPN: ну очень быстрый обзор U

Слайд 43

Предобработка картинки

Сегментация

Распознавание текста

https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c

Bottom-up:
понижаем разрешение, увеличиваем семантический смысл картинки

Предобработка картинки Сегментация Распознавание текста https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c Bottom-up: понижаем разрешение, увеличиваем семантический смысл картинки

Слайд 44

Предобработка картинки

Сегментация

Распознавание текста

https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c

Top-down:
восстанавливаем разрешение картинки

Предобработка картинки Сегментация Распознавание текста https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c Top-down: восстанавливаем разрешение картинки

Слайд 45

Предобработка картинки

Сегментация

Распознавание текста

https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c

1x1 свертки:
повторяют смысл skip-connections в ResNet

Предобработка картинки Сегментация Распознавание текста https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c 1x1 свертки: повторяют смысл skip-connections в ResNet

Слайд 46

Предобработка картинки

Сегментация

Распознавание текста

https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c

Предсказания каждого слоя скейлятся к нужному размеру и соединяются в

Предобработка картинки Сегментация Распознавание текста https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c Предсказания каждого слоя скейлятся к нужному
финальное предсказание.

Слайд 47

Предобработка картинки

Сегментация

Распознавание текста

More on segmentation model

Модель сегментации:
FPN
Backbone – ResNet, предтренированный на Imagenet
https://github.com/qubvel/segmentation_models

Предобработка картинки Сегментация Распознавание текста More on segmentation model Модель сегментации: FPN

Слайд 48

Предобработка картинки

Сегментация

Распознавание текста

More on segmentation model

Модель сегментации
FPN
Backbone – ResNet, предтренированный на Imagenet
https://github.com/qubvel/segmentation_models

Input

Предобработка картинки Сегментация Распознавание текста More on segmentation model Модель сегментации FPN
shape: (512, 512, 3)

Output shape:
(512, 512, 7)

6 classes + 1 background

Слайд 49

Предобработка картинки

Сегментация

Распознавание текста

More on segmentation model

Модель сегментации
FPN
Backbone – ResNet, предтренированный на Imagenet
https://github.com/qubvel/segmentation_models

Input

Предобработка картинки Сегментация Распознавание текста More on segmentation model Модель сегментации FPN
shape: (512, 512, 3)

Output shape:
(512, 512, 7)

6 classes + 1 background

Optimizer: Adam
Loss: bce_jaccard_loss
Metric: IOU-score

Слайд 50

Предобработка картинки

Сегментация

Распознавание текста

Spinoff

bce_jaccard_loss
Balanced cross entropy +
Jaccard loss

IoU metric

Предобработка картинки Сегментация Распознавание текста Spinoff bce_jaccard_loss Balanced cross entropy + Jaccard loss IoU metric

Слайд 51

Предобработка картинки

Сегментация

Распознавание текста

More on segmentation model

Модель сегментации
FPN
Backbone – ResNet, предтренированный на Imagenet
https://github.com/qubvel/segmentation_models

Input

Предобработка картинки Сегментация Распознавание текста More on segmentation model Модель сегментации FPN
shape: (512, 512, 3)

Output shape:
(512, 512, 7)

6 classes + 1 background

Optimizer: Adam
Loss: bce_jaccard_loss
Metric: IOU-score

Augmentations
https://github.com
/albumentations-team/albumentations

60 epochs
BS: 24

Слайд 52

Предобработка картинки

Сегментация

Распознавание текста

Вывод

Value: 0.9847

Предобработка картинки Сегментация Распознавание текста Вывод Value: 0.9847

Слайд 53

Segmentation

Text recognition

Multilabel classification

Есть печать
Есть подпись субъекта
Есть расшифровка

Orientation

Box extraction

Предобработка картинки

Сегментация

Распознавание текста

Дата

Телефон

Другие данные

ФИО, серия,

Segmentation Text recognition Multilabel classification Есть печать Есть подпись субъекта Есть расшифровка
номер

Слайд 54

Предобработка картинки

Сегментация

Распознавание текста

Дано:

Предобработка картинки Сегментация Распознавание текста Дано:

Слайд 55

Предобработка картинки

Сегментация

Распознавание текста

Мы распознаем текст с помощью Tesseract

https://github.com/tesseract-ocr/

Open Source OCR Engine
OCR –

Предобработка картинки Сегментация Распознавание текста Мы распознаем текст с помощью Tesseract https://github.com/tesseract-ocr/
Optical Character Recognition

Слайд 56

Предобработка картинки

Сегментация

Распознавание текста

Tesseract – очень хорош

Предобработка картинки Сегментация Распознавание текста Tesseract – очень хорош

Слайд 57

Предобработка картинки

Сегментация

Распознавание текста

Tesseract – очень хорош, но капризен

Detected: <+ 9 322->

Предобработка картинки Сегментация Распознавание текста Tesseract – очень хорош, но капризен Detected:

Слайд 58

Предобработка картинки

Сегментация

Распознавание текста

Tesseract – очень хорош, но капризен

Detected: + 9 322-

Detected: +7

Предобработка картинки Сегментация Распознавание текста Tesseract – очень хорош, но капризен Detected:
(937) 322-00-70,

86% -> 96% accuracy

Слайд 59

Предобработка картинки

Сегментация

Распознавание текста

Магия для Tesseract’а

Предобработка картинки Сегментация Распознавание текста Магия для Tesseract’а

Слайд 60

Предобработка картинки

Сегментация

Распознавание текста

Магия для Tesseract’а

Padding

Scaling

Предобработка картинки Сегментация Распознавание текста Магия для Tesseract’а Padding Scaling

Слайд 61

Предобработка картинки

Сегментация

Распознавание текста

Что ещё полезно знать о Tesseract

Используйте Tesseract V4, у которого

Предобработка картинки Сегментация Распознавание текста Что ещё полезно знать о Tesseract Используйте
под капотом LSTM
Смотрите за версиями языковых пакетов, разница в точности распознавания ~ 5%
Tesseract best – медленнее в 1,5 раза, но + 1,5% точности

Слайд 62

Предобработка картинки

Сегментация

Распознавание текста

Вывод:

Tesseract – на удивление простое в использовании и качественное решение.
Зная

Предобработка картинки Сегментация Распознавание текста Вывод: Tesseract – на удивление простое в
о тонкостях работы с ним и используя некоторые трюки, можно получить стабильное решение для production-а.

Слайд 63

Глава 4: Завершающая

Глава 4: Завершающая

Слайд 64

Итоги

Accuracy so far:
даты: 98%
телефоны: 96%
паспортные данные: 86%

Summary:
FPN – очень сильная архитектура для

Итоги Accuracy so far: даты: 98% телефоны: 96% паспортные данные: 86% Summary:
подобных задач
Tesseract – используем аккуратно и радуемся
иногда странные вещи тоже могут работать