Що таке зчитувач QR-кодів?
QR-код — це двовимірний матричний штрих-код, визначений стандартом ISO/IEC 18004. Він кодує текст, URL, контактні картки, облікові дані Wi-Fi та інші короткі дані у вигляді сітки чорно-білих квадратних модулів із даними корекції помилок Ріда-Соломона, що дозволяє декодувати символ навіть після часткового пошкодження або накладення логотипу. Зчитувач QR-кодів виконує зворотну операцію: бере зображення QR-символу та відновлює оригінальний рядок даних. Цей зчитувач запускає конвеєр декодування безпосередньо у вашому браузері за допомогою бібліотеки з відкритим кодом jsQR (близько 130 КБ, ліцензія MIT). Зображення, яке ви перетягуєте, вставляєте або знімаєте камерою, не покидає вкладку. Кроку завантаження немає.
Як працює декодування QR?
Декодування виконується повністю на вашому пристрої. Кожне зображення проходить через фіксований конвеєр перед поверненням тексту даних:
- Файл зображення (PNG, JPG, WebP або кадр камери) відмальовується на позаекранний HTML-елемент
<canvas>. Canvas API повертає необроблені піксельні дані як масив байтів RGBA. - Бібліотека jsQR перетворює масив пікселів на чорно-біле растрове зображення та сканує три характерних квадрати шаблону пошуку в кутах QR-символу.
- Після виявлення шаблонів пошуку декодер обчислює перетворення перспективи та витягує повну сітку модулів, зчитуючи кожну комірку як двійковий 0 або 1.
- Сітка модулів аналізується відповідно до специфікації QR: спочатку зчитуються формат та інформація про версію, потім модулі даних де-перемежовуються та застосовується корекція помилок Ріда-Соломона.
- Виправлені кодові слова декодуються відповідно до режиму сегмента (числовий, буквено-цифровий, байтовий або кандзі), що дає оригінальний рядок даних.
- Інструмент аналізує дані за допомогою невеликого набору регулярних виразів для визначення типу вмісту (URL, облікові дані Wi-Fi, vCard тощо) та відображає результат із відповідною кнопкою дії.
Навіщо використовувати браузерний зчитувач QR?
- Байти зображення не покидають ваш пристрій. Вставте QR, що приховує пароль Wi-Fi, внутрішній URL або vCard з особистим номером телефону — цей вміст залишається на вашому комп'ютері. Інші зчитувачі QR виконують декодування на віддаленому сервері та просять завантажити зображення — цей не робить цього.
- Після завантаження сторінки декодування працює офлайн. Бібліотека jsQR знаходиться у вашій вкладці. Ви можете відключити Wi-Fi, перетягнути зображення QR на сторінку та все одно отримати дані — корисно в літаках, підвалах і скрізь, де корпоративна мережа блокує сторонні сканери.
- Якщо ваш комп'ютер має веб-камеру, ви можете навести її на друкований QR-код і прочитати його без встановлення додатку або розблокування телефону. Потік камери залишається в браузері та зупиняється в момент декодування.
- Зчитувач розпізнає URL, рядки підключення Wi-Fi, vCard, MeCard, mailto, SMS та геодані й відображає відповідну кнопку дії. Відкрийте URL, скопіюйте пароль Wi-Fi, збережіть контактну картку — що б не містив QR-код.
Поширені варіанти використання зчитувача QR-кодів
Коли потрібно дізнатись, що насправді кодує QR-код, без наведення телефону:
- Налагодження щойно згенерованих кодів. Вставте QR, який створив ваш застосунок (або зробіть знімок екрана з генератора QR-кодів поруч) і підтвердьте, що закодований URL або дані відповідають задуманому — до відправки на друк, упакування або плакат.
- Відновлення облікових даних Wi-Fi. Скануйте QR Wi-Fi зі сторінки налаштувань роутера, готельної картки або фото оголошення AirBnB — зчитувач поверне SSID, тип безпеки та пароль у вигляді тексту, який можна скопіювати на інший пристрій.
- Аудит і доступність. Декодуйте QR-коди на відсканованих документах, ярликах продуктів, бейджах конференцій або знімках екрана соціальних мереж, щоб витягти вміст у таблицю, журнал відповідності або допоміжне програмне забезпечення.
Як виглядає декодування реального QR-коду?
Візьмемо QR-код Wi-Fi, надрукований на вікні кав'ярні. За символом знаходяться дані у форматі схеми WIFI: URI: WIFI:S:CafeGuest;T:WPA;P:espresso2026;H:false;;. Сфотографуйте символ, перетягніть зображення у зону завантаження вище — конвеєр запуститься: canvas зчитає пікселі, jsQR знайде три кутових шаблони, перетворення перспективи випрямить сітку, Рід-Соломон виправить пошкодження від відблисків або стиснення, і байтовий сегмент поверне URI-рядок. Зчитувач визначить префікс WIFI: та позначить тип як Wi-Fi, розпізнає назву мережі CafeGuest, тип безпеки WPA та пароль espresso2026. Кнопка Копіювати збереже пароль у буфер обміну для вставки в мережевий менеджер ОС. Для звичайного URL QR з https://tools.ultim8soft.com той самий конвеєр поверне значок типу URL та кнопку Відкрити.
Цей зчитувач QR-кодів створений для однієї мети: показати вам точно, що кодує QR-код, у вашому браузері, без сервера між вами та результатом. Перетягніть зображення, вставте з буфера обміну або запустіть веб-камеру — декодований вміст і його тип з'являться на екрані менш ніж за секунду. Байти зображення не завантажуються. Кадри камери не записуються. Декодовані дані не проходять через чиїсь журнали.
Зображення завантажується на сервер?
Ні. Зображення малюється на HTML-canvas у пам'яті та декодується повністю клієнтським JavaScript у вашій вкладці. Жоден піксель вашого зображення ніколи не надсилається на сервер, не журналюється і не зберігається. Ви можете підтвердити це, відкривши DevTools і спостерігаючи за панеллю Network під час перетягування зображення: жодного XHR, жодного fetch, жодного аналітичного маяка, прив'язаного до вмісту файлу.
Як працює сканування з камери?
Коли ви вмикаєте режим камери, браузер запитує дозвіл на доступ до камери через стандартний API getUserMedia. Відеокадри захоплюються на позаекранний canvas з роздільністю до 640×480 та передаються до jsQR для декодування. Кожен кадр відкидається в момент отримання наступного, а потік камери зупиняється після першого успішного декодування. Жодні кадри не записуються, жодні кадри не передаються, а запит дозволу спрацьовує лише коли ви перемикаєте тумблер — не при завантаженні сторінки.
Чому деякий вміст QR автоматично визначається як Wi-Fi або vCard?
Дані QR для облікових даних Wi-Fi мають формат WIFI:S:ssid;T:type;P:password;;, а vCard починаються з BEGIN:VCARD. Цей зчитувач розпізнає ці шаблони разом з іншими стандартними префіксами (mailto:, geo:, smsto:, MECARD:, https://) та автоматично позначає тип вмісту, щоб кнопка дії відповідала тому, що ви хочете зробити з даними.
Чому мій QR-код не відсканувався?
Поширені причини: зображення занадто мале або має низьку роздільність (~100×100 пкс — мінімум, 300×300+ сканується надійно), символ має серйозні пошкодження або частково перекритий логотипом без достатньої корекції помилок, тиха зона (пустий кордон навколо модулів) відсутня або обрізана, або контраст між темними та світлими модулями занадто низький. Для режиму камери покращіть освітлення або наблизьте код до об'єктиву — jsQR має чітко розрізняти окремі модулі для захоплення шаблонів пошуку.