Опубликовано

Диплом защищён на пятёрку. Задача оказалась сложнее

Диплом защищён на пятёрку. Задача оказалась сложнее

Студентка защитила выпускную квалификационную работу по автоматической проверке источников в научных публикациях - и получила высшую оценку. Проект признали лучшим в день защиты. Но сама задача, как выяснилось, с дипломом не закончилась.

От прототипа к инженерному инструменту

Ещё весной система существовала в виде живого прототипа с линейным пайплайном: документ - извлечение текста - список литературы - DOI - внешняя проверка - статус. Простая цепочка, которая неплохо работала в идеальных условиях и разваливалась при столкновении с реальными PDF.

За несколько месяцев доработок система обросла OCR для страниц без нормального текстового слоя, постоянным SQLite-кэшем, offline-режимом, корпусной оценкой и отдельными ML-модулями под разные подзадачи. Пайплайн вырос в двенадцать шагов - от приёма файла до формирования HTML-отчёта и JSON с результатами.

Почему DOI не решает всё

Главный вывод, к которому пришли в ходе работы: вывод «DOI не найден - источник фейковый» попросту некорректен. У вполне реального источника может не быть цифрового идентификатора. DOI мог быть разорван переносом строки при вёрстке. OCR превращает нормальный текст в набор визуально похожих символов - и валидный идентификатор становится мусором.

Поэтому система оценивает не один признак, а совокупность сигналов. Она проверяет:

  • наличие и резолвинг DOI
  • доступность URL
  • совпадение названия, авторов и года с каноническими метаданными
  • присутствие источника в Crossref, OpenAlex, PubMed, Wikidata и других каталогах
  • риски OCR-искажений и некорректного парсинга

Если DOI отсутствует, но источник уверенно находится по названию и авторам - это не провал, а статус likely_verified. Если URL открывается, но метаданные нигде не подтверждаются - неопределённый случай. Такой подход честнее, чем бинарное «найдено / не найдено».

Где задача оказалась неожиданно трудной

Русскоязычные источники хуже всего вписываются в привычную схему «нашли DOI и успокоились». Многие из них просто не имеют машиночитаемых метаданных в западных каталогах. Плохое оформление библиографии, неполные данные, смешение кириллицы и латиницы в одной записи - всё это превращает рутинную проверку в нетривиальную инженерную задачу.

Отдельный вопрос, который система пока не умеет закрыть окончательно: источник не найден - это ошибка инструмента или источника правда не существует? Граница между «сервис не ответил» и «записи нет нигде» в автоматическом режиме размыта. Именно поэтому система не выдаёт вердикт, а формирует классификацию рисков - и честно сообщает, когда уверенности недостаточно.

Что дальше

Формально диплом закрыт. Фактически проект продолжается. Чем точнее становился инструмент, тем отчётливее проявлялись края задачи - и тем интереснее становилось их исследовать. Проверка библиографии оказалась куда менее скучной областью, чем принято думать.