- 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.
99 lines
7.1 KiB
Markdown
99 lines
7.1 KiB
Markdown
# 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-шаблоном. |