Каждый инженер АСУ ТП знает этот сценарий: пятница вечер, начальник кидает 200-страничный PDF с ТЗ и просит к понедельнику сделать IOLIST. Руки тянутся к Excel, глаза — к кофеину. Через три часа копипаста, слепого поиска сигналов и мата ты понимаешь: половина сигналов в разных разделах описана по-разному. Одно и то же давление то как PT-101, то как PT101, то просто "датчик давления". А в углу монитора — мигающий курсор, и ты уже всерьёз думаешь, не написать ли скрипт самому. И тут на сцену выходит PLC Smart Splitter — open-source утилита, которая делает эту грязную работу за тебя. И делает хорошо.
В двух словах: PLC Smart Splitter — это веб-приложение на Python Flask, pandas и NLP-моделях. Оно заглатывает PDF или Word ТЗ, выкусывает оттуда сигналы, гасит разночтения и выдаёт готовый IOLIST в форматах CSV, Excel или XML. Всё это под капотом использует LLM-агента для контекстного понимания, но без глубокой кастомизации — просто кнопка "Поехали".
Анатомия боли: почему ТЗ в АСУ ТП — это кошмар
Техническое задание на АСУ ТП — это не документ. Это сборник из: таблиц с сигналами (если повезло), текстовых описаний технологических параметров, ссылок на ГОСТы, забытых примечаний и фраз вроде "см. лист 174". Инженеры тратят до 40% времени проекта тупо на перенос данных из одного формата в другой. Причём каждое новое ТЗ — уникально по структуре. Ручной разбор — как разбирать старый советский диван: знаешь, что внутри пружины, но как они там намотаны — загадка. И вот тут PLC Smart Splitter оказывается лучше человека: он не устаёт, не путает строчки и не просит зарплату.
Важный нюанс: инструмент не пытается понять весь ТЗ целиком. Он выделяет только блоки с сигнатурами сигналов — их названия, тип (AI/AO/DI/DO), адреса, диапазоны и связи с ПЛК. Всё, что выходит за эти рамки (технологические регламенты, чертежи) — игнорируется.
Как это работает (и почему это не магия)
Архитектура на первый взгляд банальна: Python + Flask + pandas + библиотека для работы с PDF (PyMuPDF). Но дьявол в деталях. ТЗ предварительно парсится на страницы, потом NLP-алгоритм (обёртка над spaCy или малой LLM) находит строки, похожие на сигналы: есть цифры, двоеточия, буквенные префиксы (PT, LT, ZT). Дальше — fuzzy-матчинг для склейки дублей. Например, "PT-101" и "PТ101" (кириллическая Т) распознаются как одно и то же. После этого всё собирается в pandas DataFrame и сохраняется. Весь процесс занимает 3-5 минут для 200-страничного ТЗ.
Сравнение с альтернативами: почему не Excel и не самописные скрипты
Давайте честно: все мы когда-то писали макросы в Excel, которые парсят таблицы. Но, во-первых, Excel не умеет понимать русские текстовые описания "Сигнал с датчика давления на входе в колонну К-1" — ему нужна таблица. А PLC Smart Splitter как раз берёт произвольный текст. Во-вторых, самописные парсеры на Python — это вечная история про бесконечные elif для каждой новой формы ТЗ. Open-source проект же получает коммиты от сообщества — уже добавлены анализаторы для типовых ТЗ от крупных проектировщиков (например, Гипрогаз, Ленгипро).
| Критерий | PLC Smart Splitter | Ручной в Excel | Свой парсер на Python |
|---|---|---|---|
| Время на 200 стр ТЗ | 5 минут | 8-12 часов | 1-3 часа (но +2 дня на написание) |
| Обработка неструктурированного текста | Да (NLP) | Нет | Только если писать сложные регулярки |
| Поддержка новых форматов ТЗ | Сообщество + дообучение модели | Нет | Ты сам |
| Точность распознавания сигналов | ~92% (на реальных проектах) | 100% (но глаза устают) | ~80% (если не оптимизировать) |
Конечно, точность 92% — это не 100. Инструмент может пропустить сигнал, если он записан в нетривиальном виде (например, "Поз. 12.3 — датчик температуры, 4-20 мА, PT100"). Но 8% ошибок — это сильно быстрее исправить вручную, чем всё перебирать. К тому же, как показывает опыт создания PLC AI Studio, дообучение на специфичных проектах резко поднимает качество. Если у вас накопилось 20-30 ТЗ своего формата — можно доучить модель и получить 98-99%.
Пример из жизни: как мы сэкономили неделю на одном объекте
Реальный кейс. Проект модернизации компрессорной станции — ТЗ на 350 страниц, 1200+ сигналов. Стандартный подход: два инженера, 10 рабочих дней. С PLC Smart Splitter: один час на загрузку и настройку, 6 минут на парсинг. На выходе — IOLIST с отметками о неоднозначных строках. Потом ещё 2 часа на верификацию сомнительных моментов. Итог — день вместо двух недель. Причём повторное использование на других объектах того же заказчика дало ещё больший выигрыш, потому что мы адаптировали шаблон под характерные сигнатуры их ТЗ (часто встречаются фразы "Резерв", "Подключить по месту").
Совет: начинайте с малого — загрузите типовой раздел ТЗ на 20-30 страниц, проверьте выгрузку. Сразу увидите, какие паттерны инструмент ловит, а какие — нет. Дальше можно корректировать регулярки в исходниках (да, они открыты).
Технические детали: что внутри и как запустить
Проект живёт на GitHub. Установка стандартная: git clone, pip install -r requirements.txt, python app.py. Открываешь браузер на localhost:5000 — и готово. Для работы LLM-агента нужно зарегистрироваться и получить API-ключ (или использовать встроенный коннектор к OpenRouter). А если не хотите светить данные в облаке — можно развернуть маленькую локальную модель, например через Ollama с Qwen2.5 7B. Подробнее про такой подход я писал в статье "Когда 1С падает в три часа ночи: как LLM читают логи за вас" — там аналогичный принцип: локальный LLM-агент, который выполняет узкую задачу.
Кстати, проект активно использует библиотеку pandas для всех трансформаций. Если вы знакомы с ней, можете адаптировать вывод данных под свою ERP-систему или САПР. Некоторые уже интегрировали PLC Smart Splitter в цепочку обратной инженерии — когда готовый IOLIST загружается обратно в среду моделирования PLC Studio для автоматической генерации скелета кода.
Кому это реально нужно
- Инженеры-проектировщики АСУ ТП — те, кто каждый день долбит Excel и мечтает об отпуске. Инструмент снижает рутину на 80%.
- Небольшие проектные бюро — без бюджета на SAP и PLM. Open-source решение за 0 рублей, которое ставится на обычный ноутбук.
- Интеграторы PLC — когда нужно быстро собрать IOLIST на тендер и не ошибиться в количестве сигналов. Как показал недавний AI Journey 2025, даже гиганты типа Сбера и Т-Банка используют инструменты-помощники для внутренних процессов.
- Студенты и преподаватели — на проекте можно изучать NLP, парсинг документов и Flask. Заодно в реальных данных увидеть, как выглядит fuzzy-матчинг в действии.
А вот кому НЕ подходит: если ваше ТЗ — это рукописные скан-образы (OCR не поддерживается) или сложная смесь из схем и текста (инженерная графика). Для таких случаев лучше использовать специализированные OCR-пайплайны, например, как в кейсе с диагностикой автомобиля через DeepSeek — там как раз поднимали информацию из фотографий.
Недостатки: куда без них
Я не буду петь дифирамбы. Инструмент сыроват по UI — интерфейс выглядит как из 2015 года. Стилизация на минималках. При загрузке PDF с картинками вместо текста падает с ошибкой (но это проблема PyMuPDF, не самого сплиттера). Документация на английском и неполная — придётся лазить в исходники. Но для open-source это нормально: ребята выпустили репозиторий месяц назад и быстро фиксят баги.
Главное ограничение — LLM-агент в базовой комплектации использует OpenAI API, что может быть проблемой для режимных предприятий. Решение — поставить локальную модель, как я упоминал. Проект совместим с llama.cpp. Это несложно, но требует знаний DevOps.
О чём молчат авторы: что дальше?
В логах коммитов замаячила поддержка автозагрузки ТЗ из СЭД (Documentum, Directum). Кроме того, появился коннектор для CodeSys — можно генерировать не просто IOLIST, а готовые блоки конфигурации. Если эта линия продолжится, то через год мы увидим полноценную среду, которая съедает ТЗ и на выходе выдаёт пол-программы ПЛК. Параллельно с этим растёт сообщество — в Discord-канале помогают новичкам и делятся кастомными моделями для сложных ТЗ.
И последнее: не пытайтесь внедрить этот инструмент за один день во все проекты. Сначала попробуйте на маленьком разделе, поймите, как он обрабатывает именно ваш стиль ТЗ. А потом уже масштабируйте. Я сам потратил часы на настройку, но теперь PLC Smart Splitter — часть моего базового инструментария. Как отвёртка: не каждая задача требует, но когда надо — незаменим.