В моей работе встретилась такая задача, как проверка кассовых чеков на корректность и легальность. Чеки хранились в отсканированном виде и требовалось найти решение получения платежных данных для последующей проверки в налоговых органах. На помощь пришла технология Computer Vision (компьютерное зрение). С помощью этой технологии получилось считать с изображений QR-коды чеков, расшифровать и проверить их.
2594 просмотров
Классическая задача компьютерного зрения — это обработка изображений и видеоданных, и библиотека pyzbar эту задачу успешно выполняет. Поиск QR-кода реализует на достаточно высоком уровне, поэтому мой выбор пал на нее.
Но для начала краткая истории появления QR-кода. QR-код (Quick response code – код быстрого реагирования) был разработан Масахиро Хара в японской компании Denso-Wave в 1994г. Несмотря на то что код был разработан для упрощения работы сотрудников на производстве за счет простоты и удобства он получил распространение во многих сферах деятельности человека.
расшифровка QR-кодов
В первой части статьи я расскажу, как сгенерировать свой QR-код. Во второй части будет рассказано как считать и декодировать QR-код.
Первым делом установим все необходимые библиотеки.
pip install pyzbar qrcode opencv-python glob
pyzbar — декодирование QR-кодов;
qrcode — создание QR-кодов;
opencv-python — работа с изображениями;
glob — считывание всех файлов в указанной папке.
Как сгенерировать QR-код
Создать собственный QR-код легче, чем может показаться.
import qrcode qr = qrcode.QRCode() qr.add_data(‘https://yandex.ru’) img = qr.make_image() img.save(‘ya.png’)
Результат работы кода.
Если требуется создать код под свои нужды, можно вписать параметры создания QR-кода.
В таком простом исполнении параметры создания QR-кода будут выставлены автоматически, но можно создать и по своим параметрам.
qr = qrcode.QRCode( version = 3, box_size = 10, border = 2, error_correction = qrcode.constants.ERROR_CORRECT_Q ) qr.add_data(‘https://yandex.ru’) img = qr.make_image(back_color=’yellow’, fill_color=’black’) img.save(‘ya2.png’)
Тот же самый адрес сайта, но QR-код уже отличается.
Параметр version может быть от 1 до 40, от 21х21 до 177х177 пикселей, не учитывая поля.
Параметр box_size отвечает за количество пикселей в каждом квадрате QR-кода.
Параметр border создает границу вокруг QR-кода.
Параметр Error_correction служит для восстановления кода, если код повредился и плохо читаем.
Каждый уровень указывает на процент данных для восстановления.
В методе make_image() добавил параметр back_color, отвечающий за цвет фона и fill_color- за цвет QR-кода.
Добавим логотип в наш QR-код. Раз у нас ссылка ведет на сайт yandex.ru, то и логотип будем использовать от Яндекса.
from PIL import Image logo = Image.open(‘yandex_logo.png’) qr = qrcode.QRCode( version = 3, box_size = 10, border = 2, error_correction = qrcode.constants.ERROR_CORRECT_H ) pos = ( (img.size[0] — logo.size[0]) // 2, (img.size[1] — logo.size[1]) // 2, ) qr.add_data(‘https://yandex.ru’) img = qr.make_image().convert(‘RGB’) # конвертируем в RGB чтобы логотип был цветным img.paste(logo, pos) img.save(‘yandex_qr_logo.png’)
Вставляя логотип, мы повреждаем часть QR-кода, но из-за того, что мы добавили 30% на восстановление при ошибках, код считывается без проблем.
Перейдем ко второй части и попробуем декодировать зашифрованные данные кода.
Как декодировать QR-код
Импортируем установленные библиотеки.
Также я буду использовать библиотеку glob. Glob создает список файлов по указанному пути и мы поочередно их считываем.
from pyzbar import pyzbar import cv2 from glob import glob
Чтобы показать, как работает библиотека, считаем 1 чек и посмотрим, какой результат она выдаст.
filename = ‘receipts/1.jpg’ img = cv2.imread(filename) # Считываем файл с изображением qrcodes = pyzbar.decode(img) # Создается список найденных кодов print(qrcodes)
pyzbar.decode() принимает изображение с QR-кодом и декодирует его, выдавая параметры самого QR-кода и обнаруженные данные.
[Decoded(data=b’t=20170221T095900fn=99990789659fp=4189225230′)) return all_data
В основном коде дополнительно импортировал библиотеку pandas для создания датафрейма.
# данные чеков которые я буду собирать в отдельную таблицу # t — timestamp, время, когда осуществлена покупка # s — сумма чека # fn —номер фискального накопителя # fd — номер фискального документа # fp — информация для проверки ФД # n — номер чека import pandas as pd df_good = pd.DataFrame() # Удачно считанные данные df_bad = pd.DataFrame() # список не распознанных кодов for filename in glob(‘receipts/*.jpg’): # Считываем тип файлов только jpg data = getQr(filename) if data != []: for cell in data: # если на изображении больше 1 кода df_good = df_good.append(pd.DataFrame([cell])) else: df_bad = df_bad.append(pd.DataFrame([filename])) if len(df_good) != 0: df_good.columns = [‘t’, ‘s’, ‘fn’, ‘fd’, ‘fp’, ‘number’] df_good.reset_index(drop=True, inplace=True) if len(df_bad) != 0: df_bad.columns = [‘filename’] df_bad.reset_index(drop=True, inplace=True) data — сами данные которые мне нужны; type — тип кода, меня интересовал тип ‘QRCODE’; rect — координаты QR-кода на изображении; polygon – координаты точек(углов) QR-кода.
Посмотрим удачно считанные коды.
Источник: vc.ru
Расшифровать QR код
На этой странице можно бесплатно расшифровать QR код, онлайн. Иначе говоря декодер qr кодов онлайн или qr code decode online. Считывание и распознавание QR кода.
Пожалуйста напишите с чем связна такая низкая оценка:
Для установки калькулятора на iPhone — просто добавьте страницу
«На главный экран»
Для установки калькулятора на Android — просто добавьте страницу
«На главный экран»
Смотрите также
158 дн. назад
Любой сканер делает тоже самое.
Где найти расшифровку ST00011, ST00012?
167 дн. назад
Не расшифровывается. Обрезай не Обрезай, всё равно получишь failed.
303 дн. назад
есть QR коды-приложение которые сами расшифровку делают и всё это в одном телефоне , а не как у вас . И вообще у вас всё запутано.
318 дн. назад
Обрезать картинку есть возможности во многих программах. В тех же галереях для фото. Наприме на моем смартфоне нажимаю на открытое фото, внизу появляется значек карандаша, на него нажимаем и появляются разные возможности для редактирования. Хотя есть возможности обрезки и у некоторых программ сканеров »»»кодов
387 дн. назад
Первый из 4-х сервисов в выдаче Яндекса, который расшифровал код СБП
501 дн. назад
Всё прекрасно работает, отличный сайт, спасибо!) Очень выручила расшифровка, т.к. нужен был гугл аутентификатор на ПК, а с телефоном сидеть нет желания).
550 дн. назад
Не знаю, у меня расшифровывает большинство qr кодов, да иногда надо обрезать, но «Failed» крайне редко выдаёт. Если выдаёт ошибку, то я уже расшифровываю с помощью камеры телефона.
Может Вы забываете нажать кнопку «Расшифровать код» ?
550 дн. назад
У меня тоже не получилось расшифровать. Идея востребованная, но стоит переработать алгоритмы.
551 дн. назад
Ничего не работает. Картинку обрезала, оставила только QR код. Ничего не определяет.
616 дн. назад
Всё работает. Первый комментатор врёт
Источник: allcalc.ru
Что такое QR код и как его использовать
В переводе с английского языка QR-Code – это код быстрого реагирования, матричный (двухмерный) штрихкод, который был разработан для японской автомобильной промышленности. Для более эффективного хранения данных использует четыре режима кодирования: числовой, буквенно-цифровой, двоичный и кандзи.
Визуально представляет из себя совокупность черных квадратов в квадратной сетке с белым фоном. Квадраты могут быть считаны с помощью камер, декодирование происходит благодаря использованию особого алгоритма до тех пор, пока информация не будет дешифрована.
Используется практически во всех сферах современной жизни. С его помощью передают ссылки, отсылают поздравления, кодируют инструкции на упаковках товара и многое другое.
Онлайн сервисы для считывания штрихкодов
ZXing Decoder Online
Интерфейс ZXing Decoder Online довольно прост, а также интуитивно понятен.
Основные возможности – декодирование по ссылке из интернета, либо выбранного на ПК изображения.
Для того, чтобы считать баркод, расположенный на компьютере, необходимо:
- кликнуть на кнопку “Выберите файл”, найти нужный файл, “Открыть” затем “Отправить”;
- результат отобразится в поле “Parsed Result”;
- для считывания информации с изображения по ссылке, нужно скопировать ее;
- вставить в поле «Enter an image URL», выбрать “Отправить”;
- Получить результат.
FoxTools
Среди функций FoxTools есть создание (обычный текст, визитная карточка, шаблон SMS) и чтение (из файла или по ссылке) QR кода.
Процедура декодирования происходит точно так же, как и в предыдущем сервисе.
Вот так выглядит процесс:
И результат:
Decode it!
Decode it! поддерживает только расшифровку из файла.
Нужно выбрать файл на компьютере, нажать кнопку “Отправить” и получить результат.
Imgonline
Imgonline поддерживает только распознавание штрихкодов.
Для использования также необходимо выбрать файл, при желании его тип и нажать кнопку “ОК”.
Что такое «Вертикальная синхронизация» в играх
Получить результат.
Генераторы штрих кода – онлайн сервисы
QR Hacker
Для создания штрихкода с помощью QR Hacker необходимо определиться с типом кодируемой информации (текст, ссылка, пароль от сети Wi-Fi, номер телефона или визитная карточка).
Выбрать нужный тип, в поле ниже внести информацию, затем нажать “Generate”. Внешний вид результата может быть изменен справа в поле “Customize”. Для сохранения нажать “SAVE”.
QR Coder.ru
Для работы в QR Coder.ru так же нужно выбрать тип исходных данных, размер штрихкода и нажать на кнопку “Создать”.
Получить результат можно в виде изображения, ссылки на него или в виде HTML.
Qrmania.ru
На сайте Qrmania.ru штрих код создается динамически, в процессе изменения информации не нужно никуда нажимать, ничего отправлять, просто следует определиться с типом баркода (визитка, номер телефона и т.д).
После заполнения всех полей в правой части сайта отобразится штрихкод.
При создании есть возможность:
- изменить цвет;
- скруглить углы;
- скорректировать ошибки;
- сохранить файл в форматах PNG (с указанием размера в пикселях) и в формате SVG.
Как прочитать QR-код с помощью смартфона
Для прочтения баркода со смартфона существует множество приложений. На некоторых операционных системах они уже встроены, но в большинстве случаев есть необходимость их загрузки из магазина приложений.
Молния QR-сканер
После запуска приложения для сканирования на экране появляется следующее окно камеры:
Вверху три кнопки:
- Вспышка;
- История;
- Галерея.
Интерфейс прост в использовании, для того, чтобы расшифровать код, необходимо поместить изображение в высветленное поле. Результат отобразится на экране.
QR-сканер
Сканер визуально, выглядит так:
Для сканирования нужно поместить код в обозначенные рамки.
В результате получаем расшифрованный текст.
Снизу расположены 4 кнопки:
- История сканирований;
- Создание штрихкода;
- Избранное (для того, чтобы выводить только нужные результаты сканирования);
- Настройки.
Знак корня на клавиатуре
Расшифровка QR кода без сканера
Существует возможность расшифровки без использования сторонних сервисов и приложений:
- Для определения расположения кода служат «Поисковые узоры», которые расположены в трех углах изображения;
- Три фрагмента, расположенные между поисковыми узорами, позволят сканеру определить размеры шифра;
- На расстоянии в одно поле от поисковых узоров расположены данные о кодировке и корректирующий код, который помогает снизить количество ошибок при расшифровке;
- В следующей области расположена системная информация, которая помогает определить устройству, какой тип маски нужно применить;
- Информацию можно прочесть в бинарном виде. Черный равен 1, белый – 0;
- Четырехсторонний блок внизу дает информацию о том, какая кодировка должна быть использована. В приведенном примере стоит 0100. Для декодирования будет нужна ASCII-таблица;
- Следующий блок указывает на количество символов, которые нужно расшифровать;
- Третий блок — это также и первый знак. Для того чтобы перевести на понятный язык ASCII следует начать именно с него.
Программы для создания QR кодов
QR Code Studio (Для ПК на OS Windows и MacOS)
Инструкция по использованию Code Studio:
- Подогнать код под нужные размеры и разрешение;
- Кликнуть на кнопку “Помощник ввода данных”, выбрать из списка нужный формат исходных данных;
- Ввести в поле адрес сайта (либо другую информацию, в зависимости от формата) и нажать ОК;
- Сохранить изображение – кликнуть по рабочей области правой кнопкой мыши и выбрать удобный способ;
QR-сканер для Андроид
Сканер дает возможность создания QR-code.Интерфейс понятен и доступен.
В открытом приложении нужно кликнуть на кнопку “Создайте”.
Выбрать нужную категорию, затем ввести данные, нажать на галочку в правом верхнем углу и получить результат.
Генератор штрихкодов для Android
Для создания QR-кода в генераторе следует нажать на “+”, затем “Добавить код”.
Лучшие бесплатные темы для WordPress – преобрази свой сайт
Далее, выбрать тип кода и тип исходных данных.
Ввести информацию и QR Code generator выдаст результат.
QR-Code Generator Scanner» width=»300″ height=»533″ />
На главном экране Code Generator http://composs.ru/qr-kod-rasshifrovat/» target=»_blank»]composs.ru[/mask_link]