/sherlock-docs

Primary LanguageJupyter Notebook

Развертывание

$ docker-compose up -d --build

Откройте браузер по ссылке http://localhost:8020

$ docker-compose exec web /bin/bash
$ python3 manage.py createsuperuser

Создаем пользователя с админскими правами.

###Необходимо разработать веб-приложение простой платежной системы.

Краткое техничкское задание:

Заказчик Государственная инспекция по контролю за использованием объектов недвижимости города Москвы

Задача Автоматизированный анализ архивов фото- и скан- копий технических и контрактных документов. Необходимо распознать множество скан-копий технических и контрактных документов с определением их структурных элементов, классифицировать по заданному набору признаков. Результаты распознавания организовать в виде базы данных с возможностью полнотекcтового поиска и фильтрации по параметрам. Предоставить пользовательские интерфейсы как для работы с полученными результатами, так и для последующего самостоятельного распознавания документов, возможность построения аналитических панелей и отчетов, а также REST API для бесшовной интеграции.

Решение:

  • Django REST Framework - взяли его за основу, так как он очень мощный, гибкий, позволяет легко стандартизировать запросы к базе данных и одновременно создавать RESTful WEB API.

  • PostgreSQL - очень мощный, есть опыт использования в платежной системе. В нашем случае можно было еще использовать Mongo, так как у нас тут куча сдаюлсвязанных данных.

  • Celery - для вынесения фоновых задач, создания транзакций, историй переводов, пополений баланса и т.п. В результате быстрый отклик по HTTP API за счет переноса обработки транзакций с использованием очереди обработки.

  • Redis - распространенный посредник сообщений, который используется с Celery, который является быстродействующим хранилищем данных по типу ключ-значение. Redis также служит хранилищем результатов, поступающих из очередей celery, которые затем извлекаются потребителями очереди.

  • Docker - разделяет приложения на микросервисы для удобства автоматизации и развертывания.

Для расспознавания используем:

Tesseract разработан на основе модели OCRopus на Python, которая была ответвлением LSMT на C ++, называемого CLSTM. CLSTM - это реализация модели рекуррентной нейронной сети LSTM на C ++ с использованием библиотеки Eigen для численных вычислений.

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

Интерфейсы API:

API для добавления и отображения всех загруженных в систему неформализованных документов URL: /ocr/document

Фильры по :
?status= Q | P | C | F 

где:
Q - В очереди
P - В процессе
C - Распознан
F - Не распознан

API для получения детальной информации по загруженному документу. URL: /ocr/document/

Тут можно увидеть следующие данные разбитые постранично,в случае, если множество документ был отсканированно в один файл 
- расспознанный текст,
- классифицированный тип документа 

API распознаных и формализованных документов постранично URL: /ocr/page_document

Фильтры по:
?type_id=<id> -  типа документа (полный список типов и атрибутов в API /ocr/document_type)
?type_name=названию типа документа (полный список типов и атрибутов в API /ocr/document_type)
?doc_page=номер страницы документа
?status= Q | P | C | F 
где:
Q - В очереди
P - В процессе
C - Распознан
F - Не распознан
?text= полнотекстовый поиск по вхождению строки или корня слов в распознанном тексте

API для отображения полного списока типов документов и их атрибутов, для формирования форм фильтрации формализованных данных на фронте. URL: /ocr/document_type

На основе данного API можно формировать формы с выпадающими меню, формами ввода текста и т.д.