Similar presentations:
Распознаем документы с помощью FPN и Tesseract
1. Распознаем документы с помощью FPN и Tesseract
Панченко ИванTelegram: @piaxar
Mail: [email protected]
1
2.
Who are you, again?2015-2019
Бакалавриат Data Science
2018-now
Разработчик машинного обучения
2
3. Глава 1 О проблеме
34.
Описание проблемыПользователь
Электронная подпись
Шаг 1
Шаг 2
Шаг 3
4
5.
Описание проблемыЗаполнить данные в форму
Пользователь
Электронная подпись
Шаг 1
Шаг 2
Шаг 3
5
6.
Описание проблемыРаспечатать и подписать заявление
Пользователь
Электронная подпись
Шаг 1
Шаг 2
Шаг 3
6
7.
Описание проблемыОтправить на проверку
и дождаться одобрения
Пользователь
Электронная подпись
Шаг 1
Шаг 2
Шаг 3
7
8.
Описание проблемыПользователь
Электронная подпись
Шаг 1
Шаг 2
Шаг 3
8
9.
Описание проблемыШаг 1
Шаг 3
Шаг 2
9
10.
Описание проблемыШаг 1
Шаг 3
Шаг 2
10
11.
Описание проблемыШаг 1
Шаг 3
Шаг 2
11
12.
Описание проблемыШаг 1
Шаг 3
Шаг 2
12
13.
Интересные цифрыВремя оператора
на 1 заявление:
2 МИН.
13
14.
Интересные цифрыВремя оператора
на 1 заявление:
2 МИН.
Время ожидания
очереди к оператору:
2-4 ЧАСА
x кол-во ошибок
14
15.
РешениеРаспознаем скан/фото и предупреждаем об ошибках:
• не совпадает дата
• не совпадает номер телефона
• не совпадают реквизиты паспорта
• нет подписи
• …
15
16. Глава 2 О том, как устроена архитектура решения
1617.
ЦелиБыстро для создания
Контролируемо
Поменьше велосипедов
17
18.
Заявление18
19.
ЗаявлениеQR код
Дата
Таблица
Паспортные данные
Блок подписей
+ печать
Телефон
19
20.
End2End1 giant
model
20
21.
End2End – way too heavy1. Долго и сложно создавать
2. Очень сложно контролировать
1 giant
model
21
22.
OCR + rulesOCR
rules
22
23.
OCR + rules – way too unstable1. Низкое качество
2. Сложные и нестабильные правила
OCR
rules
23
24.
QR кодДата
Таблица
Паспортные данные
Блок подписей
+ печать
Телефон
24
25.
QR кодДата
Таблица
Паспортные данные
Блок подписей
+ печать
Телефон
25
26.
ДатаТаблица
Паспортные данные
Блок подписей
+ печать
Телефон
26
27.
PipelineДата
Телефон
Другие данные
ФИО, серия, номер
Text recognition
Segmentation
Есть печать
Есть подпись субъекта
Есть расшифровка
Multilabel classification
27
28.
PipelineДата
Телефон
Другие данные
ФИО, серия, номер
Text recognition
Orientation
Segmentation
Есть печать
Есть подпись субъекта
Есть расшифровка
Multilabel classification
28
29.
PipelineДата
Телефон
Другие данные
ФИО, серия, номер
Text recognition
Orientation
Segmentation
Box
extraction
Есть печать
Есть подпись субъекта
Есть расшифровка
Multilabel classification
29
30.
ТехнологииДата
Телефон
+ Другие
эвристики
данные
для
поворотов
для сегментации
Orientation
Segmentation
Box
extraction
ФИО, серия, номер
Text recognition
Есть печать
Есть подпись субъекта
Есть расшифровка
Multilabel classification
30
31. Глава 3 О граблях, технологиях и озарениях
3132.
Предобработка картинкиСегментация
Распознавание текста
Дата
Телефон
Другие данные
ФИО, серия, номер
Text recognition
Orientation
Segmentation
Box
extraction
Есть печать
Есть подпись субъекта
Есть расшифровка
Multilabel classification
32
33.
Предобработка картинкиСегментация
Распознавание текста
Как сделать поворот картинок?
33
34.
Предобработка картинкиСегментация
Распознавание текста
Как максимально глупо (но очень быстро)
сделать поворот картинки?
34
35.
Предобработка картинкиСегментация
Распознавание текста
Как максимально глупо (но очень быстро)
сделать поворот картинки?
сделать обучающую разметку на глаз
начать с модели (MobileNet), вместо алгоритма
обучать как классификацию на 360 классов
Loss: categorical_crossentropy
35
36.
Предобработка картинкиСегментация
Распознавание текста
Как максимально глупо (но очень быстро)
сделать поворот картинки?
сделать обучающую разметку на глаз
начать с модели, вместо алгоритма
обучать как классификацию на 360 классов
Loss: categorical_crossentropy
Loss (2 градуса разницы) = Loss (45 градусов разницы)
36
37.
Предобработка картинкиСегментация
Распознавание текста
Было
Предсказание
Как максимально глупо поворачивать
картинку?
Метрика: среднее отклонение угла
37
38.
Предобработка картинкиСегментация
Распознавание текста
Вывод:
Иногда самое тупое решение может оказаться неплохим baseline-ом.
P.S. В конечном итоге мы используем Fast Fourier transform (FFT)
38
39.
Предобработка картинкиСегментация
Распознавание текста
Дата
Телефон
Другие данные
ФИО, серия, номер
Text recognition
Orientation
Segmentation
Box
extraction
Есть печать
Есть подпись субъекта
Есть расшифровка
Multilabel classification
39
40.
Предобработка картинкиСегментация
Распознавание текста
FPN – Feature Pyramid Network
https://arxiv.org/abs/1612.03144
40
41.
Предобработка картинкиСегментация
Распознавание текста
FPN:
ну очень быстрый обзор
https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c
41
42.
Предобработка картинкиСегментация
Распознавание текста
FPN:
ну очень быстрый обзор
https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c
42
43.
Предобработка картинкиСегментация
Распознавание текста
Bottom-up:
понижаем разрешение,
увеличиваем семантический
смысл картинки
https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c
43
44.
Предобработка картинкиСегментация
Распознавание текста
Top-down:
восстанавливаем
разрешение картинки
https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c
44
45.
Предобработка картинкиСегментация
Распознавание текста
1x1 свертки:
повторяют смысл skipconnections в ResNet
https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c
45
46.
Предобработка картинкиСегментация
Распознавание текста
Предсказания каждого
слоя скейлятся к нужному
размеру и соединяются в
финальное предсказание.
https://medium.com/@jonathan_hui/understanding-feature-pyramid-networks-for-object-detection-fpn-45b227b9106c
46
47.
Предобработка картинкиСегментация
Распознавание текста
More on segmentation model
Модель сегментации:
• FPN
• Backbone – ResNet,
предтренированный на Imagenet
https://github.com/qubvel/segmentation_models
47
48.
Предобработка картинкиСегментация
Распознавание текста
More on segmentation model
Модель сегментации
• FPN
• Backbone – ResNet,
предтренированный на Imagenet
Input shape: (512, 512, 3)
https://github.com/qubvel/segmentation_models
Output shape:
(512, 512, 7)
6 classes + 1 background
48
49.
Предобработка картинкиСегментация
Распознавание текста
More on segmentation model
Модель сегментации
• FPN
• Backbone – ResNet,
предтренированный на Imagenet
Input shape: (512, 512, 3)
https://github.com/qubvel/segmentation_models
Optimizer: Adam
Loss: bce_jaccard_loss
Metric: IOU-score
Output shape:
(512, 512, 7)
6 classes + 1 background
49
50.
Предобработка картинкиСегментация
Распознавание текста
Spinoff
IoU metric
bce_jaccard_loss
Balanced cross entropy +
Jaccard loss
50
51.
Предобработка картинкиСегментация
Распознавание текста
More on segmentation model
Модель сегментации
• FPN
• Backbone – ResNet,
предтренированный на Imagenet
Input shape: (512, 512, 3)
Augmentations
https://github.com
/albumentations-team/albumentations
Output shape:
(512, 512, 7)
https://github.com/qubvel/segmentation_models
Optimizer: Adam
Loss: bce_jaccard_loss
Metric: IOU-score
6 classes + 1 background
60 epochs
BS: 24
51
52.
Предобработка картинкиСегментация
Распознавание текста
Вывод
Value: 0.9847
52
53.
Предобработка картинкиСегментация
Распознавание текста
Дата
Телефон
Другие данные
ФИО, серия, номер
Text recognition
Orientation
Segmentation
Box
extraction
Есть печать
Есть подпись субъекта
Есть расшифровка
Multilabel classification
53
54.
Предобработка картинкиСегментация
Распознавание текста
Дано:
54
55.
Предобработка картинкиСегментация
Распознавание текста
Мы распознаем текст с помощью
Open Source OCR Engine
OCR – Optical Character Recognition
https://github.com/tesseract-ocr/
55
56.
Предобработка картинкиСегментация
Распознавание текста
Tesseract – очень хорош
56
57.
Предобработка картинкиСегментация
Распознавание текста
Tesseract – очень хорош, но капризен
Detected: <+ 9 322->
57
58.
Предобработка картинкиСегментация
Распознавание текста
Tesseract – очень хорош, но капризен
Detected: + 9 322-
Detected: +7 (937) 322-00-70,
86% -> 96% accuracy
58
59.
Предобработка картинкиСегментация
Распознавание текста
Магия для Tesseract’а
59
60.
Предобработка картинкиСегментация
Распознавание текста
Магия для Tesseract’а
Padding
Scaling
60
61.
Предобработка картинкиСегментация
Распознавание текста
Что ещё полезно знать о Tesseract
• Используйте Tesseract V4, у которого под капотом LSTM
• Смотрите за версиями языковых пакетов, разница в точности распознавания ~ 5%
• Tesseract best – медленнее в 1,5 раза, но + 1,5% точности
61
62.
Предобработка картинкиСегментация
Распознавание текста
Вывод:
Tesseract – на удивление простое в использовании и качественное решение.
Зная о тонкостях работы с ним и используя некоторые трюки, можно
получить стабильное решение для production-а.
62
63. Глава 4: Завершающая
6364.
ИтогиAccuracy so far:
• даты: 98%
• телефоны: 96%
• паспортные данные: 86%
Summary:
• FPN – очень сильная архитектура для подобных задач
• Tesseract – используем аккуратно и радуемся
• иногда странные вещи тоже могут работать
64