Меню

Python генератор штрих кода

Как создавать штрих-коды в ваших PDF с Python

Библиотека Reportlab — отличный способ создания PDF-файлов на Python. Недавно я заметил, что в нем есть возможность делать штрих-коды. Я слышал о том, что он может генерировать QR-коды, но я действительно не копался под одеялом, чтобы посмотреть, что еще он мог сделать. В этом руководстве мы рассмотрим некоторые штрих-коды, которые может генерировать Reportlab. Если у вас еще нет Reportlab, зайдите на их сайт и получите его, прежде чем перейти к статье.

Библиотека штрихкодов Reportlab

Reportlab предоставляет несколько различных типов штрих-кодов: code39 (т.е. код 3 из 9), code93, код 128, EANBC, QR и USPS. Я также видел одно под названием «четыре состояния», но я не мог понять, как заставить его работать. Под некоторыми из этих типов есть подтипы, такие как Стандарт, Расширенный или Мультиширина. Мне не очень повезло заставить MultiWidth работать с штрих-кодом code128, поскольку он постоянно выдавал мне ошибку атрибута, поэтому мы просто проигнорируем это. Если вы знаете, как это сделать, напишите мне в комментариях или через мою контактную форму и дайте мне знать. Я обновлю статью, если кто-нибудь может показать мне, как добавить этот или четырехсторонний штрих-код.

В любом случае, лучший способ научиться — это просто написать код. Вот довольно простой пример:

Давайте разберемся с этим немного. Код39.Extended39 на самом деле не принимает ничего, кроме самого значения. С другой стороны, code39.Standard39, code93.Standard93 и code128.Code128 имеют в основном один и тот же API. Вы можете изменить barWidth, barHeight, включить символы запуска / остановки и добавить «тихие» зоны. Модуль штрих-кода usps предоставляет два типа штрих-кода: FIM и POSTNET. FIM или Faceing ID Marks кодируют только одну букву (AD), которая лично мне не показалась очень интересной. Поэтому я просто показываю версию POSTNET, которая должна быть довольно знакома людям в Соединенных Штатах, так как она отображается внизу большинства конвертов. POSTNET кодирует почтовый индекс!

Источник

pyBarcode 0.8b1

pip install pyBarcode Copy PIP instructions

Create standard barcodes with Python. No external modules needed (optional PIL support included).

Navigation

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

License: MIT License (MIT)

Maintainers

Classifiers

  • Development Status
    • 5 — Production/Stable
  • Environment
    • Console
  • Intended Audience
    • Developers
  • License
    • OSI Approved :: MIT License
  • Operating System
    • OS Independent
  • Programming Language
    • Python
  • Topic
    • Multimedia :: Graphics
    • Software Development :: Libraries :: Python Modules

Project description

pyBarcode

This library provides a simple way to create barcodes using only the Python standardlib. The barcodes where created as SVG objects.

Requirements

  • Setuptools/distribute for installation (new in version 0.7beta4)
  • Python 2.6 or above (including Python 3.x)
  • On Python 2.6, 3.0, 3.1: argparse (for the commandline script)
  • Program to open SVG objects (your browser should do it)
  • Optional: PIL to render barcodes as images (PNG, JPG, …)

Installation

Make sure you have setuptools/distribute installed.

Unpack the downloaded file, cd into the pyBarcode directory and run python setup.py install . Or just copy the barcode dir somewhere in your PYTHONPATH.

The best way is to use pip: pip install pyBarcode .

Provided Barcodes

EAN-8, EAN-13, EAN-14, UPC-A, JAN, ISBN-10, ISBN-13, ISSN, Code 39, Code 128, PZN

  • Add documentation
  • Add more codes
  • Improve Python 3 support
  • Add simple GUI

Usage

Now open ean13_barcode.[svg|png] in a graphic app or simply in your browser and see the created barcode. That’s it.

Источник

python-barcode 0.13.1

pip install python-barcode Copy PIP instructions

Create standard barcodes with Python. No external modules needed. (optional Pillow support included).

Navigation

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

Читайте также:  Как проверить генератор 139 qmb

License: MIT License (MIT)

Maintainers

Classifiers

  • Development Status
    • 5 — Production/Stable
  • Environment
    • Console
  • Intended Audience
    • Developers
  • License
    • OSI Approved :: MIT License
  • Operating System
    • OS Independent
  • Programming Language
    • Python
    • Python :: 3
    • Python :: 3.6
    • Python :: 3.7
    • Python :: 3.8
    • Python :: 3.9
  • Topic
    • Multimedia :: Graphics
    • Software Development :: Libraries :: Python Modules

Project description

This library provides a simple way to create barcodes using only the Python standard lib. The barcodes are created as SVG objects.

Full documentation is published at http://python-barcode.rtfd.io/

Features

  • Works on Python 3.6 to 3.9
  • No visualiser (just use your browser)
  • Generate barcodes as SVG files.
  • Generate barcodes as images (png, jpeg, etc). Requires Pillow.

Installation

The best way is to use pip: pip install python-barcode . Don’t forget to add this to our app’s dependencies.

If you’ll be exporting to images (eg: not just SVG), you’ll need additional optional dependencies, so run: pip install "python-barcode[images]" (keep the quotes, most shells don’t play nice with square brackets).

Provided Barcodes

PRs for other code formats are welcome!

Usage

Now open ean13_barcode.[svg|png] in a graphic app or simply in your browser and see the created barcode. That’s it.

Changelog

v0.13.0

  • Added support for transparent backgrounds. This is done by setting the mode option for a writer to RGBA.

v0.12.0

  • Removed writer_options from barcode.get. This parameter was not used.
  • Add a with_doctype flag to SVGWriter. Set this to false to avoid including a DOCTYPE in the resulting SVG.
  • Add support for Pillow>=8.0.0 .

v0.11.0

  • Added basic support for multiline text.
  • Dropped lots of older compat-only code and other cleanups.
  • Fixed a bug in the API when combining certain barcodes and writers.
  • Published documentation again and updated all project references.
  • Fix python_barcode.get mixups between options as writer_options . Previously, some writer/barcode combinations worked fine, while others failed. Now all work consistently.
  • The cli tool has been fixed and should now work as expected again.

v0.10.0

  • Removed buggy Barcode.raw attribute.
  • Various CLI errors ironed out.
  • Make the default value for writer_options` consistent across writers.
  • Improve README rendering, and point to this fork’s location (the outdated README on PyPI was causing some confusion).

Previous Changelog

This project is a fork of pyBarcode, which, apparently, is no longer maintained. v0.8.0 is our first release, and is the latest master from that parent project.

  • Code 128 added.
  • Data for charsets and bars moved to subpackage barcode.charsets.
  • Merged in some improvements.
  • Fixed some issues with fontsize and fontalignment.
  • Added Python 3 support. It’s not well tested yet, but the tests run without errors with Python 3.3. Commandline script added.
  • Changed save and write methods to take the options as a dict not as keyword arguments (fix this in your code). Added option to left align the text under the barcode. Fixed bug with EAN13 generation.
  • Added new generate function to do all generation in one step.
  • Moved writer from a subpackage to a module (this breaks some existing code). UPC is now rendered as real UPC, not as EAN13 with the leading “0”.
  • Removed **options from writers __init__ method. These options never had effect. They were always overwritten by default_options.
  • New config option available: text_distance (the distance between barcode and text).

v0.4b2

  • Basic documentation included. The barcode object now has a new attribute called raw to have the rendered output without saving to disk.

v0.4b1

v0.3b1

  • Writer API has changed for simple adding new (own) writers.
  • SVG output is now generated with xml.dom module instead of stringformatting (makes it more robust).
Читайте также:  Генератор из тормозного диска

Project details

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

License: MIT License (MIT)

Maintainers

Classifiers

  • Development Status
    • 5 — Production/Stable
  • Environment
    • Console
  • Intended Audience
    • Developers
  • License
    • OSI Approved :: MIT License
  • Operating System
    • OS Independent
  • Programming Language
    • Python
    • Python :: 3
    • Python :: 3.6
    • Python :: 3.7
    • Python :: 3.8
    • Python :: 3.9
  • Topic
    • Multimedia :: Graphics
    • Software Development :: Libraries :: Python Modules

Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you’re not sure which to choose, learn more about installing packages.

Источник

С Python прочитаем любые штрих- и QR‑коды

Штрих-код — это метод представления данных в визуальной и машиночитаемой форме, он состоит из полос и пробелов. Сегодня мы видим штрих-коды повсюду, чаще всего на продуктах в супермаркетах.

Штрих-коды можно считывать с помощью оптического сканера штрих-кода, но здесь, для начала, напишем скрипт Python для считывания и декодирования штрих-кодов с рисунков, где они изображены.

Не столь часто используемый, но, как мне кажется, более ценный QR-код એ — тип матричного штрих-кода, который представляет собой машиночитаемую оптическую этикетку, которая содержит информацию об элементе, к которому она прикреплена. На практике QR-коды часто содержат данные для локатора, идентификатора или трекера, который указывает на веб-сайт или приложение и т. .д.

Для начала я расскажу вам, как считывать и декодировать штрих-коды, а также находить их на изображении. Потом вы узнаете, как сгенерировать и прочитать QR-коды в Python с помощью библиотек qrcode и OpenCV .

Для выполнения описанных здесь упражнений необходимо установить нужные нам зависимости:

Как сделать считыватель штрих-кода на Python

Как только зависимости будут установлены, откройте новый файл Python и импортируйте то, что нужно для считывателя:

У меня есть несколько изображений для тестирования, вы можете использовать любое изображение из Интернета или своего собственного диска, но вы можете получить мои тестовые изображения в этом каталоге .

Я разбил всю функциональность по функциям и первая функция, которую мы обсудим, следующая:

Функция decode() принимает изображение в виде массива numpy и использует pyzbar.decode() , который отвечает за декодирование всех штрих-кодов из одного изображения и возвращает кучу полезной информации о каждом обнаруженном штрих-коде.

Затем мы перебираем все обнаруженные штрих-коды, рисуем прямоугольник вокруг штрих-кода и печатаем тип и данные штрих-кода. Чтобы прояснить ситуацию, вот как каждый объект выглядел, если мы его распечатали:

Таким образом, функция pyzbar.decode() возвращает данные, содержащие штрих-код, тип штрих-кода, а также точки расположения в виде прямоугольника и многоугольника.

Это подводит нас к следующей функции, которую мы использовали, draw_barcode() :

Эта функция берет декодированный объект, который мы только что видели, и само изображение, она рисует прямоугольник вокруг штрих-кода с помощью функции cv2.rectangle() , или вы можете раскомментировать другую версию функции; рисование многоугольника с помощью функции cv2.line() , выбор за вами. Я предпочел прямоугольную версию.

Ну наконец то, он возвращает изображение, содержащее нарисованные штрих-коды. Теперь давайте воспользуемся этими функциями для наших примеров изображений:

В моем текущем каталоге у меня есть barcode1.png, barcode2.png и barcode3.png, которые являются примерами изображений отсканированного штрих-кода. Я использовал glob , чтобы получить все эти изображения в виде списка и перебирать их.

В каждый файл мы загружаем его с помощью функции cv2.imread() и используем ранее обсуждавшуюся функцию decode() для декодирования штрих-кодов, а затем показываем фактическое изображение.

Обратите внимание, что скрипт также обнаружит QR-коды, и это нормально, но для получения более точных результатов читайте вторую часть этой заметки.

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

Читайте также:  Arinst ssa tg r2 портативный анализатор спектра с трекинг генератором

Вот последнее показанное изображение:

Это здорово, теперь у вас есть отличный инструмент для создания собственного сканера штрих-кода на Python. Я знаю, что вы все хотите читать прямо с камеры и подготовил код для считывания и обнаружения штрих-кода с камеры в реальном времени. Вот он:

Вы также можете добавить какой-то звуковой сигнал при обнаружении каждого штрих-кода, так же, как в супермаркетах, ознакомьтесь с руководством по воспроизведению звуков, которые могут помочь вам в этом.

Для получения более подробной информации приглашаю вас почитать документацию pyzbar .

Как сгенерировать и прочитать QR-код в Python

Пришло время узнать, как сгенерировать и прочитать QR-коды в Python с помощью библиотек qrcode и OpenCV .

Создание QR-кода

Во-первых, давайте начнем с создания QR-кодов, это в целом очень просто при наличии библиотеки qrcode :

Это сгенерирует новый файл изображения в текущем каталоге с именем «waksoft.susu.ru.png», который содержит изображение QR-кода указанных данных (в данном случае URL этого веб-сайта), будет выглядеть примерно так:

Вы также можете использовать эту библиотеку для полного управления генерацией QR-кода с помощью класса qrcode.QRCode() , в котором вы можете создать экземпляр и указать размер, цвет заливки, задний цвет и исправление ошибок, например:

Итак, при создании класса QRCode мы указываем параметр версии, который представляет собой целое число от 1 до 40, которое контролирует размер изображения QR-кода (1 — маленький, матрица 21×21, 40 — матрица 185×185), но это будет перезаписано, когда данные не соответствуют указанному вами размеру. В нашем случае он автоматически масштабируется до версии 3.

Параметр box_size управляет количеством пикселей в каждом прямоугольнике QR-кода, тогда как граница определяет, сколько прямоугольников должно иметь толщину.

Затем мы добавляем данные с помощью метода qr.add_data() , компилируем их в массив с помощью метода qr.make() , а затем создаем фактическое изображение с помощью метода qr.make_image() . Мы указали белый цвет как fill_color и черный как back_color , что является полной противоположностью QR-коду по умолчанию, посмотрите:

И форма изображения действительно увеличена, а не 21×21:

Читаем QR-код

Есть много инструментов, считывающих QR-код. Однако для этого мы будем использовать библиотеку OpenCV , поскольку она популярна и легко интегрируется с веб-камерой или любым видео.

Хорошо, откройте новый файл Python и следуйте за мной, давайте прочитаем только что сгенерированное изображение:

К счастью для нас, OpenCV уже имеет встроенный детектор QR-кода:

У нас есть изображение и детектор, давайте обнаружим и расшифруем эти данные:

Функция detectAndDecode() принимает изображение в качестве входных данных и декодирует его, чтобы вернуть кортеж из 3 значений: данные, декодированные из QR-кода, выходной массив вершин найденного четырехугольника QR-кода и выходное изображение, содержащее исправленный и преобразованный в двоичную форму QR-код.

Здесь нам просто нужны данные и bbox , который поможет нарисовать четырехугольник на изображении, и данные будут выведены на консоль!

Функция cv2.line() рисует отрезок линии, соединяющий две точки, мы получаем эти точки из массива bbox , который ранее был декодирован с помощью detectAndDecode() . Мы указали синий цвет ((255, 0, 0) , поскольку OpenCV использует цвета BGR) и толщину 2 .

Наконец, давайте покажем изображение и выйдем при нажатии клавиши:

После запуска распечатываются декодированные данные:

И показано следующее изображение:

Как видите, синие линии нарисованы точно в границах QR-кода. Отлично, мы закончили с этим скриптом, попробуйте запустить его с другими данными и посмотрите свои результаты!

Обратите внимание, что это идеально подходит для QR-кодов, а не для штрих-кодов.

Если вы хотите обнаруживать и декодировать QR-коды в реальном времени с помощью веб-камеры (и я уверен, что вы это делаете), вот код для этого:

Отлично, я закончил и теперь вы можете интегрировать его в свои собственные приложения!

Источник

Adblock
detector