gkonoplya 93b28b1ea2 Add initial project structure and core functionality for label extraction and PDF generation
- Created .gitignore to exclude unnecessary files and directories.
- Implemented build_pdf.py for generating PDF labels from Excel data, including barcode rendering.
- Added read_image.py for extracting DataMatrix codes from images using zxing-cpp.
- Introduced render_eps.py for converting EPS images to PNG format with Ghostscript.
- Updated README.md with project overview, features, installation instructions, and usage guidelines.
- Included requirements.txt for dependency management.
- Added resources for logos and sample Excel template.
- Compressed Ghostscript binaries into Ghostscript.zip for easy integration.
2026-02-21 11:46:24 +03:00

LabelExtractor (Честный ЗНАК / CRPT)

Утилита для автоматизированного извлечения кодов маркировки (DataMatrix) и массовой генерации готовых к печати PDF-этикеток (формат 58x40 мм) на основе данных из Excel-шаблона. Решение оптимизировано для работы с системой «Честный ЗНАК» и создания этикеток для термопринтеров.

Ключевые возможности

  • Распознавание DataMatrix: Точное чтение кодов из изображений с помощью zxing-cpp с сохранением непечатаемых спецсимволов GS1 (включая FNC1 / ASCII 29) посредством кодирования в Base64.
  • Интеграция с Excel: Парсинг атрибутов товара (GTIN, EAN, Описание, Артикул, Цвет, Размер, Организация) из Excel-шаблонов с использованием pandas. Чтение строго по позициям колонок обеспечивает защиту от изменения заголовков.
  • PDF Генерация: Автоматическая сборка промышленных макетов этикеток (включая логотипы EAC, Честный ЗНАК, штрихкоды Code128 и DataMatrix) с помощью reportlab.
  • Умное форматирование текста: Автоматический перенос строк (Word Wrap), адаптивное уменьшение размера шрифта и умное усечение текста многоточием (при выходе за границы AABB).
  • Портативность: Использование встроенной версии Ghostscript (gswin32c) для рендеринга EPS и штрихкодов без необходимости сложной системной настройки.

Требования и установка

Проект написан на Python 3. Установите необходимые зависимости из requirements.txt:

pip install -r requirements.txt

Зависимости:

  • pillow — работа с изображениями.
  • zxing-cpp — быстрое и надежное чтение штрихкодов.
  • reportlab — генерация векторных PDF-файлов.
  • pandas & openpyxl — чтение и обработка Excel-таблиц.
  • treepoem — генерация штрихкодов (Code128, DataMatrix).

Примечание: Убедитесь, что архив Ghostscript.zip распакован в папку Ghostscript в корне проекта для корректной работы treepoem и обработки EPS-файлов.

Структура проекта

  • build_pdf.py — Главный модуль и оркестратор бизнес-логики. Считывает базу данных Excel, группирует входные коды по GTIN, рендерит штрихкоды и генерирует готовые PDF-документы.
  • read_image.py — Утилита для извлечения байтов DataMatrix из картинок и перевода их в безопасный Base64 формат.
  • render_eps.py — Скрипт-конвертер EPS изображений в PNG с использованием портативного Ghostscript.
  • Resources/ — Папка с графическими ассетами (логотипы) и исходным файлом ШАблон для загрузки этикеток.xlsx.
  • data/ — Рабочая директория (содержит входные коды, картинки и генерируемые PDF в папке output_pdfs).

Использование

  1. Подготовьте описания ваших товаров в файле Resources/ШАблон для загрузки этикеток.xlsx.
  2. Подготовьте список КМ (кодов маркировки), предварительно закодировав сырые байты DataMatrix в формат Base64. (Для получения Base64 из изображений можно использовать скрипт read_image.py).
  3. Запустите процесс генерации PDF:
python build_pdf.py

Готовые многостраничные PDF-файлы (сгруппированные по GTIN) будут сохранены в директории data/output_pdfs/.

Архитектура решения

Код разбит на несколько логических слоев:

  1. Domain Layer: Описание структур данных (LabelData).
  2. Data & Asset Layer: Функции генерации и трансформации изображений и штрихкодов (render_code128, create_datamatrix_in_memory). Изображения генерируются без сглаживания (NEAREST) для идеальной печати на термопринтерах.
  3. Presentation Layer: Низкоуровневая отрисовка PDF-холста через reportlab, позиционирование блоков и алгоритмы подгонки текста (draw_label_page, place_text).
  4. Business Logic Layer: Оркестрация батчевой обработки данных (process_batch). Чтение тяжелых файлов происходит один раз для экономии ресурсов I/O диска.
Description
No description provided
Readme 59 MiB
Languages
Python 88.6%
PowerShell 11.4%