Skip to content

lifeaborted/sorting-system-1c

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

199 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система распознавания маркировки (Python + Node.js)

"preview.gif"

Проект представляет собой локальный сервис для автоматического распознавания текста маркировки с изображений металлических изделий и отправки данных на удаленный сервер (Node.js) для дальнейшей обработки в системе 1С.


Сервер

Проектный сервер на Node JS. Создано для Node JS v22.18.0 или новее

Установка

Автоматическая установка (Windows)

  1. Откройте установочный файл server/run-windows.bat
  2. При первом запуске скорее всего выдаст ошибку подключения к базе данных.
  3. Откройте конфигурацию сервера server/data/config.json и измените параметры доступа к базе данных
  4. Повторно запустите файл server/run-windows.bat

Ручная установка

  1. Установите зависимости:
npm install

или просто

npm i
  1. Запустите программу
node index.js
  1. При первом запуске скорее всего выдаст ошибку подключения к базе данных.
  2. Откройте конфигурацию сервера server/data/config.json и измените параметры доступа к базе данных
  3. Повторно запустите программу

Запуск

Запустить сервер в режиме разработки с автоматической перезагрузкой при изменении файлов:

npm run dev

либо в простом режиме

node index.js

После сборки создается минифицированный файл server/dist/build.js, запуск которого идентичен запуску основного приложения, но осуществляется внутри server/dist:

node build.js

Сервер будет доступен по адресу: http://localhost:5000/api/

Настройка

После первого запуска любой версии создается директория data, а в ней файл data/config.json:

{
    "database": {
        "host": "",           // Адрес СУБД
        "port": "",           // Порт СУБД
        "name": "",           // Название базы данных
        "user": "",           // Пользователь, через которого будет доступ к БД
        "password": ""        // Пароль пользователя
    },
    "app": {
        "port": 5000          // Порт приложения
    },
    "encryption": {
        "salt": "",           // Соль для пароля
        "JWT_pass_code": "",  // Сид генерации JWT токена
        "JWT_duration": 24    // Продолжительность жизни токена в часах
    }
}

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

server/
├── controllers/*                # Обработчики
├── data/                        # Настройки приложения
├── database/
│   ├── database.js              # Подключение к базе данных
│   └── models.js                # Модели данных
│
├── dist/                        # Место сохранения минифицированной версии
├── error/                       # Обработка ошибок
├── middleware/*                 # Все используемые middleware
├── modules/*                    # Все вспомогательные модули приложения
├── routes/
│   ├── router.js                # Главный роутер
│   └── ...                      # Маршруты
│
├── index.js                     # Точка входа
├── package.json
└── package-lock.json

Авторизация

Многие маршруты и WebSocket соединение защищены от неправомерных подключений при помощи JWT и API токенов.

Вся авторизация проходит в заголовках HTTP запросов.

Защищенные маршруты REST API и рукопожатие WebSocket соединения:

  • authorization: 'Bearer JWT_TOKEN'

Основные скрипты

  • npm run dev - запуск сервера в режиме разработки
  • npm run build - сборка минифицированной версии
  • npm i - загрузка недостающих зависимостей

Клиент

Зависимости

  • Требуется Python не ниже версии 3.11
  • Остальные зависимости прописаны в client/requirements.txt

Установка

Автоматическая установка (Windows)

  1. Откройте установочный файл client/run-windows.bat и дождитесь запуска

Ручная установка

  1. Создайте файл .env в папке client/
  2. Настройте переменные окружения в файле .env:
SERVER_URL=http://127.0.0.1
PORT=5000
  1. Создайте виртуальное окружение
python -m venv venv
  1. Активируйте виртуальное окружение
.\venv\Scripts\activate 

или

source ./venv/bin/Activate
  1. Установите зависимости
pip install -r requirements.txt
  1. Запустите программу
python main.py

Сборка

Метаданные расположения иконки и названия произведенного файла находятся в /client/build_meta.env

Сборка только через скрипты:

  • windows: client/build-windows.bat
  • linux: client/create_bin_linux.sh (на linux иконка игнорируется)

Готовый файл будет находится по пути client/dist/

Настройка

Настройки приложения хранятся в файле client/.env:

SERVER_URL=http://localhost    // Адрес серверного приложения
PORT=5000                      // Порт серверного приложения

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

client/
├── Components                  # Компоненты
├── Pages                       # Страницы
├── controller                  # Коммуникация между питоном(бэк) и фронтом
└── resources                   # Иконки, шрифты, задники

Нейросеть

Зависимости

  • Требуется Python версии 3.13
  • Остальные зависимости прописаны в neural/requirements.txt
  • Видеокарта NVIDIA (опционально, для ускорения Paddle)

Установка

Автоматическая установка (Windows)

  1. Откройте установочный файл neural/run-windows.bat и дождитесь запуска

Ручная установка

  1. Создайте виртуальное окружение
py -3.13 -m venv .venv  
  1. Активируйте виртуальное окружение
.\venv\Scripts\activate 

или

source ./venv/bin/Activate
  1. Установите зависимости
pip install -r requirements.txt

Запуск и проверка

Шаг 1. Запуск сервера (Node.js)

Убедитесь, что ваш Node.js сервер запущен и доступен по порту из server/data/config.json

Шаг 2. Запуск скрипта

Запуск осуществляется из корня проекта, папки neural/:

python src/server.py

В консоли появится запрос на авторизацию:

========================================
Требуется авторизация
========================================
Введите логин:
Введите пароль:

Шаг 3. Тестирование

  1. Запустите клиент для нейросети neural-client/run-windows.bat
  2. В настройках введите адрес подключения к нейросети: localhost:5001
  3. Нажмите кнопку отправить

Результаты

  1. В консоли выведется результат обработки
  2. В клиенте отобразится соответсвующее окно

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

neural/
├── src/                      
│   ├── main.py               # Ядро и связка пайплайна
│   ├── server.py             # Точка входа: FastAPI сервер и REST API эндпоинты
│   ├── pipeline.py           # Оркестратор компьютерного зрения (YOLO + OCR)
│   ├── detectors.py          # Класс-обертка для детекции рамок (YOLOv8)
│   ├── recognizers.py        # Класс-обертка для чтения текста (PaddleOCR)
│   ├── parser.py             # Регулярные выражения (SN и Batch)
│   ├── api_client.py         # Сетевой клиент (Обмен с Node.js)
│   ├── models.py             # Структуры данных
│   ├── utils.py              # Визуализация результатов
│   ├── config_manager.py     # Генератор файла config.json
│   └── logger_config.py      # Настройка Loguru, перехват и фильтрация логов
│
├── data/                     # Системные данные сервиса
│   ├── config.json           # Конфигурация портов, порогов и параметров сетей
│   └── auth.dat              # Ключ авторизации
│
├── runs/                     # Локальные веса обученных моделей
│   └── detect/               
│
├── extensions/               # Вспомогательные утилиты разработки/отладки
│
├── .env                      # Системный файл
├── requirements.txt          # Python-зависимости
└── run-windows.bat           # Скрипт автоматического создания venv и запуска server.py

API Формат

Скрипт авторизуется на сервере (/api/user/login), получает JWT токен и отправляет данные в формате form-data на /api/service/scan

Поля отправки:

  • image: Файл изображения.
  • serial_number: Серийный номер (извлекается регулярным выражением SN-...).
  • batch_number: Номер партии (извлекается регулярным выражением B-...).

About

Recognition system of labeling text from metal products and sending data to a remote server

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors