Система автоматической проверки библиографии в научных публикациях прошла путь от учебного прототипа до полноценного инженерного инструмента - и по итогам защиты получила высшую оценку. Но сама проблема оказалась куда глубже, чем выглядела на старте.
От прототипа к рабочему инструменту
Ещё два месяца назад система едва тянула на живой прототип. Сейчас в неё встроены OCR, постоянный SQLite-кэш, offline-режим, классификация типов ошибок и несколько ML-модулей под разные задачи. Пайплайн вырос: документ проходит извлечение текста, очистку от колонтитулов, разбор библиографического блока, нормализацию, парсинг полей и многоуровневую проверку через Crossref, OpenAlex, PubMed, Wikidata и другие каталоги.
Диплом защищён на отлично. Работу отметили лучшей в день защиты - редкое совпадение для учебного проекта, который реально работает.
Почему «нашли DOI» - это ещё не ответ
Главный урок, который вынесла разработчик: один признак ничего не решает. DOI может быть разорван переносом строки, искажён после OCR или попросту отсутствовать у вполне реального источника. URL открывается - но метаданные нигде не подтверждаются. Русскоязычные статьи вообще редко укладываются в удобную схему «нашли идентификатор - закрыли вопрос».
Поэтому система собирает набор сигналов:
- резолвится ли DOI
- открывается ли URL
- совпадает ли название с каноническими метаданными
- не конфликтует ли год или список авторов
- есть ли устойчивое совпадение без идентификатора вовсе
Только после этого формируется статус - от подтверждённого до «запись требует ручной проверки». Каждый вывод сопровождается объяснением: что именно не совпало и почему система не уверена.
Формально закончено. По существу - нет
Чем точнее становилась система, тем отчётливее проявлялись слепые пятна. Плохое оформление PDF, неполные метаданные, временно недоступные API, OCR-искажения - каждый из этих факторов способен превратить существующий источник в «не найден». Граница между ошибкой системы и реальным отсутствием источника остаётся одним из самых сложных мест.
Диплом сдан. Задача продолжается.