Здорово, солнышки!
Скоро-скоро число постов про #АГР изменится — обещаю. А пока ещё один заход на тему проверки🔥
С тем, что приходится прикладывать к модели документы, у которых из пользы — только дополнительная валидация и упрощение работы для машины, ещё можно смириться. А вот перепроверять всё глазами и руками уже не хочется, согласны?
Сегодня — идея с кружка в понедельник: сверять Альбом АГР с планами из TRM. Суть в том, что альбом часто создаётся заметно раньше планировок, которые потом прикладывают к модели. О крупных инцидентах из-за такого расхождения я не слышал — то ли оно и правда не встречается, то ли просто в ответ обычно получаешь «а зачем» или «это нереализуемо»😤
В общем, подкидываю идею разработчикам, которые вдруг будут прокачивать софт для экспертов: вот как можно запустить такое сравнение в 5 крупных шагах. Детали и побочные «артефакты» можно разобрать уже по ходу дела.
🐱 Шаг 1. Читаем PDF — PyMuPDF (fitz). Достаёт из PDF текст с координатами и рендерит страницу в картинку.
🐱 Шаг 2. Ищем общие точки — уникальные подписи + метод наименьших квадратов (NumPy lstsq). Берём подписи, которые на чертеже встречаются ровно один раз (номера помещений, узлов), сопоставляем их между двумя PDF и по набору таких пар точек считаем одну формулу «масштаб + сдвиг», которая совмещает координаты одного чертежа с другим.
🐱 Шаг 3. Совмещаем картинки в одной системе пикселей — OpenCV (warpAffine). Применяем формулу из шага 2 к изображению — второй чертёж «перекладывается» поверх первого.
🐱 Шаг 4. Ищем графические отличия — бинаризация + морфология (OpenCV). Каждый чертёж переводим в чёрно-белую маску «где линия/текст», маски вычитаем друг из друга — с допуском в пару пикселей на разную толщину линий.
🐾 Шаг 5. Ищем текстовые отличия — сопоставляем слова по значению и координатам (PyMuPDF). Для каждого слова ищем пару на другом чертеже: нашлась — не менялось, не нашлась — удалено, добавлено или переехало.
Сверху всё это можно ещё «обмазать» LLM-моделью для детализации — но тут уже на усмотрение того, сколько вычислительных мощностей есть под рукой.
А сам отчёт, который я, по сути, собрал на коленке, прикладываю снизу :)
Возможно, кому-то эта идея пригодится. А если нет — ну и ладно тогда!
Всем SUP!
Post #1057
182
