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.3-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.3
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.3-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| libscanner_dmr-1.0.3-py3-none-manylinux_2_36_x86_64.whl | Python 3 | none | Linux glibc 2.36+ x86-64 | Details |
| libscanner_dmr-1.0.3-py3-none-manylinux_2_36_armv7l.whl | Python 3 | none | Linux glibc 2.36+ ARMv7l | Details |
| libscanner_dmr-1.0.3-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.3-py3-none-win_amd64.whl
| Download URL | libscanner_dmr-1.0.3-py3-none-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
7aab352ecfe011fa20f4f968df99f66bde5036f64dbd903fc6f50c3bff3aab6b
|
|
BLAKE2b-256 checksum How to use checksums |
3d043f2e22c09eadada3a5058478e21d5396538f9debddf0d37fcf815622df93
|
| 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.3-py3-none-manylinux_2_36_x86_64.whl
| Download URL | libscanner_dmr-1.0.3-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 |
c108af7300822a675dac21804ccaf2d4968e7cf029911ea896a234df4b1c7bbf
|
|
BLAKE2b-256 checksum How to use checksums |
4d1f150c1f35363e0d655cc14fe460876e26c297176efaa166f3d4962fc73ca2
|
| 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.3-py3-none-manylinux_2_36_armv7l.whl
| Download URL | libscanner_dmr-1.0.3-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 |
ee7be16d43ce89526707e678a6ccb72434b7c5750fa22d731af0d04e96ddf781
|
|
BLAKE2b-256 checksum How to use checksums |
0bf1c446fdf36608b1d7b61537a00609a7f7b0d9c46ba1b4711e2f57f1814e24
|
| 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.3-py3-none-manylinux_2_36_aarch64.whl
| Download URL | libscanner_dmr-1.0.3-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 |
da06e57a6904942efb4ec85f53c02d4704e87b36292727569ec43820cc9aefc1
|
|
BLAKE2b-256 checksum How to use checksums |
fc305b4f041436c99c34f442a76a4f60177e1b2f2dac31b3056e403825ee6a2c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|