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.5-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.5
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.5-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| libscanner_dmr-1.0.5-py3-none-manylinux_2_36_x86_64.whl | Python 3 | none | Linux glibc 2.36+ x86-64 | Details |
| libscanner_dmr-1.0.5-py3-none-manylinux_2_36_armv7l.whl | Python 3 | none | Linux glibc 2.36+ ARMv7l | Details |
| libscanner_dmr-1.0.5-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.5-py3-none-win_amd64.whl
| Download URL | libscanner_dmr-1.0.5-py3-none-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0fecbef594a79db854c616c21048bbdf9caf44a4522824a63c0686c1fdf20e3a
|
|
BLAKE2b-256 checksum How to use checksums |
6a0f2152b2bd68e7e0f56d5c4297f3e3d34536c6e28ea05c6c20af0f646ad793
|
| 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.5-py3-none-manylinux_2_36_x86_64.whl
| Download URL | libscanner_dmr-1.0.5-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 |
496636a346c33112a78a31e9e6fd34622f5755a38a3e370da659a61121586aef
|
|
BLAKE2b-256 checksum How to use checksums |
f11dfb71df2e21f46b9023d10d95c9081ff68b1bca1408f4bb85769039759443
|
| 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.5-py3-none-manylinux_2_36_armv7l.whl
| Download URL | libscanner_dmr-1.0.5-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 |
a969c664065c94c8406c8aeb04630dcf34bd82d46786db2d4ab383f6b09241d9
|
|
BLAKE2b-256 checksum How to use checksums |
e8d3de120cecbcdc97cd35cb4cae35aac0bd9379fa46fa30517d65cd179da40b
|
| 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.5-py3-none-manylinux_2_36_aarch64.whl
| Download URL | libscanner_dmr-1.0.5-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 |
71473e810e4bfbe65a6923f90f4ec1e58531f7ee5221614597e3fb7c92cf8921
|
|
BLAKE2b-256 checksum How to use checksums |
ceab68a563012bc008fbd97cf8289f252e709984a3d6cdd80a5dcfc35b41a781
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|