Dbrain
Ask or search…
K
Comment on page

Извлечение данных

Извлекаем данные из изображений документов и возвращаем их в структурированном виде
Полученные из сервиса данные можно использовать для предзаполнения онлайн-форм, сравнения с данными с CRM-системами, идентификации клиента и в десятках других бизнес-сценариев.
Рассказываем подробнее, что делает сервис:
  • Находит документы на любых изображениях: и на фото, и на сканах.
  • Обрабатывает многостраничные файлы в форматах PDF и DJVU.
  • Отделяет документы от фона — бабушкиных ковров и узорчатых скатертей.
  • Исправляет ориентацию повёрнутых и зеркально отражённых документов.
  • Извлекает данные из некачественных фото:
    • обрезанных;
    • смазанных при съёмке;
    • испорченных бликами;
    • с наложением посторонних предметов.
Если вам необходимо убедиться в качестве документа, воспользуйтесь проверками перед извлечением данных.

Как начать работать с сервисом извлечения данных

Описали популярные способы взаимодействия с сервисом. Для любого вам потребуется ключ лицензии. Чтобы получить ключ, напишите нам в телеграм или на [email protected].
Подготовьте изображение документа для теста. Если у вас такого нет, используйте паспорт РФ из Википедии.
Через веб-демо
  1. 1.
    Откройте demo.dbrain.io
  2. 2.
    Введите ключ лицензии в поле «Введите токен»
  3. 3.
    Нажмите кнопку «Выберите файлы для распознавания»
  4. 4.
    Укажите изображение, которое нужно распознать
  5. 5.
    Нажмите кнопку «Только распознать»
Через терминал
Обратитесь к методу /recognize по адресу latest.dbrain.io. В этом способе только два обязательных параметра:
  • token — ваш ключ лицензии
  • image — файл с изображением документа
Таким образом, curl запрос должен выглядеть так:
curl -X 'POST' \
'https://latest.dbrain.io/recognize?token=xxx' \
-H 'accept: application/json' \
-H 'Content-Type: multipart/form-data' \
-F '[email protected];type=image/jpeg'
Через Swagger
  • Подготовьте ваш ключ лицензии.
  • Откройте Swagger и нажмите кнопку Authorize в правом верхнем углу
  • Введите свой токен в любое поле и нажмите Authorize
  • Прокрутите вниз до раздела Documents, нажмите на метод /recognize
  • В открывшемся разделе нажмите на кнопку Try it out
  • Прокрутите страницу вниз до раздела Request body
  • Нажмите на кнопку Выберите файл пункта image
  • Укажите изображение, которое нужно распознать
  • Нажмите кнопку Execute
  • Ответ сервиса появится в пункте Response body раздела Responses
  • Полученный на этом этапе Curl мы рекомендуем использовать как основу для написания интеграции с API сервиса Dbrain.
Через Python
import requests
url = 'https://latest.dbrain.io/recognize?token=xxx'
files = {'image': open('image.jpg', 'rb')}
headers = {'accept': 'application/json'}
response = requests.post(url, headers=headers, files=files)
Код использует библиотеку requests для отправки POST-запроса с файлом изображения. Функция open() используется для открытия файла изображения в двоичном режиме и передачи его в параметр files. Параметр headers используется для установки заголовка accept в значение application/json. Ответ от сервера сохраняется в переменной response.
Тело запроса передавайте в кодировке UTF-8.
Через 1С
Функция РаспознатьДокумент(ПакетДвоичныеДанные, ИмяФайла) Экспорт
// готовит HTTP-запрос, включая заголовки и тело, и отправляет его на сервер.
ПараметрыЗапроса ="?token=B000000000000000000000"; // токен необходимо получить собственный!
РазделительМультисообщения = "----MessageBoundary1C";
HTTPЗапрос = Новый HTTPЗапрос("/recognize"+ПараметрыЗапроса);
HTTPЗапрос.Заголовки.Вставить("accept", "application/json");
HTTPЗапрос.Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + РазделительМультисообщения);
ТелоПоток = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(ТелоПоток);
ЗаписьДанных.ЗаписатьСтроку("--" + РазделительМультисообщения);
ЗаписьДанных.Записать(СоздатьСообщение_XML("image", ИмяФайла, ПакетДвоичныеДанные));
ЗаписьДанных.ЗаписатьСимволы(Символы.ВК);
ЗаписьДанных.ЗаписатьСимволы(Символы.ПС);
ЗаписьДанных.ЗаписатьСтроку("--" + РазделительМультисообщения + "--");
ЗаписьДанных.Закрыть();
ТелоДвоичныеДанные = ТелоПоток.ЗакрытьИПолучитьДвоичныеДанные();
Попытка
Соединение = Новый HTTPСоединение("latest.dbrain.io",
443,
,
,
,
60,
ЗащищенноеСоединение());
Исключение
Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ТелоДвоичныеДанные);
Возврат Соединение.ОтправитьДляОбработки(HTTPЗапрос);
КонецФункции
Функция ЗащищенноеСоединение()
ЗащищенноеСоединение = Неопределено;
СистемнаяИнфо = Новый СистемнаяИнформация;
ТипПлатформыСервера = СистемнаяИнфо.ТипПлатформы;
Если ТипПлатформыСервера = ТипПлатформы.Windows_x86
Или ТипПлатформыСервера = ТипПлатформы.Windows_x86_64 Тогда
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(),
Новый СертификатыУдостоверяющихЦентровWindows());
Иначе
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
КонецЕсли;
Возврат ЗащищенноеСоединение;
КонецФункции
Функция СоздатьСообщение_XML(ИмяСообщения, ИмяФайла, СообщениеДвоичныеДанные)
Поток = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Поток);
// Заголовки
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=""" + ИмяСообщения + """; filename=""" + ИмяФайла + """");
Если Прав(ИмяФайла, 4) = ".xml" Тогда
ТипMIME = "text/xml";
ИначеЕсли Прав(ИмяФайла, 4) = ".pdf" Тогда
ТипMIME = "application/pdf";
Иначе
ЧастиИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяФайла, ".");
Если ЧастиИмени.Количество() > 1 Тогда
ТипMIME = "image/" + ЧастиИмени[ЧастиИмени.ВГраница()];
КонецЕсли;
КонецЕсли;
ЗаписьДанных.ЗаписатьСтроку("Content-Type: " + ТипMIME);
ЗаписьДанных.ЗаписатьСтроку("");
// Тело
ЗаписьДанных.Записать(СообщениеДвоичныеДанные);
ЗаписьДанных.Закрыть();
Возврат Поток.ЗакрытьИПолучитьДвоичныеДанные();

Параметры запроса к API

Вы можете использовать эти параметры с любыми видами документов.

Проверка типа документа

doc_type — string array

Поведение по умолчанию: сервис извлекает данные из всех поддерживаемых типов документов, которые классификатор документов найдёт в файле.
Если вам нужно извлечь данные только из одного типа документа, укажите этот тип в параметре doc_type:
  • Для извлечения данных только из главного разворота Паспорта РФ укажите doc_type=passport_main.
  • Для извлечения данных из нескольких типов документов допишите их в запрос через &doc_type=. Например, для главного разворота и прописки Паспорта РФ укажите два doc_type: doc_type=passport_main&doc_type=passport_registration.

Режим распознавания

mode — string
Поведение по умолчанию: mode=default
Вы можете использовать сервис классификации документов отдельно от сервиса извлечения данных. Построить разную логику обработки документов в зависимости от того какие типы документов классификатор нашёл на изображении.
Для этого передайте сервису извлечения данных результаты работы классификатора: изображение в параметре image и тип документа в параметре doc_type, а также укажите mode=recognize_only. В таком случае сервис не будет запускать лишнюю классификацию документа и вы быстрее получите ответ.

Возврат найденных изображений документов

return_crops boolean
Поведение по умолчанию: return_crops=false — cервис не возвращает найденные изображения документов.
Если вам нужны найденные сервисом изображения документов, укажите return_crops=true. Сервис вернёт в ответе API в параметре crop.
Перед началом работы с сервисами, советуем заглянуть в раздел «Общая информация о сервисах». В нем перечислили форматы файлов, которые поддерживают сервисы, описали общие для всех сервисов параметры API, а также расшифровали коды ошибок.

В ответе:

  • task_id — string, идентификатор запроса, формат: 32 символа, 16-ричная строка
  • items — массив, который содержит распознанные документы
  • doc_type — string, тип документа, все типы перечислены в классификации документов
    • fields — string, поля документа, список полей по каждому документу приведён в API-спецификация в Google таблице.
      • text — string, текст поля документа
      • confidence — number, уровень уверенности алгоритма в корректности извлечения данных из поля
      • coords — массив, координаты поля на документе, вырезанного и правильно ориентированного, по четырём точкам: верхний левый угол, верхний правый, нижний левый, нижний правый
    • doc_coords — массив, координаты документа на оригинальном изображении по четырём точкам: верхний левый угол, верхний правый, нижний левый, нижний правый
    • confidence — number, уровень уверенности алгоритма в корректности определения типа документа
  • task_tags — массив string, теги, если они переданы в параметре task_tags
  • page_count — integer, число страниц в файле, актуально для PDF и DJVU
  • docs_count — integer, число распознанных документов в файле
  • traceback — string, сообщение об ошибке, которое содержит информацию о том, где произошла ошибка в коде и какие функции были вызваны перед ней. Это сообщение может помочь разработчикам понять причину возникновения ошибки и исправить ее. Передайте её нашей службе поддержки.
Остальные поля не несут практического смысла. Оставили их для совместимости со старыми версиями.
Собрали особенности извлечения и специфические параметры для отдельных документов в следующих разделах:
Last modified 1mo ago