Пример авторизации и отправки запроса на распознавание паспорта
# Файлы изображений перед кодированием в base64 нужно предварительно сжать
# до приемлемых размеров (~ 512 Кб), для повышения скорости распознавания
# и снижения нагрузки на сеть.
import base64
import requests
token_url = "https://passrec.ufanet.ru/api/v0/token/"
# учетные данные для авторизации
credentials = {
'login': 'demo_user',
'password': '0123456789'
}
response = requests.request("POST", token_url, data=credentials)
data = response.json()
access_token = data.get("detail").get("access")
# url адрес распознавания
recognition_url = "https://passrec.ufanet.ru/api/v0/passports/recognition/"
# url адрес тестового паспорта
test_passport_url = "https://passrec.ufanet.ru/media/test_passport.jpg"
# конвертируем тестовое изображение паспорта в base64 строку
file_base64 = base64.b64encode(requests.get(test_passport_url).content).decode()
# пример чтения из файла на диске с последующим сжатием изображения
# with open("/path/to/image.jpeg", "rb") as image_file:
# from PIL import Image
# from io import BytesIO
# img = Image.open(image_file)
# # сжатие картинки и запись в буфер
# buffer = BytesIO()
# img.save(buffer, "JPEG", optimize=True)
# # кодирование в base64
# file_base64 = base64.b64encode(buffer.getvalue()).decode()
# подготовка данных для распознавания
payload = {
'file': file_base64,
'doc_type': 'passport',
}
# установка токена доступа в заголовки
headers = {
'Authorization': 'JWT ' + access_token
}
# отправка запрос на распознавание тестового паспорта
response = requests.request("POST", recognition_url, headers=headers, data=payload)
# просмотр результата
print(response.json())
// Код можно протестировать в консоли разработчика
var credentials = new FormData();
credentials.append("login", "demo_user");
credentials.append("password", "0123456789");
var requestOptions = {
method: 'POST',
body: credentials,
redirect: 'follow'
};
var jwtHeaders = new Headers(); // Создание заголовков для запроса по распознаванию паспорта
async function getBase64FromUrl(url) {
// Преобразование тестового изображения паспорта в base64 строку
var data = await fetch(url);
var blob = await data.blob();
return new Promise((resolve) => {
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = () => {
var base64data = reader.result.replace(/^data:image\/(png|jpg);base64,/, "");
resolve(base64data);
}
});
}
async function passportRecognition() {
// Подготовка данных:
// "file" - изображение, закодированное в формат base64
// "doc_type" - тип документа "паспорт"
var payload = new FormData();
var test_passport = "https://passrec.ufanet.ru/media/test_passport.jpg";
var base64data = await getBase64FromUrl(test_passport);
payload.append("file", base64data);
payload.append("doc_type", "passport");
var requestOptions = {
method: 'POST',
headers: jwtHeaders,
body: payload,
redirect: 'follow'
};
fetch("https://passrec.ufanet.ru/api/v0/passports/recognition/", requestOptions)
.then(response => response.json()) // отправление запроса на распознавание документа
.then(result => console.log(result)) // тут д.б. обработка результатов распознавания
.catch(error => console.log('error', error));
}
fetch("https://passrec.ufanet.ru/api/v0/token/", requestOptions)
.then(response => response.json()) // получение токенов доступа
.then(result => {
// добавление токена в заголовки запроса
jwtHeaders.append("Authorization", "JWT " + result.detail.access);
})
.then(passportRecognition) // отправка запроса на распознавание паспорта
.catch(error => console.log('error', error));