Можливий сценарій
У вас є додаток, в якому необхідно перевіряти особу користувачів. Ця перевірка полягає в завантаженні особистого документа, такого як паспорт, посвідчення водія, медична картка тощо.
Процес валідації даних може бути довгим з боку установи, яка запитує документ (ви чи ваша компанія). Оскільки перевірка цих даних є складною, часто виникають помилки при введенні.
Для прискорення цього процесу можна скористатися OCR.
Але що таке OCR?
Згідно з порталом Azure:
Оптичне розпізнавання символів або OCR також відоме як розпізнавання тексту або витягування тексту. Технології OCR, засновані на машинному навчанні, дозволяють витягувати надрукований або рукописний текст з зображень, таких як афіші, дорожні знаки та етикетки товарів, а також з документів, таких як статті, звіти, форми та рахунки. Текст зазвичай витягується як слова, рядки тексту та абзаци або блоки тексту, що дозволяє отримати доступ до цифрової версії відсканованого тексту. Це усуває або значно зменшує необхідність у ручному введенні даних.
Чудово! Тепер ми знаємо, що таке OCR і для чого він потрібен.
Базово це сервіс, який витягує весь текст з зображення.
Наступний крок — навчитися користуватися OCR-сервісом від Azure.
1. Створення облікового запису на Azure
Перейдіть на https://azure.microsoft.com/en-us/get-started/azure-portal і створіть обліковий запис. Для використання сервісів необхідно вказати кредитну або дебетову картку.
Azure має дві програми безкоштовних послуг: ті, що безкоштовні протягом року, та інші, що безкоштовні назавжди. Обидві мають обмеження на використання.
У нашому випадку, станом на 2 січня 2025 року, Azure AI Services має ліміт на 5,000 безкоштовних запитів на місяць з частотою до 20 запитів на хвилину. Тобто ви можете зробити до 20 запитів на хвилину безкоштовно. Якщо ви зробите більше запитів, Azure стягне стандартну плату за додаткові запити.
Якщо потрібно оцінити витрати, ось посилання на калькулятор цін Azure.
2. Створення підписки
Azure має інше розуміння підписок, ніж те, до чого ми звикли. У Azure підписка — це, по суті, контейнер, до якого можна додавати кілька сервісів або ресурсів.
Підписка може містити один або кілька ресурсів. Щоб краще зрозуміти концепцію, ви можете уявити, що ви адмініструєте платформи для кількох клієнтів. Кожному клієнту ви надаєте підписку і призначаєте ресурси, необхідні кожному з них.
Кожна підписка має свій власний панель управління ресурсами, витратами, безпекою, подіями, ролями тощо. Ось як ми і створимо підписку.
Головна сторінка адміністратора Azure
На головній сторінці ми побачимо список сервісів для створення та управління. Щоб створити підписку, натискаємо Subscriptions
. Це перенесе нас на сторінку зі списком усіх підписок, які ми створили. Натискаємо + Add
і переходимо до наступного кроку:
- Subscription name:
Введіть унікальне ім'я для ідентифікації вашої підписки. - Billing account:
Виберіть рахунок для виставлення рахунків.
Це представляє основний рівень управління витратами. - Billing profile:
Виберіть профіль для виставлення рахунків, який визначає деталі, такі як метод і цикл оплати. - Invoice section:
Виберіть розділ для виставлення рахунків, де будуть згруповані витрати для цього сервісу. - Plan:
Оберіть тарифний план, який відповідає вашим потребам (за замовчуванням вибрано “Microsoft Azure Plan”).
У вкладці Advanced
будуть ці опції:
- Subscription directory:
Виберіть каталог Azure Active Directory (AAD), який буде використовуватися для цієї підписки. У прикладі це виглядає так:
Default Directory (Ідентифікатор за замовчуванням).
Якщо у вас є кілька каталогів, виберіть той, який відповідає групі користувачів або ресурсів, які будуть використовувати цю підписку.
Метою каталогів є управління користувачами, групами та правами доступу в межах організації.
- Management group:
Вкажіть групу управління, до якої буде прив'язана ця підписка. Ця група дозволяє організовувати та застосовувати політики до кількох підписок. Приклад:
Root management group.
Якщо ви не впевнені, виберіть групу за замовчуванням або створіть нову.
- Subscription owner:
Введіть електронну адресу власника підписки. Цей користувач матиме повний доступ до ресурсів та налаштувань у межах підписки.
Приклад: test@test.com
У вкладці Budgets
можна встановити ліміт на гроші, які може спожити ця підписка. Мінімум — 1 долар.
Ви можете налаштувати сповіщення, коли підписка досягне певного відсотка від ліміту споживання.
Нарешті, у вкладці Tags
можна створити змінні середовища. Тобто можна створити тег з ім'ям environment і значенням development. Оскільки вони можуть бути використані повторно, ви можете мати тег у кількох підписках.
3. Створення ресурсу (Computer Vision)
Щоб додати ресурс до створеної підписки, переходимо на головну сторінку, натискаємо на Computer Vision. Нас перенаправить на розділ, де буде список всіх ресурсів, які ми створили. Натискаємо + Add
і потрапляємо на наступну сторінку:
- Subscription:
Оберіть підписку Azure, яку хочете використовувати. - Resource Group:
Створіть нову групу ресурсів або виберіть вже існуючу.
Згідно з порталом Azure:
Група ресурсів — це контейнер, який зберігає ресурси, пов’язані з рішенням Azure. Група ресурсів може містити всі ресурси рішення або тільки ті, які потрібно керувати як групу. Щоб визначити, як призначати ресурси до групи ресурсів, слід враховувати, що найкраще підходить для вашої організації. Зазвичай рекомендується додавати ресурси, які мають спільний життєвий цикл, до однієї групи ресурсів, щоб їх можна було легко впроваджувати, оновлювати та видаляти разом.
- Region:
Оберіть географічний регіон, де буде розташовано сервіс. Якщо ви не впевнені, яку локацію вибрати, враховуйте затримку, яка може бути між серверами вашого додатка та сервісом Azure. Також слід перевірити, чи доступний сервіс у вибраному регіоні. - Name:
Оберіть унікальне ім'я для сервісу. Це ім'я буде використано для побудови імені кінцевої точки. - Pricing Tier:
Оберіть тарифний план, який найкраще відповідає вашим потребам. Для цього посібника ми виберемо план з 5,000 запитів до API.
У розділі Network
буде можливість налаштувати мережі, які можуть отримати доступ до ресурсу. Це включає додавання публічних IP-адрес (для випадку з додатком Node).
Якщо вам потрібна додаткова інформація з цього питання, перейдіть за посиланням https://learn.microsoft.com/en-us/azure/storage/common/storage-network-security?tabs=azure-portal
Для цілей цього посібника ми залишимо вибір за замовчуванням All networks, including the internet, can access this resource.
Також буде вкладка Identity
, і ось як вона працює:
Коли ви активуєте System Assigned Managed Identity для ресурсу Azure (наприклад, для віртуальної машини або в цьому випадку, Computer Vision), Azure автоматично створює ідентифікацію, пов'язану тільки з цим ресурсом. Ця ідентифікація дозволяє ресурсу безпечно отримувати доступ до інших сервісів Azure без використання паролів чи ключів. Все управляється Azure, що робить процес більш безпечним та зручним для налаштування. Це як надання ресурсу прямого та безпечного доступу до того, що йому потрібно.
Нарешті, буде вкладка Tags
, яка працює за тією ж логікою, що була пояснена раніше.
Продовжуємо створення ресурсу.
Після створення переходимо до перегляду деталей ресурсу. Ми побачимо таку сторінку:
Тепер у нас є “облікові дані” для використання сервісів.
Computer Vision пропонує кілька сервісів для аналізу зображень та відео. Наприклад:
Аналіз зображень, Просторовий аналіз, OCR, Розпізнавання облич.
Ось посилання, де ви можете ознайомитись з усіма доступними сервісами:
https://azure.microsoft.com/en-us/products/ai-services/ai-vision
3. Використання сервісу з Node Js
Скопіюйте KEY 1
та Endpoint
.
Для зручності ми використаємо бібліотеку Axios
, але ви можете використовувати будь-яку бібліотеку, яку бажаєте.
В файлі .env
додаємо дві змінні:
MICROSOFT_AZURE_COGNITIVE_SERVICE_ENDPOINT=https://medium-tutorial-instance.cognitiveservices.azure.com
MICROSOFT_AZURE_COGNITIVE_SERVICE_API_KEY=your-KEY-1
Створюємо екземпляр Axios і робимо пост-запит.
const axios = require('axios');
const azureCognitiveServices = axios.create({
baseURL: `${process.env.MICROSOFT_AZURE_COGNITIVE_SERVICE_ENDPOINT}`
});
const analyzeImage = async (imageUrl) => {
try {
return await azureCognitiveServices.post('/computervision/imageanalysis:analyze', {
url: imageUrl
}, {
params: {
features: 'read',
language: 'es',
'api-version': '2023-04-01-preview'
},
headers: {
'Ocp-Apim-Subscription-Key': process.env.MICROSOFT_AZURE_COGNITIVE_SERVICE_API_KEY
}
});
} catch (e) {
console.error(e);
return Promise.reject(e);
}
}
Зверніть увагу на URL, до якого ми робимо запит, а також на параметри params
і заголовки headers
.
Ви можете налаштувати параметри та заголовки відповідно до цих рекомендацій:
https://learn.microsoft.com/en-us/rest/api/computervision/image-analysis/analyze-image?view=rest-computervision-v4.0-preview%20(2023-04-01)&tabs=HTTP
Налаштування коду вище призначене для зчитування інформації з DNI клієнтів. Параметр api-version
— це версія 2023-04-01-preview
, оскільки відповідь, яку сервіс генерує, є об'єктом такого вигляду:
{
"readResult": {
"stringIndexType": string,
"content": string,
"pages": any[],
"styles": any[],
"modelVersion": "2022-04-30"
},
"modelVersion": "2023-02-01-preview",
"metadata": {
"width": number,
"height": number,
}
}
Щоб отримати лише текст, використовуємо властивість readResult.content
. Ця властивість доступна тільки в версіях API з попереднім переглядом.
У моєму випадку, я використовую це для того, щоб надіслати вміст до іншого сервісу, щоб він обробив і проінтерпретував текст.
Сподіваюся, цей посібник був корисним.
Бажаю вам великих успіхів у ваших проектах.
Перекладено з: Cómo extraer el texto de una imagen en Node.js con Azure AI Services | Computer Vision