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.4-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.4
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.4-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| libscanner_dmr-1.0.4-py3-none-manylinux_2_36_x86_64.whl | Python 3 | none | Linux glibc 2.36+ x86-64 | Details |
| libscanner_dmr-1.0.4-py3-none-manylinux_2_36_armv7l.whl | Python 3 | none | Linux glibc 2.36+ ARMv7l | Details |
| libscanner_dmr-1.0.4-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.4-py3-none-win_amd64.whl
| Download URL | libscanner_dmr-1.0.4-py3-none-win_amd64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e78077b9459694e2e1fdd8a69654534b17838859ed77d655edcea680845346e4
|
|
BLAKE2b-256 checksum How to use checksums |
55d0891a8b1345072a34579da474917a87a761571075260d1a11758d2cdeef80
|
| 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.4-py3-none-manylinux_2_36_x86_64.whl
| Download URL | libscanner_dmr-1.0.4-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 |
b03b341430520366e909a9a03495161a6a13cd1b92c2e6ce5f1cecb06b1adb2c
|
|
BLAKE2b-256 checksum How to use checksums |
c517f45c46990f3da370a8fde61b551b53db015592071e38c66327d449aee263
|
| 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.4-py3-none-manylinux_2_36_armv7l.whl
| Download URL | libscanner_dmr-1.0.4-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 |
2ed2a1a01e9f77e75d404d01d199b1e06115b694b4ca9c8b64270201933e22da
|
|
BLAKE2b-256 checksum How to use checksums |
7f5dd15a88a0f1e6f0ec8ed30a6e90c4db8358901c7a340c083423cc9fa6c4d6
|
| 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.4-py3-none-manylinux_2_36_aarch64.whl
| Download URL | libscanner_dmr-1.0.4-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 |
8c2cbd48b5ec76cf7e0dac73178aa5180e2cd396bf81666c07ea4622a01c4375
|
|
BLAKE2b-256 checksum How to use checksums |
5502563cbc6a52da6aa5e7e7a59a06bb0b2b3d2e56a9dccc61e52ad32cf6faf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.2
|