Как найти компанию по печати

Попрощайтесь с классическими
сервисами проверки контрагентов

Крупнейший агрегатор данных по компаниям: всё от
реквизитов и отчетности, до контактов и кадровых рисков

Проверка контрагента по ИНН

Например: ООО ВБЦ, 7703406864 или Иванов Иван Иванович

До следующего обновления

Дата последней загрузки

28.05.2023 18:33

Подробно проверим организацию или ИП

Убедитесь в благонадежности контрагента


С помощью сервиса вы получите полную информацию о юридическом лице или индивидуальном предпринимателе. Просто укажите в поисковой строке: ИНН, ОГРН, название, Ф.И.О. директора или адрес.

Сводный отчет из десятков источников


ФНС, ВАС, Росстат, Единый государственный реестр юридических лиц, государственные закупки, арбитражные дела, служба
судебных приставов и десятки других
источников информации.

Изображение сводного отчёта

Зачем проверять контрагента

  1. Убедитесь, что ваш контрагент не привлечет лишнего внимания налоговой инспекции: проверьте декларацию
    по НДС
  2. Поможем с подготовкой детального отчета для ФНС по статье 54.1НК РФ из десятков источников по контрагенту
  3. Получайте push или e-mail уведомления об изменениях в ЕГРЮЛ по вашим контрагентам, партнерам и заказчикам
  4. Индекс финансового доверия поможет грамотно
    оценить риски при сотрудничестве и сфокусироваться
    на работе с благонадежными партнерами

Изображение бизнесмена

Источники информации о юридических лицах и ИП

Более 18 млн данных, 22 проверенных источника, 19 реестров, собранных в одном сервисе!
Мы используем официальные данные, предоставляемые соответствующими государственными органами.

  • Логотип государственной организации

    ФНС


    Сведения из ЕГРЮЛ
    и ЕГРИП и специальных
    реестров ФНС

  • Логотип государственной организации

    Арбитражные суды


    Информация об участии организаций в судебных процессах

  • Логотип государственной организации

    Казначейство


    Сведения об участии в государственных закупках
    по 44, 94, 223-ФЗ

  • Логотип государственной организации

    Росстат


    Бухгалтерская отчетность
    организаций и коды
    государственной статистики

  • Логотип государственной организации

    ФССП


    Данные об исполнительных
    производствах в отношении
    организаций

  • Логотип государственной организации

    ЕГАИС


    Федеральная служба по
    регулированию алкогольного
    рынка

  • Логотип государственной организации

    Роскомнадзор


    Информация о надзоре и
    защите персональных данных

  • Логотип государственной организации

    Росприроднадзор


    Сведения о контроле и надзору
    природопользования и охраны
    окружающей среды

  • Логотип государственной организации

    Ростехнадзор


    Федеральная служба по
    экологическому, технологическому
    и атомному надзору

  • Логотип государственной организации

    Роспотребнадзор


    Федеральная служба по надзору
    в сфере защиты прав потребителей и благополучия человека

  • Логотип государственной организации

    Росздравнадзор


    Данные о соблюдении стандартов
    и порядках организаций,
    осуществляющих медицинскую
    деятельность, контроль за
    лекарствами

  • Логотип государственной организации

    Роспатент


    Федеральная служба
    интеллектуальной собственности

  • Логотип государственной организации

    ФМС


    Федеральная миграционная
    служба

  • Логотип государственной организации

    ТПП РФ


    Торговая промышленная
    палата

  • Логотип государственной организации

    ФНП


    Федеральная нотариальная
    палата

Превращаем большие данные в простые отчеты с помощью ИИ

Искусственный интеллект, который обрабатывает и переводит сложные даннные в простой и наглядный язык инфографики,
индексов и рейтингов — важное отличие ВБЦ от других сервисов проверки организаций.

Скоринг

В основе ВБЦ лежит мощная fintech
платформа, которая повторяет скоринг
(оценку надежности заемщика) банков, что
позволяет собрать наиболее реальное и
полное досье.

Аффилированность

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

Индекс финансового доверия

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

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

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

Рыночное окружение

Оцениваем ситуацию на рынке, тренды и
динамику развития конкурентов,
законодательную среду и даже зарубежный
опыт в каждой проверке контрагента через
сервис ВБЦ.

Образец полного отчета по контрагенту

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

Финансовые риски

“Умный” алгоритм рассчитает
возможные риски от сотрудничества
с контрагентом

Проверки

История проверок “от” и “до” с
расчетом вероятности будущих
проверок налоговой и другими
государственными органами.

Жалобы в ФАС

Будьте в курсе возможных рисков:
покажем архивные и действующие
жалобы в федеральную
антимонопольную службу

Образец документа

Исполнительные производства

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

Присутствие в РНП

Проверка присутствия контрагента в
реестре недобросовестных поставщиков
как в настоящее время, так и в прошлом

И многое другое

Бухгалтерская отчетность, репутация,
проверка по ИНН в ЕГРЮЛ, лицензии,
коды деятельности по ОКВЭД, арбитражи,
связи, история участия в Госзаказа и
десятки других полезных данных

PDF

Помимо прочего, в выписке вы увидите еще более 30 пунктов нужной информации, включая данные, имеющиеся в выписке из ЕГРЮЛ и общую оценку компании с помощью алгоритмов ИИ инейросети.

Отчет, в котором есть все: от базовых до полуконфиденциальных данных

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

История участия в Госзакупках

История участия
в Госзакупках

Даты, сроки, ссылки на тендерную документацию и возможность проверить Заказчика.

Виды деятельности

Виды
деятельности

Убедитесь, что коды ОКВЭД вашего контрагента соответствуют его фактической деятельности.

Уставной капитал и учредители

Уставной капитал
и учредители

Загляните в закулисье — покажем, кто и в каких долях владеет компанией на самом деле.

Общие данные

Общие
данные

Наименование организации, дата регистрации, статус, реквизиты (ИНН, ОГРН, КПП) руководитель и другие данные из ЕГРЮЛ и ЕГРИП.

Исполнительные производства

Исполнительные
производства

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

Финансовая отчетность

Финансовая
отчетность

Сколько, когда и зачем — расскажем о движении всех финансов в организации.

Контакты

Контакты

Юридический адрес, номера телефонов и адреса электронной почты, включая личные.

Жалобы в ФАС

Жалобы
в ФАС

Оградите себя от партнеров, ведущих недобросовестную конкурентную борьбу.

Арбитражные дела

Арбитражные
дела

Будьте в курсе прошлых и действующих судебных разбирательств контрагента.
Реальные истории

Ключевые отличия от других сервисов

  1. Бесплатно

    Мы строим экосистему и зарабатываем не на локальных сервисах, а на их синергии. Безопасность вашего бизнеса не должна монетизироваться.

  2. ИИ и нейросети

    В отличие от агрегаторов данных, мы не просто собираем информацию, а обрабатываем ее в понятные отчеты.

  3. Мобильное приложение TenChat

    Проверка компаний по ИНН или названию, подбор тендеров, мобильный ЭДО и бизнес-чат в вашем смартфоне.

Главная миссия сервисов по проверке контрагентов —
улучшение делового климата

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

Для нас Всероссийский Бизнес Центр это не просто название, а вектор развития: мы хотим обеспечить бизнес полноценной экосистемой, в которой каждый предприниматель сможет чувствовать себя безопасно, а сделки будут проходить без лишней волокиты и на выгодных условиях для всех сторон.

С помощью сервиса проверки компаний, ВБЦ вы сможете уберечь себя от множества проблем с законом, финансовых потерь, опрометчивых решений о сотрудничестве и даже от ненадежного работодателя, если вы – физическое лицо, которому просто нужна работа. Мы тщательно отбираем, фильтруем и актуализируем информацию, которая так необходима в современных
бизнес-реалиях.

Находите клиентов или партнеров

  • Иконка поиска

    Удобный поиск

    Например, вы — субъект МСП. У вас небольшое производство и нужны новые поставщики. Вместо поиска в интернете, вы можете указать регион поиска, вид деятельности и с ходу выбрать надежного партнера.

  • Иконка репутации

    Репутация

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

  • Иконка контактов

    Контакты

    Иногда получение лучших условий требует прямой связи с руководством. Не тратьте время на поиски — у нас вы найдете более 10 млн контактных данных, включая личные.

  • Иконка событий

    События

    Отслеживаем любые изменения более чем в 28 млн компаний и ИП, вне зависимости от того, действующие они или нет. Чтобы избежать сюрпризов, подпишитесь на события партеров.

Лента активности

Организации по регионам

Находите новых партнеров или исследуйте рынок

С помощью нашего сервиса вы сможете самостоятельно оценить конкурентную среду, найти новых клиентов или поставщиков. Просто укажите необходимые коды деятельности ОКВЭД и выберите регион.
Остальное система сделает за вас!

11 206 63615 850 353организацийпредпринимателей

Наш сервис рекомендуют

Часто задаваемые вопросы

Что важно знать о контрагентах

  • Чтобы избежать проблем. Проверка контрагента — важный инструмент любого бизнеса, который хочет избежать налоговых проверок и других проблемы с законом, не говоря уже о банальных мошеннических действиях со стороны недобросовестных контрагентов. Проявляя должную осмотрительность, вы сэкономите миллионы рублей и свои нервы, не говоря уже о возможных проблемах с законом. Самое незначительное, что может случиться — вы столкнетесь со срывом сроков, не получите оплату за услуги или получите звонок из банка о блокировке счета в связи с работой с сомнительной компанией. То, что за длительное время вы не столкнулись с недобросовестной компанией — большая удача, но полагаться на удачу в бизнесе рискованно, и это не тот случай, когда риск оправдан. Поэтому мы рекомендуем уделить всего 5 минут на то, чтобы ввести ИНН, название или адрес компании и получить полную проверку: от выписки из ЕГРЮЛ с печатью и данных из ФНС, до “умной” оценки с помощью алгоритмов ИИ и нейросети.

Рубрикатор

Найти организацию по виду деятельности ОКВЭД 2

Найти предпринимателя по алфавитному указателю

Найти физическое лицо по алфавитному указателю

Найти ПАО по алфавитному указателю

Найти АО по алфавитному указателю

Найти OOО по алфавитному указателю

Найти организацию и ИП по дате присвоения ОГРН/ОГРНИП

Вам всегда поможет персональный менеджер

Подайте заявку, и мы с Вами свяжемся

Перезвоним в течении 15 минут

Поиск печатей в документах

Время прочтения: 4 мин.

Предположим, что имеется цветное изображение формата А4, на котором может быть одна или несколько круглых печатей. Поставим задачу — определить координаты прямоугольников, ограничивающих области изображения с оттисками печати. Эта задача является задачей детекции объектов (object detection), и для её решения можно использовать разные подходы. Применим подход на основе поиска контуров с помощью преобразования Хафа. Это подход удобно использовать, поскольку у нас есть некоторые априорные знания об искомых объектах: круглая форма, преимущественно синий цвет, определенный размер.

Рассмотрим процесс решения поставленной задачи.

Шаг 1. Подключаем библиотеки opencv и numpy.

import cv2
import numpy as np

Шаг 2. Открываем исходное изображение. В качестве примера изображения используем лицензию, выданную Центробанком РФ.

im = cv2.imread('license.jpg')

Шаг 3. Выделяем области искомого цвета. Для этого преобразуем изображение из цветовой модели RGB в цветовую модель HSV (hue-saturation-value, или тон-насыщенность-значение). Если цветовую схему HSV представить в виде круга, где тон определяется углом от 0° до 360°, то можно обнаружить, что тон синей печати находится внутри сектора, приблизительно ограниченного значениями 160° и 280°.

С учетом того, что в соответствии с особенностями библиотеки opencv значение тона лежит в диапазоне от 0 до 180, выбранные нами границы примут значения 80 и 140 соответственно.

Выполняем преобразование изображения к цветовой модели HSV, задаём границы тона, насыщенности и значения, накладываем соответствующую маску на исходное изображение.

hsv = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)
blue_lower = np.array([80, 30, 30])
blue_higher = np.array([140, 250, 250])
mask = cv2.inRange(hsv, blue_lower, blue_higher)
selection = cv2.bitwise_and(im, im, mask=mask)

В результате изображение selection будет содержать только те области, цвет которых соответствует заданным нам ограничениям.

Шаг 4. Преобразуем цветное изображение в серое, затем выполняем сглаживание для коррекции мелких артефактов на изображении.

gray = cv2.cvtColor(selection, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5,5), 2)

Шаг 5. Находим круглые контуры с помощью функции HoughCircles. Предварительно рассчитываем минимальный и максимальный радиусы искомых окружностей в пикселах, а также задаем параметр minDist (минимальное расстояние между центрами контуров) равным диаметру самой маленькой печати. Отметим, что согласно ГОСТ Р 51511-2001, диаметр гербовой печати составляет от 40 до 50 мм, или от 19% до 24% от ширины листа формата А4. С учетом небольшого запаса задаём относительные диаметра печатей от 0,15 до 0,30.

h, w = gray.shape
r_min = int(w * 0.15 / 2)
r_max = int(w * 0.30 / 2)
contours = cv2.HoughCircles(blur, cv2.HOUGH_GRADIENT, dp=1, minDist=2 * r_min)

В результате переменная contours будет содержать перечень координат центров и радиусов всех обнаруженных контуров.

Шаг 6. Составляем список ограничивающих прямоугольников boxes, для чего проходим в цикле по всем обнаруженным контурам, отбираем окружности подходящего радиуса и рассчитываем координаты противоположных углов ограничивающих прямоугольников.

boxes = []
if contours is not None:
    for contour in contours[0]:
        xc, yc, r = np.uint16(np.around(contour))
        if r_min <= r <= r_max:
            x1 = xc - r
            y1 = yc - r
            x2 = xc + r
            y2 = yc + r
            boxes.append([x1, y1, x2, y2])

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

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

Привет, Хабр! Сегодня мы расскажем, как делали в нашей группе анализа данных прототип для уже успешно работающего внутри DLP-системы Solar Dozor движка детектирования графических объектов на изображениях. Покажем это на примере одного его представителя — оттисков печатей на изображениях документов. Вспомним о противоречивых требованиях к решению задачи и очертим бизнес-метрики, определяющие успешное решение. В процессе подберем фильтр наличия печатей из арсенала компьютерного зрения, сравним подходы к детектированию объектов и поговорим о популярных движках CNN, SIFT и их вариациях. А также поведаем об интересных находках в части создания датасетов. Здесь, как оказалось, немало места для творчества и экспериментов. В общем, запасайтесь попкорном.

Иллюстрация 1: кадр из м/ф «Рик и Морти»

Иллюстрация 1: кадр из м/ф «Рик и Морти»

Оглавление

  1. Зачем распознавать печати?

  2. Что, кстати, хочет пользователь?

  3. Немного общей теории

    1. Классификация

    2. Детектирование

    3. Сегментация

  4. Алгоритмы, алгоритмы, а я маленький такой

  5. Что с датасетами?

    1. Сбор данных для задачи «Любая печать»

      1. Поисковики

      2. Kaggle

      3. Госзакупки

    2. Данные для задачи «Моя печать»

  6. Обучение

    1. Технические аспекты

    2. Обучение оптимальной модели для задачи «Любая печать».

      Немного простой теории

    3. Выбор алгоритма для задачи «Моя печать»

  7. Комплексное решение

  8. Попробуем подвести итоги и сделать выводы

  9. Источники литературы

Зачем распознавать печати?

Печать используется для подтверждения подлинности документа, а если быть точнее – подлинности подписи должностного лица. Часто заверенная печатью информация должна быть доступна только определенным лицам и ни в коем случае не должна выходить за пределы компании. Если нарушаются границы, в пределах которых должен  «путешествовать» документ, важно как можно раньше обратить на это внимание.

Чтобы детектировать печати, надо понять, какими они бывают. Выделяют три вида печатей: гербовые, приравненные к гербовым и простые. Гербовые отличаются от всех остальных наличием изображения герба РФ и используются в государственных органах власти. Приравненные к гербовым печати используются коммерческими фирмами или индивидуальными предпринимателями. Они похожи на гербовые, но содержат логотип компании или ФИО частного предпринимателя. Для этих двух видов определены свои требования (в отличие от простой печати). Последняя не содержит в себе какого-либо логотипа и используется она обычно для документов, подтверждение подлинности которых не является критичным. Таких печатей в компании может быть несколько, а количество гербовых или приравненных к ней ограничивается одной.

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

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

    Эта задача предполагает возможность предобучения на хорошем датасете модели распознавания и пользователю решения уже не нужно будет заморачиваться с обучением.

    Назовем эту задачу для простоты «Любая печать».

  2. Вторая задача – находить экземпляры печати какой-то конкретной организации. И решается она иначе.

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

    Будем называть эту задачу «Моя печать».

«Любая печать» –Распознавать любую печать

«Моя печать» – Распознавать конкретную (заданную) печать

Датасет: учебная выборка

Не ограничена

Ограничена одним примером

Датасет: тестовая выборка

Не ограничена

Классификатор

Бинарный

Бизнес польза

Находит любые заверенные документы.
Пользователь применяет предобученную модель решения из коробки

Находит документы, заверенные конкретной организацией.
Можно отличить важную печать от неважной

Минусы для пользователей

Нельзя отличить важные печати от неважных

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

Таблица 1: Различие решаемых задач «Любая печать» и «Моя печать»

Что, кстати, хочет пользователь?

Иллюстрация 2: Обложка книги «Цветик-семицветик», В.Катаев

Иллюстрация 2: Обложка книги «Цветик-семицветик», В.Катаев

Сами эти задачи, конечно, не свалились с потолка. Запрос на них пришел к нам в группу анализа данных от владельца продукта. С ним-то и определялись основные критерии хорошего решения задач. Причем у нас в группе анализа данных используется Lean DS в качестве подхода управления задачами. И важная составляющая в нем – это определение связи: бизнес выгода – ML метрики.

Мы определили бизнес-метрики и связанные ML-метрики:

  • Пользователь (аналитик безопасности) за рабочий день может обрабатывать до 1000 артефактов и не готов тратить более 10 минут на обработку ложных срабатываний, что говорит о требовании к высокой точности. Мы выяснили, что среднее время работы в системе – 2 часа в сутки, и, что ложное срабатывание обрабатывается, как минимум, в 2 раза быстрее. Несложно оценить требуемую точность детектирования, она должна быть не ниже 84%.

  • Крайне нежелательно упускать из виду объекты, они могут свидетельствовать об утечках данных, по стоимости значительно превышающих 10 минут работы аналитика безопасности. Поэтому полнота детектирования, можно сказать, важнее чем точность. Мы приняли решение выбрать оптимальный алгоритм, а затем постепенно снижать до приемлемого порога точность в угоду высокой полноте.

  • Одновременно с требованием к высокому качеству распознавания мы имели ограничение к ресурсам железа, требуемым для обработки.

  • Также у нас было требование к скорости обработки не менее 1000 изображений произвольного размера за час.

Так у нас родился треугольник успешности 99% решений подобного рода (аналог треугольника управления проектами).

Иллюстрация 3: Треугольник успешности решений распознавания

Иллюстрация 3: Треугольник успешности решений распознавания

Немного общей теории

Итак, нам нужен некий фильтр наличия печатей. Но как должен работать этот фильтр?

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

Или что-то еще? Здесь необходимо сделать введение в задачи компьютерного зрения. В различной литературе они описаны по-разному, однако следующие три, как правило, упоминаются везде:

  • классификация;

  • детектирование;

  • сегментация.

Поговорим о каждой из них.

Классификация

Классификатор – алгоритм, который отвечает на вопрос, есть ли заданный нами объект на изображении (не более того). Допустим, у нас есть несколько объектов, о существовании которых на изображениях мы хотели бы знать. Пусть это будут печать, подпись и печатный текст. У нас есть несколько изображений:

Иллюстрация 4: Варианты объектов (печать, подпись и печатный текст)

Иллюстрация 4: Варианты объектов (печать, подпись и печатный текст)

Что получится на выходе? Обычно для каждого изображения это словарь следующего вида:

{

объект_1: вероятность_нахождения_на_изображении_объекта_1,

объект_2: вероятность_нахождения_на_изображении

… ,

объект_n: вероятность_нахождения_на_изображении

}

Но просто вероятность не дает нам ответа «ДА, НА ЭТОМ ИЗОБРАЖЕНИИ ЕСТЬ ЭТОТ ОБЪЕКТ» или «НЕТ, НА ЭТОМ ИЗОБРАЖЕНИИ НЕТ ЭТОГО ОБЪЕКТА». Для этого необходимо использовать порог – специальное значение, вероятность выше которого означала бы положительный ответ, а ниже – отрицательный.

Что получится в таком случае для изображений выше? Примерно следующее:

Таблица 2: порог вероятности для положительного и отрицательного результата распознавания

Таблица 2: порог вероятности для положительного и отрицательного результата распознавания

Детектирование

Обнаружение объектов (object detection) – важная задача компьютерного зрения. Она связана с обнаружением экземпляров визуальных объектов определенного класса (например, люди, животные или автомобили) на цифровых изображениях [1]. Постановка задачи детекции объектов состоит в том, чтобы определить, где именно расположены интересуемые объекты на конкретном изображении (локализация объекта) и к какой категории принадлежит каждый объект (классификация объектов) [2].

На изображениях это выглядит следующим образом:

Иллюстрация 5: детектирование границ объектов

Иллюстрация 5: детектирование границ объектов

Сегментация

Сегментация заходит еще дальше. Это алгоритм, который отвечает на вопрос, какие из заданных нами объектов есть на изображении, сколько их и где они находятся (точные границы). Изображение в качестве примера:

Иллюстрация 6: Cегментация определяет точные границы объектов

Иллюстрация 6: Cегментация определяет точные границы объектов

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

Алгоритмы, алгоритмы, а я маленький такой

За последние десять лет зоопарк решений по детектированию объектов настолько вырос, что нам пришлось проводить отдельный НИР по выявлению вариантов подходящих моделей.

Выбор стоял между наиболее актуальными на сегодняшний день нейронными сетями и давно зарекомендовавшими себя вариациями SIFT-алгоритма. А с учетом того, что последний не так давно просрочил свой патент, стало возможным его использовать в коммерческих решениях свободно.

Иллюстрация 7: История развития алгоритмов SIFT и CNN

Иллюстрация 7: История развития алгоритмов SIFT и CNN

Изучили наиболее известные статьи по сравнению двух подходов. Наиболее содержательными видятся статьи, проводящие сравнение двух подходов:

  1. SIFT Meets CNN: A Decade Survey of Instance Retrieval, Liang Zheng, Yi Yang, and Qi Tian, Fellow, IEEE

  2. CNN vs. SIFT for Image Retrieval: Alternative or Complementary, Ke Yan, Yaowei Wang, Dawei Liang, Tiejun Huang, Yonghong Tian

  3. Object Recognition. SIFT vs Convolutional Neural Networks, Josip Josifovski

Общий  вывод исследователей следующий.  Алгоритмы  SIFT-based  хорошо  справляются  с  поиском  очень  похожих  дубликатов  и  менее  пригодны  для детектирования более широких классов объектов.

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

Алгоритм

Хорошо

Плохо

SIFT

Задачи идентификации, поиска дубликатов.

Легко встроить в продукт.

Быстрый

Плохо обобщает объекты.

Плохо справляется с нелинейными искажениями

CNN

Задачи классификации, поиска объектов определенного типа.

Очень хорошо ищет похожие объекты, обобщает

Потребляет много ресурсов.

Требует большого датасета для обучения.

Требует настройки

Таблица 3: анализ преимуществ и недостатков SIFT и CNN

Для прототипа решения обеих наших задач были выбраны несколько моделей из Tensorflow Object Detection, реализация SIFT в OpenCV, а также его аналог ORB.

Для справки

Масштабно-инвариантное преобразование признаков (Scale Invariant Feature Transform, SIFT) – это детектор признаков, впервые

представленный Дэвидом Лоу в 2004 году в работе «Distinctive Image Features from Scale-Invariant Keypoints». Наряду с тем, что SIFT является очень эффективным в приложениях для распознавания объектов, он требует большой вычислительной мощности, что является серьезным недостатком, особенно для приложений реального времени [4].

SIFT решает проблему поворота изображения, аффинных преобразований, интенсивности и изменения точки обзора в соответствующих объектах. Алгоритм состоит из 4 основных шагов. Во-первых, оцениваются масштабные пространственные экстремумы с использованием разности Гаусса. Во-вторых, локализуются ключевые точки. На этом же шаге ключевые точки уточняются путем устранения точек с низкой контрастностью. В-третьих, определяется ориентация ключевой точки на основе локального градиента изображения и, наконец, применяется генератор дескрипторов для вычисления локального дескриптора изображения для каждой ключевой точки на основе величины и ориентации градиента изображения.

Oriented FAST and Rotated BRIEF (ORB) был предложен Итаном Р., Куртом К. и Гарри Б. в 2011 году, ­в качестве эффективной альтернаты SIFT и SU

RF [5]. ORB представляет собой синтез так называемого «FAST» детектора ключевых точек и «BRIEF» дескриптора с некоторыми

модификациями. На первом шаге, для определения ключевых моментов алгоритм использует FAST. Затем применяется мера угла Харриса, чтобы найти верхние N точек. FAST вычисляет центроид, взвешенный по интенсивности, для пятна с расположенным углом в центре. Направление вектора от этой угловой точки к центроиду определяет ориентацию. BRIEF плохо работает, если происходит вращение в плоскости [4].

А теперь расскажем про отдельные интересные особенности решения обеих задач.

Что с датасетами?

Сначала пара слов о требованиях к датасету. Напомню, что датасет – это некоторая случайная выборка из генеральной совокупности всех примеров. На языке математики от такой совокупности требуется равномерное распределение по генеральной совокупности. И, конечно, необходимо следить за снижением размерности задачи машинного обучения и нормализацией данных. Но, как говорили классики, «есть один нюанс». Получить представление о генеральной совокупности примеров непросто и требует знания бизнес-специфики и задач пользователей. И эта задача находится на пересечении компетенции датасайентиста и бизнес-аналитика. По-хорошему, им обоим надо сильно подружиться (поработать вместе), чтобы сформировать полное представление о генеральной совокупности.

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

  1. Программно-конвертируемых изображениях,

  2. Скриншотах экранов, сделанных на всевозможных типах сканеров,

  3. Сфотографированных оригиналах документов,

  4. Сфотографированных фотографиях и копиях документов,

  5. Снимках с веб-камеры.

Помимо этого, изображение может быть искажено по различным причинам:

  1. Поворот, растяжение, сжатие,

  2. Сворачивание исходного документа,

  3. Смятие исходного документа,

  4. Частичное отображение искомого объекта,

  5. Размытие и смазывание,

  6. Наложение на текст, другие печати, водяные знаки.

Сами печати могут относиться к разным степеням коммерческой значимости. Эти факторы и их распределение должны формировать сбалансированную равномерно распределенную выборку из генеральной совокупности – датасет.

Сбор данных для задачи «Любая печать»

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

Напомню, что для обучения в датасет должны входить учебная и тестовая выборки.

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

Поисковики

Самый очевидный вариант. Документы с печатями в поиске по картинкам найти можно, особенно в Яндексе, и их много. Проблема в том, что довольно большая масса изображений – различного рода дипломы, отзывы, поздравительные открытки и так далее. В общем, на серьезные бумаги не очень похоже. И явно не подходит под требования к датасету, обозначенные выше.

Kaggle

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

Где же брать примеры для датасета?

Немного потренировавшись на изображениях из поисковиков, мы решили поискать дополнительные источники. Кое-что нам удалось взять по своим каналам лояльности. Но этого все равно было мало. Мы даже задумали заказать разработку оттисков печатей у специальной организации и даже уже начали обсуждать с ней условия. Но вовремя посетила гениальная по простоте идея – взять примеры печатей с реальных и официально открытых документов на открытой площадке «Госзакупки».

Госзакупки

На «Госзакупках» присутствовали те самые желаемые нами реальные данные, причем в большом количестве.

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

Иллюстрация 8: Пример разметки изображения (взято с репозитория labelImg на github)

Иллюстрация 8: Пример разметки изображения (взято с репозитория labelImg на github)

В итоге мы получили датасет с более чем 1000 примеров объектов для учебной и тестовой выборки.

Во время формирования датасета нужно помнить о необходимой предобработке или очистке от некорректных примеров как с технической, так и с пользовательской точки зрения.

Данные для задачи «Моя печать»

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

В учебной выборке у нас всегда только один пример, а тестовая по-прежнему должна быть большой. С учебной выборкой просто – берем печать своей организации. А вот тестовую пришлось делать своими руками. Мы взяли несколько аппаратов с печатью и проставили как можно больше печатей на документы со всевозможными деформациями и искажениями.

Еще часть учебной выборки сделали в цифровом виде. Сделали png образ печати с прозрачностью и в фотошопе «шлепали» ее на разные документы, при этом деформируя ее разными способами.

Часть документов дополнительно преобразовали в сканы с помощью сканера, а часть — отфотографировали в разных положениях. Вышла тоже приличная учебная выборка из более 200 верных примеров.

Обучение

Технические аспекты

Как говорится в одном известном фильме: «У нас была NVIDIA GTX 1080 и 2080, 32 гигабайта оперативной памяти и еще множество ноутбуков разных размеров и окрасов…»

Сначала нужно было установить TensorFlow версии 1.* с поддержкой видеокарты. Но не все так просто. Установка на GPU это вам не просто написать pip install tf.

Иллюстрация 9: Мем с просторов интернета

Иллюстрация 9: Мем с просторов интернета

Это надо скачать правильные драйвера под правильную версию TF, таблица в помощь.

Таблица 4: Выбор драйверов под версию TF. Источник: https://www.tensorflow.org/install/source

Таблица 4: Выбор драйверов под версию TF. Источник: https://www.tensorflow.org/install/source

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

Как-то между нашими обучениями произошел казус, GTX1080 на пару недель вышла из строя и нам пришлось обучать алгоритм на CPU (процесс установки, по секрету, НАМНОГО ПРОЩЕ).

Что интересно, модель из Tensorflow с высоким батчсайзом наш CPU + 32 ОЗУ смог переварить, хоть и очень долго, а GPU с 11 Гб вывалился по памяти.

С учетом нетривиального развертывания, капризов tensorflow, а также того, что наша команда работала в удаленном режиме (хоть и совместно), очень выручило использование докера.

Экспериментировать с разными версиями стало намного легче.

Обучение оптимальной модели для задачи «Любая печать»

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

  1. Разные варианты разметки

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

  2. Разные модели

    У Object Detection есть свой зоопарк моделей (и здесь нужно быть осторожным, так как для каждой версии Tensorflow свой зоопарк). Модели в нем самые разные. От быстрых, нетребовательных, но с косяками в детектировании, до тех, которые доведут одну-другую машину до перезагрузки.

  3. Настройка гиперпараметров

    Оптимальная настройка может, например, помочь модели детектировать объекты чуть быстрее без ущерба качеству или же улучшить качество (правда и повлиять на скорость).

Когда модель получена, необходимо понять, насколько хорошо она работает.

Немного простой теории

Оценку лучше всего получать в числовом виде, чтобы была возможность сравнивать модели. В машинном обучении часто для определения качества результатов используются метрики precision (точность) и recall (полнота). Чтобы понять, как они рассчитываются в общем случае, введем понятие матрицы ошибок. Допустим, в нашем наборе данных есть только два вида объектов. Пусть это будут животные (они будут помечаться меткой «Positive») и растения (они будут помечаться – «Negative»). Распознающий алгоритм может правильно увидеть животное в коте, а может ошибочно посчитать его за растение. Дерево точно так же может быть переведено по ошибке в разряд животных, или же будет распознано правильно. В итоге получается четыре группы результатов:

Правильно распознанные (True) как животные (Positive)

Неправильно распознанные (False) как животные (Positive)

Неправильно распознанные (False) как растения (Negative)

Правильно распознанные (True) как растения (Negative)

Иллюстрация 10: соотношение ложных и положительных срабатываний

Иллюстрация 10: соотношение ложных и положительных срабатываний

А если абстрагироваться от названий объектов, получится так:

True Positive (TP)

False Positive (FP)

False Negative (FN)

True Negative (TN)

Если на место каждого названия группы поставить количество соответствующе распознанных объектов, получится та самая матрица ошибок. На основе значений этой матрицы рассчитываются точность и полнота (варианты для Positive-группы)

Иллюстрация 11: визуализация расчета точности и полноты
Иллюстрация 11: визуализация расчета точности и полноты

В Object Detection эти метрики также используются, только в чуть измененном виде. Есть несколько препятствий этому. Во-первых, не совсем ясно, как понять, к чему из TP, TN, FP, FN относится полученная детектором область. Классически область считается TP, если она удовлетворяет трем условиям:

  • предсказанная вероятность выше порога;

  • предсказанный класс совпадает с размеченным классом по названию;

  • IoU предсказанной области и размеченной области выше порога (по умолчанию 0.5).

Для того, чтобы предсказание стало FP, достаточно не соблюсти хотя бы одно их двух последних условий. Если два последних условия соблюдаются, но предсказанная вероятность ниже порога, детектирование причисляется к FN. К TN относятся результаты, для которых не соблюдено первое условие, плюс они находятся на области, не относящейся ни к одному классу.

Здесь мелькает новое понятие – Intersection over Union (IoU). Чтобы его получить для предсказанной области (predicted bounding box), потребуются размеченные человеком области объекта (ground-truth bounding box).

Иллюстрация 12: Intersection over Union (степень пересечения между двумя ограничивающими рамками)

Иллюстрация 12: Intersection over Union (степень пересечения между двумя ограничивающими рамками)

Вычисляться эта метрика будет следующим образом:

Где Bp — predicted bounding box, Bgt — ground-truth bounding box.

Когда TP, FP и FN найдены, можно считать precision и recall. Однако просто полнота и точность не используются для оценки. Вместо них берутся Average Precision (AP), mean Average Precision (mAP), Average Recall (AR), mean Average Recall (mAR).

Average Precision (AP) получается для каждого из класса в детекторе. Для ее получения сначала строится кривая precision-recall (precision-recall curve). Строится она следующим образом:

  1. По абсциссе (X) откладывается recall (полнота), по ординате (Y) – precision (точность).

  2. Постепенно уменьшая порог для предсказанной вероятности от единицы к нулю, для каждого из его рассматриваемых значений получаем recall (всегда уменьшается вместе с порогом) и precision (не обязательно всегда уменьшается, но в целом идет на спад).

  3. Отмечаем все полученные значения точности и полноты на графике, соединяем линиями.

Иллюстрация 13: Пример precision-recall curve

Иллюстрация 13: Пример precision-recall curve

Далее график «сглаживается», и ищется площадь под ним – это и будет Average Precision.

Иллюстрация 14: «сглаживание» precision-recall curve

Иллюстрация 14: «сглаживание» precision-recall curve

Мean Average Precision (mAP) получается путем нахождения среднего из AP по всем классам детектора.

Для получения Average Recall используется другая кривая — recall-IoU curve. Строится она следующим образом:

  1. По абсциссе (X) откладывается Intersection over Union (IoU∈[0.5,1.0]), по ординате (Y) — recall (полнота).

  2. Меняя IoU, вычисляется recall (полнота) для заранее выбранного порога вероятности предсказания (по дефолту 0.5).

  3. Все точки IoU + recall отмечаются на графике и соединяются.

Построив recall-IoU кривую, можно вычислить площадь под ней, и, умножив получившееся значение на два, узнать Average Recall для класса. Mean Average Recall (mAP), как и mean Average Precision (mAP) вычисляется как среднее из AR по всем классам.

Иллюстрация 15: «сглаживание» recall-IoU curve

Иллюстрация 15: «сглаживание» recall-IoU curve

Перечисленные метрики – неплохой способ дать оценку модели, однако стоит помнить, что это не весь арсенал для оценивания. Кроме того, AP и AR описаны выше в классическом варианте, существуют и их переопределения.

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

Выбор алгоритма для задачи «Моя печать»

Итак, имея «на руках» рабочую модель-детектор, обнаруживающую на документе произвольную печать (штамп), оставалось найти способ распознавания конкретно-определенного объекта по одному-единственному образцу, который будет загружаться в систему пользователем.

Из всех имевшихся вариантов для обнаружения признаков на изображениях нами были выбраны два алгоритма – SIFT и ORB. SURF был более желаемым вариантом, поскольку он менее затратен в вычислительных мощностях и одновременно более точен, по сравнению с тем же SIFT, однако он запатентован и его применение в коммерческих приложениях не допускается.

Оба алгоритма (SIFT, ORB) были протестированы на нашем датасете и SIFT продемонстрировал лучшую точность в сопоставлении печатей на изображениях документов по заданному образцу. Однако SIFT работает значительно дольше, чем ORB:

Иллюстрация 16: Время распознавания для 20 тестовых изображений разного размера с помощью SIFT (слева) и ORB (справа)

Иллюстрация 16: Время распознавания для 20 тестовых изображений разного размера с помощью SIFT (слева) и ORB (справа)

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

Иллюстрация 17: Размер исходных тестовых изображений (20 изображений)

Иллюстрация 17: Размер исходных тестовых изображений (20 изображений)

Комплексное решение

Определившись с алгоритмом сопоставления заданной печати с детектированным объектом, необходимо было найти способ выделять данную область с печатью в отдельное изображение. Это позволило бы значительно улучшить точность алгоритма сопоставления, а также сократить время распознавания, поскольку в данной операции участвовало бы не все изображение документа, а лишь конкретные его участки, там, где обнаружена печать (штамп).

Для решения этой задачи был написан скрипт на языке Python. После того, как загруженная в оперативную память компьютера модель-детектор (наша обученная модель) выполняет свою часть работы, связанную с обнаружением на входных изображениях документов участков с печатями (штампами), выполняется операция вырезания данных участков. Далее каждое вырезанное изображение  поочередно сопоставляется с заданной печатью (образцом).

Результаты работы скрипта выглядят следующим образом:

Иллюстрация 18: Распознавание конкретной печати из заранее детектированных всех печатей
Иллюстрация 18: Распознавание конкретной печати из заранее детектированных всех печатей

Таким образом, была реализована программа, объединившая в себе два алгоритма, – детектирование объектов и сопоставление изображений. В качестве альтернативы возможно применение другой обученной модели-детектора либо замена алгоритма SIFT на BRIEF или ORB. По итогам тестирования получившееся решение показало достаточно хорошие результаты в распознавании конкретных печатей на документах.

Попробуем подвести итоги и сделать выводы

Ну вот! Мы объединили два алгоритма – нейронные сверточные сети CNN и SIFT и получили прототип, подходящий для коммерческого решения. Но не тут-то было. Для того, чтобы он стал рабочим решением, необходимо было защитить его перед владельцем продукта и архитекторами и еще не раз подтвердить обозначенные вначале бизнес-метрики. Во время обсуждений с архитекторами и разработчиками были обнаружены проблемы в архитектуре и библиотеках, которые несколько раз корректировали исходную алгоритмическую схему, что снова меняло ML-метрики. Так было принято решение использовать в продукте два режима (точности и полноты), поскольку разным бизнес-пользователям могут быть важны несбалансированные точность и полнота.

На создание бизнес-успешно работающего прототипа у нас ушло суммарно 3 месяца работы трех человек с учетом бизнес-аналитика. Два месяца на задачу распознавания любой печати и один месяц на задачу распознавания заданной печати.

Много это или мало, что думаете?)

Авторы

Исследовательская группа центра продуктов Dozor «Ростелеком-Солар»:

Анна Яковленко, аналитик данных,

Никита Туляков, аналитик,

Анвар Баширов, аналитик данных,

Максим Бузинов, руководитель

Источники литературы

  1. Object detection in 20 years: A Survey // Zhengxia Zou, Zhenwei Shi, Member, IEEE, Yuhong Guo, and Jieping Ye, Senior Member, IEEE.

  2. Object detection with deep learning: A Review // Zhong-Qiu Zhao, Member, IEEE, Peng Zheng, Shou-Tao Xu, and Xindong Wu, Fellow, IEEE.

  3. Shaharyar A., Zahra S. A comparative analysis of SIFT, SURF, KAZE, AKAZE, ORB, and BRISK // 2018 International Conference on Computing, Mathematics and Engineering technologies – iCoMET 2018.

  4. Karami E., Prasad S., Shehata M. Image matching using SIFT, SURF, BRIEF and ORB: performance comparison for distorted images //arXiv preprint arXiv:1710.02726. – 2017.

  5. Ethan Rublee, Vincent Rabaud, Kurt Konolige and Gary Bradski, “ORB: and efficient alternative to SIFT or SURF,” IEEE International Conference on Computer Vision, 2011.

Выписка из ЕГРЮЛ представляет собой выдержку основных сведений о данном юридическом лице (за исключением некоторых персональных данных о физических лицах, которые предоставляются только уполномоченным органам) из ЕГРЮЛ ФНС РФ.

Единый государственный реестр юридических лиц (ЕГРЮЛ) — федеральный информационный ресурс, содержащий общие систематизированные сведения о всех юридических лицах, осуществляющих предпринимательскую деятельность на территории Российской Федерации, а также, в ряде случаев, о ликвидированных и находящихся в процессе ликвидации организациях. Ведение реестра осуществляется Федеральной налоговой службой России (ФНС РФ) через территориальные органы. В соответствии с законодательством РФ данные ЕГРЮЛ являются открытыми и общедоступными.

Сведения, содержащиеся в выписке из ЕГРЮЛ, являются ключевыми при проверке контрагента и, наряду с прочими документами, могут подтверждать право собственности, права учредителей или руководства организации на заключение договоров и совершение других юридически значимых действий от лица юридического лица (ЮЛ), а также дают ценную информацию о состоянии ЮЛ и общей надежности контрагента.

Выделяют несколько основных видов выписок:

Обычная (электронная, информационная) выписка из ЕГРЮЛ – содержит основную открытую и общедоступную информацию из ЕГРЮЛ. Она не содержит паспортные данные учредителей и руководителей юридического лица, а также сведения о банковских счета организации.

Получить выписку из ЕГРЮЛ онлайн и совершенно бесплатно можно на rusprofile.ru, данные ежедневно обновляются из официального источника (ФНС РФ), документ будет полностью идентичен той выписке, что вы можете скачать на официальном сайте налоговой (egrul.nalog.ru). Информация всегда актуальна на текущую дату.

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

Официальная выписка из ЕГРЮЛ – заверенный печатью ФНС и полученный в налоговом органе документ. Представляет собой пронумерованную и прошитую распечатку на нескольких листах с печатью налогового органа.

Понравилась статья? Поделить с друзьями:
  • Как найти siren head
  • Как исправить подпись в упд
  • Как по qr коду найти телеграмме человека
  • Пейнтбол как найти команду
  • Как найти свою страничку на майле