Files
label-extractor/README.md
gkonoplya 6a2c0d0d35 Add new CLI command for file name extraction and hash generation
- Implemented `get_filenames` command in `batch_extractor.py` to extract file names from a specified directory and generate a dated hash for each file.
- Updated README.md with instructions for using the new command.
- Enhanced PDF generation in `build_pdf.py` by modifying file naming conventions to include article and size.
- Added example PowerShell script for batch processing tasks.
- Introduced new example Excel file for user reference.
2026-02-28 22:34:03 +03:00

99 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LabelExtractor (Честный ЗНАК / CRPT)
Комплексное решение для работы с кодами маркировки «Честный ЗНАК». Состоит из двух мощных утилит:
1. **Batch Extractor:** Автоматически вытаскивает коды из выгрузок ЧЗ (PDF или ZIP-архивы) и собирает их в удобную Excel-таблицу.
2. **PDF Builder:** Генерирует промышленные макеты этикеток (58x40 мм) для термопринтеров, объединяя извлеченные коды и описания товаров.
## 🌟 Главная фича: Утилита массового извлечения кодов (`batch_extractor.py`)
Вам больше не нужно вручную копировать коды или пытаться достать их из картинок. В проекте есть специальная утилита, которая сама "прочитает" исходные файлы от Честного ЗНАКа и создаст готовый Excel-файл (со списком текстовых значений кодов и их Base64-представлением, сохраняющим скрытые спецсимволы GS1/FNC1).
Утилита поддерживает два формата исходников:
* **Многостраничные PDF-файлы** (где на каждой странице расположена этикетка).
* **ZIP-архивы**, внутри которых лежат векторные `EPS` файлы.
## Требования и установка
Проект написан на Python 3. Установите необходимые зависимости из `requirements.txt`:
```bash
pip install -r requirements.txt
```
**Зависимости:**
* `pillow`, `zxing-cpp` — чтение штрихкодов из изображений.
* `reportlab`, `treepoem` — генерация векторных PDF-файлов и штрихкодов.
* `pandas`, `openpyxl` — чтение и создание Excel-таблиц.
* `click` — создание удобного интерфейса командной строки.
*Примечание: Убедитесь, что архив `Ghostscript.zip` распакован в папку `Ghostscript` в корне проекта.*
## 📋 Порядок работы (Как получить готовые этикетки)
Процесс разделен на три простых шага в терминале:
### ШАГ 0: Подготовить пакетнйы скрипт, если файлов больше чем 1.
Нужно сохранить все файлы с КМ в одну папку.
потом запустить команду, которая достанет имена файлов из этой директории:
```bash
python batch_extractor.py get-filenames "C:\путь\к\архиву\" "C:\путь\к\временным файлам\filenames.xlsx"
```
эта команда создаст файл структуры Префикс/Имя файла
затем надо открыть файл filenames_exaple.xlsx из папки resources и дополнить созданный файл формулами, которые создадут полную питон команду для экстракции КМ
Затем открыть файл resources\run_task_example.ps1 - и вставить в него получившиеся команды
### Важно!! Обратить внимание на тип файла, для pdf надо использовать команду from-pdf и аналогично для zip. Кроме того, обязательно надо заменить путь к файлам (он забит в формуле)
потом можно запустить скрипт пакетной обработки.
### ШАГ 1: Извлечение кодов в Excel (Создание списка КМ)
Возьмите файл, который вы скачали из системы «Честный ЗНАК», и натравите на него утилиту-экстрактор.
**Если у вас ZIP-архив с этикетками:**
```bash
python batch_extractor.py from-zip "C:\путь\к\архиву\ЧЗ.zip" "извлеченныеоды.xlsx"
```
**Если у вас многостраничный PDF-файл:**
```bash
python batch_extractor.py from-pdf "C:\путь\к\файлу\ЧЗ.pdf" "извлеченныеоды.xlsx"
```
*Результат:* Рядом появится файл `извлеченныеоды.xlsx`. В нем две колонки: текстовый код и его Base64 (именно он нужен для точной печати).
### ШАГ 2: Подготовка описания товаров
Откройте шаблон `Resources/ШАблон для загрузки этикеток.xlsx`. Внесите данные о товарах строго по порядку колонок (слева направо). Программа читает именно номера столбцов, а не их заголовки:
1. **GTIN** (14 цифр)
2. **EAN** (13 цифр)
3. **Описание** (название товара, до 200 символов, длинный текст автоматически перенесется или обрежется)
4. **Артикул**
5. **Цвет**
6. **Размер**
7. **Организация**
### ШАГ 3: Генерация этикеток для печати (`build_pdf.py`)
Теперь скрестим наши коды из Шага 1 и описания из Шага 2. Запустите генератор, указав три пути: файл с кодами, файл-шаблон с описаниями и папку для сохранения готовых этикеток.
```bash
python build_pdf.py "извлеченныеоды.xlsx" "Resources/ШАблон для загрузки этикеток.xlsx" "готовые_этикетки/"
```
*Результат:* В папке `готовые_этикетки/` программа создаст аккуратные PDF-файлы (по одному на каждый GTIN). Формат 58х40 мм, все штрихкоды и шрифты оптимизированы для термопринтеров без размытия. Можно смело отправлять на печать!
## Внутренняя структура проекта
* `batch_extractor.py` — CLI утилита для извлечения кодов в Excel.
* `build_pdf.py` — Главный оркестратор. Группирует коды и генерирует макеты этикеток.
* `read_image.py` — Низкоуровневый движок чтения DataMatrix через `zxing-cpp`.
* `render_eps.py` — Вспомогательный модуль для работы с EPS.
* `Resources/` — Папка с графикой (логотипы EAC, ЧЗ) и Excel-шаблоном.