Родословная по рукописным архивам: восемь поколений с помощью ИИ
Семья попросила найти предков, о которых знали только по рассказам. ИИ читал рукописные метрические книги и переписи, в дерево попадало только то, что подтверждено документом. Работа по книгам заняла один день. Итог — восемь поколений по документам до конца XVIII века и дерево, которое принадлежит семье, а не платформе.
Контекст
Заказчик — моя семья. О предках знали по рассказам, по нескольким фотографиям и письмам, а происхождение держалось на одной семейной версии. Задача: найти предков по всем линиям, живых родственников и собрать всё в дерево, которое можно открыть и дополнять.
Всё старше 1920-х — рукописные церковные книги: дореформенная орфография, старый стиль, у каждого писаря свой почерк. Книги оцифрованы, но не проиндексированы, так что запись приходится искать, листая дело скан за сканом. Работа по книгам заняла один день: за это время агент прошёл дела нескольких приходов и поднял линию до конца XVIII века.
Что сделано
Поиск по рукописным книгам с ИИ. Агент открывает дело, сначала читает титул и оглавление по годам, вычисляет смещение «номер скана = лист + k» и идёт сразу к нужному году. Дальше он листает год целиком: рождения, браки, смерти. Найденные записи он переписывает современной орфографией и выписывает зацепки: крёстных, поручителей, сословие, приход. Чтобы доказать, что других детей в семье нет, агент прошёл все рождения прихода за 15 лет подряд и все смерти за 16.
«Полосы» вместо разворотов. Скрипт вырезает из разворота одну колонку — «имена родившихся» или «родители», — и десятки разворотов просматриваются за минуты. Полный скан открывается, только когда в полосе есть совпадение.
Журнал поиска. По каждому делу записано, какие листы смотрели, что нашли и чего нет. Пустые результаты собраны в список «не повторять», чтобы не платить за одно дело дважды.
Дерево на своём сервере. Для заказчика развёрнут Gramps Web — открытое приложение для родословных. Он работает на собственном кластере и ставится Helm-чартом: веб-сервер, фоновые задачи и очередь в одном поде. Из генеалогической платформы деревья перенесены через GEDCOM. Её экспорт оказался битым: 371 кириллическая буква разрезана пополам на границе строк, около 300 переносов без уровня, 19 ссылок на несуществующие фото. Файл починен скриптом до импорта.
ИИ работает с живым деревом. Агент подключён к Gramps Web через MCP-сервер, который запускается локально в контейнере без открытых портов. Подтверждённое он вносит сам: людей, события, источники, заметки. Права ограничены ролью его учётной записи в приложении, а не флагом в конфиге: понизишь роль — запись закрыта, даже если настройку забыли.
Две резервные копии. Каждую ночь снимается точная копия базы через online-backup API SQLite, без остановки приложения; для неё есть скрипт восстановления. Второй CronJob выгружает дерево в Gramps XML и коммитит в закрытый репозиторий. Метка времени экспорта обнуляется, поэтому коммит появляется только при изменениях, а git log -p превращается в журнал правок дерева по дням. Сканы и фото приложение читает из той же папки, которую выгружает экспорт, второй копии нет. Файлы больше 50 МБ в git не попадают и пишутся в лог.
Композиты для карточек. На каждую находку собирается одна картинка: обложка дела, оглавление, лист с записью, стрелка «где запись» и подпись источника. Сборщик сам проверяет, влез ли текст. Одна и та же метрика раньше грузилась в карточку каждого упомянутого в ней человека. Теперь на карточку идёт один композит с отметками людей, а 32 дубля удалены.
Масштаб: 100 человек, 37 семей, 187 событий. Восемь поколений подтверждены документами, девятое — по справочнику. Около 12 крупных гипотез: 3–4 подтверждены документами, 6–7 опровергнуты.



