dmr — чтение кодов DataMatrix из Python
Читает коды DataMatrix (ECC200, ГОСТ Р ИСО/МЭК 16022) с кадров, где на модуль приходится порядка двух пикселей: производственный конвейер, камера, этикетка.
Документация: https://libscanner.com/docs/datamatrix-gs1/?lang=python
Прочитать DataMatrix онлайн по фото, без установки: https://libscanner.com/scan/
English. A DataMatrix (ECC200, GS1) reader for Python that targets production-line frames with about two pixels per module. Install with
pip install libscanner-dmr, import asdmr. Windows x64 and Linux (x86-64, ARM64, ARMv7, glibc 2.36+). 30-day free trial, then a license from https://libscanner.com/en/. Documentation: https://libscanner.com/en/docs/datamatrix-gs1/?lang=python Read a DataMatrix code online from a photo: https://libscanner.com/en/scan/
Что внутри
- пакет
dmr— обёртка наctypes, без внешних зависимостей; - собранная библиотека
dmr_c(dmr_c.dll/libdmr_c.so) вdmr/_lib/; - утилита командной строки
dmr— после установки это команда окружения (иpython -m dmr):dmr снимок.png,dmr --license status, справка —dmr --help.
Компилировать ничего не нужно: колесо уже содержит библиотеку под свою платформу и годится для любого Python 3.9+.
Установка
pip install libscanner-dmr
Пакет импортируется как dmr. Платформы: Windows x64, Linux x86-64, ARM64 и
ARMv7 (glibc 2.36 и новее: Debian 12, Ubuntu 23.04+, Raspberry Pi OS
Bookworm). То же колесо есть в разделе «Загрузки» личного кабинета:
pip install libscanner_dmr-1.0.9-py3-none-<платформа>.whl.
Быстрый старт
import dmr
img = dmr.Image("кадр.jpg", dmr.LoadAs.GRAY) # сканеру цвет не нужен
scanner = dmr.Scanner() # поток кадров, умолчание
result = scanner.scan(img.view())
if result.ok:
print(result.text.decode("utf-8"))
Кадр из чужого буфера — без копирования, видом на него (буфер обязан быть
жив на время вызова scan()):
view = dmr.ImageView(buf, width, height, stride, dmr.PixelFormat.BGR8)
result = scanner.scan(view)
Сканер создаётся один раз, а не на кадр: подсказка размера символа копится по кадрам и обязана их пережить.
Code.text — bytes, не str: разделитель GS1 остаётся байтом 0x1D как
есть. Несколько кодов на кадре — dmr.Scanner(dmr.Settings.multi(0));
пресеты — dmr.Settings.stream() (умолчание), single(), multi(n).
Лицензия
Пробный период — 30 дней с первого запуска на машине, без регистрации и без сети.
Активация: вписать ключ из письма в текстовый файл license.key и положить
его в каталог dmr/_lib/ установленного пакета — рядом с библиотекой и
утилитой (ключ у них общий). Каталог показывает
python -c "import dmr, os; print(os.path.join(os.path.dirname(dmr.__file__), '_lib'))"
Библиотека активирует ключ по сети сама при первом обращении. Из кода:
import dmr.license as license
s = license.status()
if not s["can_scan"]:
print(s["message"])
Без интернета: личный кабинет https://libscanner.com → Лицензии → «Активация без интернета».
Metadata
Release files for libscanner-dmr 1.0.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| libscanner_dmr-1.0.9-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| libscanner_dmr-1.0.9-py3-none-manylinux_2_36_x86_64.whl | Python 3 | none | Linux glibc 2.36+ x86-64 | Details |
| libscanner_dmr-1.0.9-py3-none-manylinux_2_36_armv7l.whl | Python 3 | none | Linux glibc 2.36+ ARMv7l | Details |
| libscanner_dmr-1.0.9-py3-none-manylinux_2_36_aarch64.whl | Python 3 | none | Linux glibc 2.36+ ARM64 | Details |
Total release size: 10.2 MB
Release files / libscanner_dmr-1.0.9-py3-none-win_amd64.whl
| Download URL | libscanner_dmr-1.0.9-py3-none-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cd4244232f894a02cb0e6667eb6078260c5f4d87691705d680c713bd6aceeb5c
|
|
BLAKE2b-256 checksum How to use checksums |
829cf7ff92c879fb7b3cd907f172ff569a91c2fa094e408215fb8645a23ee852
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / libscanner_dmr-1.0.9-py3-none-manylinux_2_36_x86_64.whl
| Download URL | libscanner_dmr-1.0.9-py3-none-manylinux_2_36_x86_64.whl |
|---|---|
| Size | 2.5 MB |
| Tags | Linux glibc 2.36+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
4921526d3c9caa0d4e39b7ff24672ee261a26afd24f1c14342a2f2132a6569b5
|
|
BLAKE2b-256 checksum How to use checksums |
0fdc46efbff561dde6981752506ac2412b3ddc91c9b382738ebae2f81aaa2f70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / libscanner_dmr-1.0.9-py3-none-manylinux_2_36_armv7l.whl
| Download URL | libscanner_dmr-1.0.9-py3-none-manylinux_2_36_armv7l.whl |
|---|---|
| Size | 1.9 MB |
| Tags | Linux glibc 2.36+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
1aae8d5b1d1875c0b9aba3bce93db9e46150064aa19ed60b99219580b5c0c3fd
|
|
BLAKE2b-256 checksum How to use checksums |
e990ebac9dca1b895fb597fbf585368415e5982ab36e3735f02fa42737e5fd11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / libscanner_dmr-1.0.9-py3-none-manylinux_2_36_aarch64.whl
| Download URL | libscanner_dmr-1.0.9-py3-none-manylinux_2_36_aarch64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | Linux glibc 2.36+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
a40e8a1aa7d1e022fe92862914e0cd17370ec3af85e0e18398ec2377ee5f2470
|
|
BLAKE2b-256 checksum How to use checksums |
669bb9e33a5389fe0d2553646a652ef7ec2569d644dc40b75edd8020ecf8a594
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Security for libscanner-dmr 1.0.9
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.