dmr — чтение кодов DataMatrix из Python
Читает коды DataMatrix (ECC200, ГОСТ Р ИСО/МЭК 16022) с кадров, где на модуль приходится порядка двух пикселей: производственный конвейер, камера, этикетка.
Документация: https://libscanner.com/docs/datamatrix-gs1/?lang=python
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
Что внутри
- пакет
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.1-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.1
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.1-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| libscanner_dmr-1.0.1-py3-none-manylinux_2_36_x86_64.whl | Python 3 | none | Linux glibc 2.36+ x86-64 | Details |
| libscanner_dmr-1.0.1-py3-none-manylinux_2_36_armv7l.whl | Python 3 | none | Linux glibc 2.36+ ARMv7l | Details |
| libscanner_dmr-1.0.1-py3-none-manylinux_2_36_aarch64.whl | Python 3 | none | Linux glibc 2.36+ ARM64 | Details |
Total release size: 10.0 MB
Release files / libscanner_dmr-1.0.1-py3-none-win_amd64.whl
| Download URL | libscanner_dmr-1.0.1-py3-none-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
8d1a32b1e4e85c57128545a42767654874fd0e20aa33975218e8e9ea5ef856d5
|
|
BLAKE2b-256 checksum How to use checksums |
e1eaa3927b94199c64ce6af6385cd711f76882ac3665e53594a8e80f99eeb201
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / libscanner_dmr-1.0.1-py3-none-manylinux_2_36_x86_64.whl
| Download URL | libscanner_dmr-1.0.1-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 |
57a75158debe3cff6f0d2fcc741c9cdc6b047e62e2efa1d708c5583746748019
|
|
BLAKE2b-256 checksum How to use checksums |
0f6374d48b925a2ecaf403f1f96f33dd71e4fbc2ee6ceb89019d2138db1d9238
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / libscanner_dmr-1.0.1-py3-none-manylinux_2_36_armv7l.whl
| Download URL | libscanner_dmr-1.0.1-py3-none-manylinux_2_36_armv7l.whl |
|---|---|
| Size | 1.8 MB |
| Tags | Linux glibc 2.36+ ARMv7l Python 3 |
|
SHA-256 checksum How to use checksums |
7075fc7044c4da7f5e7d4606ba3f2cce5b4b00c96132df837fabb821de856a4b
|
|
BLAKE2b-256 checksum How to use checksums |
ebb1087446599135da4c4eef5df2ce9a6b67efa9c67583bc82fd3a620ee00e82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|
Release files / libscanner_dmr-1.0.1-py3-none-manylinux_2_36_aarch64.whl
| Download URL | libscanner_dmr-1.0.1-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 |
2a9709f4931faf1a5050b44705db49c44a7e9ed1d3117626c2831b2eae45b583
|
|
BLAKE2b-256 checksum How to use checksums |
e9ce7d304705c13d20400c83e2ecfb67d4879797b16f26032dd273ad678f25b3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|