Для корректной работы необходимо убедиться в том, что в папке "/home/promobot/" существует папка "scans". Если она отсутствует, то необходимо ее создать под пользователем promobot.
Работа со сканером паспортов Regula осуществляется по websocket.
Подключение производится по адресу ws://192.168.250.91:5680/
При корректно подключенном устройстве после подключения по ws придет сообщение вида:
{status = -51, description = "Document not detected"}
Порядок сканирования и распознавания документов
scan - запуск сканирования на устройстве. Если устройство исправно и подключено, то метод последовательно возвращает следующие статусы:
{status = 1, description = "Scanner successfully enabled"}
{status = 2, description = "Starting scanning"}
{status = 3, description = "Scanning finish"}
{status = 4, description = "Trustability checking started"}
{status = 5, description = "Trustability checking finish"}
При завершении всех этапов сканирования и распознавания документа, придет сообщение вида:{ "Scan_White":"/home/promobot/scans/Scan_1.jpg", "Scan_Photo":"/home/promobot/scans/Scan_Photo.jpg", "ft_Issuing_State_Code_VISUAL":"RUS", "ft_Document_Number_VISUAL":"5714299754", "ft_Date_of_Birth_VISUAL":"03.11.1994", "ft_Place_of_Birth(1049)_VISUAL":"ГОР. ПЕРМЬ", "ft_Place_of_Birth_VISUAL":"GOR.PERM", "ft_Surname(1049)_VISUAL":"ЛАЛЕТИН", "ft_Surname_VISUAL":"LALETIN", "ft_Given_Names(1049)_VISUAL":"ДМИТРИЙ", "ft_Given_Names_VISUAL":"DMITRII", "ft_Nationality_VISUAL":"Russian Federation", "ft_Sex(1049)_VISUAL":"МУЖ", "ft_Sex_VISUAL":"M", "ft_Surname_And_Given_Names(1049)_VISUAL":"ЛАЛЕТИН ДМИТРИЙ АНДРЕЕВИЧ", "ft_Surname_And_Given_Names_VISUAL":"LALETIN DMITRII ANDREEVICH", "ft_Nationality_Code_VISUAL":"RUS", "ft_Issuing_State_Name_VISUAL":"Russian Federation", "ft_Document_Series_VISUAL":"5714", "ft_Fathers_Name(1049)_VISUAL":"АНДРЕЕВИЧ", "ft_Fathers_Name_VISUAL":"ANDREEVICH", "ft_Authority_RUS(1049)_VISUAL":"Пермский край", "ft_Booklet_Number_VISUAL":"299754", "ft_Age_VISUAL":"26", "status":100, "status_description":"finish", "Doc_Name":"Russian Federation - Passport (2006)", "Processing_Time":"03.962", "UV_Luminescence":"ch_Check_Error" }
где
"Scan_White" - путь до изображения с белым сканом
,
"Scan_Photo" - путь до изображения с фотографией владельца паспорта
,
"ft_Issuing_State_Code_VISUAL" - страна, в которой произведена выдача паспорта
,
"ft_Document_Number_VISUAL" - номер документа
,
"ft_Date_of_Birth_VISUAL" - дата рождения
,
"ft_Place_of_Birth(1049)_VISUAL" - место рождения
,
"ft_Place_of_Birth_VISUAL" - место рождения
,
"ft_Surname(1049)_VISUAL" - фамилия
,
"ft_Surname_VISUAL" - фамилия
,
"ft_Given_Names(1049)_VISUAL" - имя
,
"ft_Given_Names_VISUAL" - имя
,
"ft_Nationality_VISUAL" - национальность
,
"ft_Sex(1049)_VISUAL" - пол
,
"ft_Sex_VISUAL" - пол
,
"ft_Surname_And_Given_Names(1049)_VISUAL" - ФИО
,
"ft_Surname_And_Given_Names_VISUAL" - ФИО
,
"ft_Nationality_Code_VISUAL" - код страны
,
"ft_Issuing_State_Name_VISUAL" - название страны, выдавшей документ
,
"ft_Document_Series_VISUAL" - серия документа
,
"ft_Fathers_Name(1049)_VISUAL" - отчество
,
"ft_Fathers_Name_VISUAL" - отчество
,
"ft_Authority_RUS(1049)_VISUAL" - область/край
,
"ft_Booklet_Number_VISUAL" - доподлинно неизвестно
,
"ft_Age_VISUAL"
- возраст
,
"status"
- статус в результате сканирования и распознавания (100 - успешно, -100 - не успешно)
,
"status_description" - описание статуса
,
"Doc_Name" - тип документа
,
"Processing_Time" - время, затраченное на сканирование и распознавание (в секундах)
,
"UV_Luminescence" - статус проверки подлинности UV
У возвращаемых полей могут быть 2 вида постфикса:
_VISUAL - это поля, которые были распознаны в визуальной зоне документа
_MRZ - это поля, которые были распознаны в машиночитаемой зоне документа
killThreads - принудительное завершение потоков распознавания. Необходим для того, чтобы завершить зависшие потоки распознавания. Реализован для того, чтобы восстановить работу софта после "отпадывания сканера по питанию". Такое происходит периодически, проявляется долгим сканированием и постоянно включенными диодами освещения зоны документа. В программное реализации такое поведение легко отследить по статусам сканирования. Если статус не меняется в течение ~3 секунд, то необходимо перезагрузить сканер по питанию. После успешного выполнения будет получение сообщение следующего вида:
{status = 311, description = "Zombie thread finished"}
deleteScans - удаляет полученные сканы из файловой системы (потребуется для 152 ФЗ). После успешного выполнения вернет:
{status = 303, description = "Files deleted"}
powerReset - ребут по питанию (через плату USB). На текущий момент возможно 2 варианта ребута. Через отдельную плату с контроллером, которая подключается в материнскую плату с windows, а также с помощью выключения/включения питания на виндовом хабе мейна. При успешном выполнении вернет последовательно:
{"status":614,"description":"Power disabled -> 00 00 55 \r\n<- 01 A0 A0 \r\n"}
{"status":615,"description":"Power enabled -> 01 00 55 \r\n<- 01 A0 A0 \r\n"}
Описание статусов
Статус в JSON Описание в JSON Сообщение Описание 1 Scanner successfully enabled {status = 1, description = "Scanner successfully enabled"} Успешная инициализация сканера -1 Scanner not connected {status = -1, description = "Scanner not connected"} Сканер не подключен 311 Zombie thread finished {status = 311, description = "Zombie thread finished"} Зависшие потоки успешно уничтожены (возвращается на killThreads) -71 Device is inaccessible {status = -71, description = "Device is inaccessible"} Устройство недоступно. Возвращает в случае, когда сканирование производится после отвала по питанию. 303 Files deleted {status = 303, description = "Files deleted"} Файлы удалены 51 Document detected {status = 51, description = "Document detected"} Документ находится на сканере -51 Document not detected {status = -51, description = "Document not detected"} Документ на сканере отсутствует 2 Starting scanning {status = 2, description = "Starting scanning"} Начало сканирования 3 Scanning finish {status = 3, description = "Scanning finish"} Сканирование завершено 4 Trustability checking started {status = 4, description = "Trustability checking started"} Начало проверки подлинности 5 Trustability checking finish {status = 5, description = "Trustability checking finish"} Проверка подлинности завершена 100 finish Будет содержаться в общем финальном сообщении (см. порядок сканирования и распознавания документа) Сканирование и распознавание документа успешно завершено -100 Can't recognize fields Будет содержаться в общем финальном сообщении Не удалось распознать документ и поля 614 Power disabled -> 00 00 55 \r\n<- 01 A0 A0 \r\n
{"status":614,"description":"Power disabled -> 00 00 55 \r\n<- 01 A0 A0 \r\n"}
Питание выключено 615 Power enabled -> 01 00 55 \r\n<- 01 A0 A0 \r\n
{"status":615,"description":"Power enabled -> 01 00 55 \r\n<- 01 A0 A0 \r\n"}
Питание включено Протестировать работу подключенного сканера можно через плагин для браузера chrome (Websocket Test Client)
Расширенное описание возвращаемых полей при сканировании различных типов документов доступно в приложенном файле (стр. 114).