Создание QR‑кодов является распространённой задачей в почтовых, транспортных и логистических приложениях. Если вашему приложению на Python необходимо создать QR‑код, содержащий данные, связанные с Royal Mail, такие как значение отслеживания, значение маршрутизации, почтовый индекс или пользовательская почтовая нагрузка, вы можете использовать Aspose.BarCode for Python via .NET для генерации изображения QR и последующего чтения его для проверки.

В этой статье мы создадим QR‑код Royal Mail на Python, а затем расшифруем полученное изображение QR‑кода. Примеры кода разделены на две чёткие части: одну для генерации QR‑кода и другую для чтения QR‑кода.

Примечание: В этой статье «Royal Mail QR code» означает стандартный QR‑код, который хранит данные полезной нагрузки, связанные с Royal Mail. Если вам нужен Royal Mail Mailmark, это другой тип почтового штрихкода и требует специфической структуры данных Mailmark.

Установить Aspose.BarCode for Python via .NET

Установите пакет Aspose.BarCode из PyPI, используя следующую команду:

pip install aspose-barcode-for-python-via-net

После установки вы можете использовать API генерации для создания изображений штрих‑кодов и API распознавания для чтения изображений штрих‑кодов.

Шаги по генерации QR‑кода Royal Mail на Python

Выполните следующие шаги, чтобы создать QR‑код Royal Mail:

  1. Импортируйте пространство имён generation из aspose.barcode.
  2. Подготовьте текст полезной нагрузки Royal Mail, который вы хотите закодировать.
  3. Создайте объект BarcodeGenerator.
  4. Установите тип штрихкода в generation.EncodeTypes.QR.
  5. Сохраните сгенерированное изображение QR‑кода, используя generation.BarCodeImageFormat.PNG.

Создание QR‑кода Royal Mail на Python

В следующем примере кода показано, как сгенерировать QR‑код Royal Mail и сохранить его в виде PNG‑изображения.

from aspose.barcode import generation

# Data to encode in the QR code
# Replace this with your actual Royal Mail payload / tracking / label data
royal_mail_data = "ROYALMAIL|TRACKING=AA123456789GB|POSTCODE=SW1A1AA"

# Generate Royal Mail QR Code
file_name = "royal_mail_qr.png"

generator = generation.BarcodeGenerator(
    generation.EncodeTypes.QR,
    royal_mail_data
)

generator.save(file_name, generation.BarCodeImageFormat.PNG)

print("QR Code generated:", file_name)

В этом примере класс BarcodeGenerator создает QR‑код из переданного текста. Значение generation.EncodeTypes.QR указывает, что выводимый штрих‑код должен быть QR‑кодом. Наконец, метод save() экспортирует сгенерированное изображение штрих‑кода в файл PNG.

Вы можете заменить примерное значение royal_mail_data на ваш реальный payload Royal Mail. Например, вы можете закодировать номер отслеживания, идентификатор ярлыка, почтовый индекс или другое почтовое значение, необходимое вашему приложению.

Шаги для чтения QR‑кода Royal Mail на Python

После генерации QR‑кода вы можете считать его обратно, чтобы убедиться, что закодированные данные верны. Выполните следующие шаги:

  1. Импортируйте пространство имён barcoderecognition из aspose.barcode.
  2. Создайте экземпляр BarCodeReader и передайте путь к изображению QR‑кода.
  3. Установите тип штрих‑кода в br.DecodeType.QR.
  4. Вызовите read_bar_codes(), чтобы извлечь результаты штрих‑кода.
  5. Прочитайте декодированный текст из свойства code_text.

Считывание QR-кода Royal Mail в Python

Следующий пример кода показывает, как прочитать сгенерированное изображение QR‑кода Royal Mail.

from aspose.barcode import barcoderecognition as br

# Read Royal Mail QR Code
file_name = "royal_mail_qr.png"

reader = br.BarCodeReader(file_name, br.DecodeType.QR)

for result in reader.read_bar_codes():
    print("Barcode Type:", result.code_type_name)
    print("Barcode Data:", result.code_text)

Класс BarCodeReader считывает изображение штрихкода из указанного пути к файлу. Значение br.DecodeType.QR указывает считывателю искать QR‑коды. Метод read_bar_codes() возвращает обнаруженные результаты штрихкода, и каждый результат раскрывает тип штрихкода и декодированный текст через code_type_name и code_text.

Полный пример генерации и чтения

Вы также можете объединить генерацию и распознавание в одном скрипте. Это полезно, когда вы хотите сразу после создания проверить сгенерированный QR‑код.

from aspose.barcode import generation
from aspose.barcode import barcoderecognition as br

# Data to encode in the QR code
# Replace this with your actual Royal Mail payload / tracking / label data
royal_mail_data = "ROYALMAIL|TRACKING=AA123456789GB|POSTCODE=SW1A1AA"

# 1) Generate Royal Mail QR Code
file_name = "royal_mail_qr.png"

generator = generation.BarcodeGenerator(
    generation.EncodeTypes.QR,
    royal_mail_data
)

generator.save(file_name, generation.BarCodeImageFormat.PNG)

print("QR Code generated:", file_name)

# 2) Read Royal Mail QR Code
reader = br.BarCodeReader(file_name, br.DecodeType.QR)

for result in reader.read_bar_codes():
    print("Barcode Type:", result.code_type_name)
    print("Barcode Data:", result.code_text)

Этот полный скрипт сначала создает изображение QR‑кода с именем royal_mail_qr.png. Затем он загружает то же изображение с помощью BarCodeReader, декодирует QR‑код и выводит тип штрихкода и закодированные данные.

Проверка декодированных данных QR‑кода

Для почтовых и транспортных рабочих процессов рекомендуется проверять каждый сгенерированный QR‑код перед печатью или отправкой в другую систему. Вы можете сравнить декодированный результат с исходной полезной нагрузкой:

for result in reader.read_bar_codes():
    if result.code_text == royal_mail_data:
        print("QR code validation passed.")
    else:
        print("QR code validation failed.")

Этот простой шаг проверки помогает убедиться, что сгенерированное QR‑изображение содержит те же данные, которые ваше приложение намеревалось закодировать.

Обработка различных форматов изображений QR‑кода

Приведённые выше примеры сохраняют QR‑код в формате PNG, потому что PNG — это формат без потерь, который обычно является хорошим выбором для печати и сканирования. Aspose.BarCode также может сохранять изображения штрих‑кодов в других поддерживаемых форматах при необходимости.

ФорматСценарий использования
PNGБез потерь вывод для печати и сканирования
JPGМеньшие файлы, где небольшая компрессия приемлема
BMPПростой растровый вывод для устаревших систем
GIFЛёгкий вывод изображений для базовых сценариев использования
TIFFАрхивные или высокоразрешающие рабочие процессы с документами

Чтобы изменить формат изображения, обновите второй аргумент метода save(). Например, используйте соответствующее значение из generation.BarCodeImageFormat.

Лучшие практики для рабочих процессов QR‑кода Royal Mail

  • Используйте точный формат полезной нагрузки, требуемый вашим рабочим процессом Royal Mail, доставки или генерации этикеток.
  • Держите изображение QR‑кода четким, с высоким контрастом и без искажений.
  • Предпочитайте без потерь форматы, такие как PNG, для печатных этикеток.
  • Декодируйте сгенерированное изображение после создания, чтобы проверить закодированную полезную нагрузку.
  • Сохраняйте как оригинальную полезную нагрузку, так и результат декодирования в журналах при устранении проблем с этикетками.

Общие используемые классы API

В этой статье используются следующие классы и значения Aspose.BarCode for Python via .NET:

APIНазначение
generation.BarcodeGeneratorСоздаёт изображения штрих‑кодов.
generation.EncodeTypes.QRУказывает QR‑код в качестве типа штрих‑кода для генерации.
generation.BarCodeImageFormat.PNGСохраняет сгенерированное изображение штрих‑кода в формате PNG.
br.BarCodeReaderЧитает изображения штрих‑кодов.
br.DecodeType.QRУказывает QR‑код в качестве типа штрих‑кода для распознавания.
read_bar_codes()Возвращает обнаруженные результаты штрих‑кода из изображения.
result.code_textПолучает расшифрованный текст штрих‑кода.
result.code_type_nameПолучает название обнаруженного типа штрих‑кода.

Заключение

Вы можете генерировать и считывать QR‑коды Royal Mail в Python, используя всего несколько строк кода и Aspose.BarCode for Python via .NET. Используйте generation.BarcodeGenerator с generation.EncodeTypes.QR для создания QR‑кода, сохраните его с помощью generation.BarCodeImageFormat.PNG, а затем используйте br.BarCodeReader с br.DecodeType.QR для декодирования сгенерированного изображения.

Этот процесс генерации и распознавания полезен для проверки QR‑кодов перед их печатью на почтовых этикетках, хранением в системах доставки или отправкой в downstream‑логистические приложения.

Часто задаваемые вопросы

  • Какой самый простой способ сгенерировать QR‑код Royal Mail в Python?
    Use generation.BarcodeGenerator with generation.EncodeTypes.QR, pass your Royal Mail-related payload text, and save the output using generator.save().

  • Как прочитать изображение QR‑кода Royal Mail в Python?
    Use br.BarCodeReader(file_name, br.DecodeType.QR) and loop through the results returned by read_bar_codes().

  • Какое свойство возвращает расшифрованный текст QR‑кода?
    Используйте result.code_text, чтобы получить расшифрованное значение из каждого результата распознавания штрих‑кода.

  • Могу ли я использовать этот код для Royal Mail Mailmark?
    Не напрямую. В этой статье используется стандартная генерация и распознавание QR Code. Royal Mail Mailmark — отдельный тип почтового штрихкода со своей обязательной структурой данных.

Читать далее