Написать в Telegram@Odilient

ИИ И АВТОМАТИЗАЦИЯ

Legible

ИИ-инструмент для адаптации документов под требования доступности: превращает PDF и изображения в результат, готовый для скринридеров, — многоуровневый alt-текст, таблицы данных для графиков, MathML и отметки для проверки человеком.

AMD Developer Hackathon
Клиент
Право и комплаенс
Отрасль
1 день
Срок
2026
Год
С чего всё началось

Задача

У университетов и издательств есть юридические сроки по ADA, Section 508 и WCAG, а адаптация документов по-прежнему делается вручную, по одной иллюстрации за раз. Инструменты автоматического alt-текста обычно пишут одно расплывчатое предложение на изображение и выдумывают цифры, когда описывают графики. В процессе, за который кто-то несёт юридическую ответственность, уверенно названное неверное значение хуже, чем никакого.

Что мы сделали

Решение

Мы сделали пайплайн для документов: он растеризует PDF с помощью PyMuPDF, отдаёт каждую иллюстрацию на чтение Qwen2.5-VL и позволяет Gemma структурировать только то, что визуальная модель действительно увидела. Каждая иллюстрация получает короткий и подробный alt-текст, восстановленную таблицу данных, MathML для формул, сведения о происхождении и оценку уверенности. Нечитаемые значения остаются пустыми (null) и помечаются для проверки, а результат экспортируется как пакет доступного HTML.

Технологии
PythonFastAPIQwen2.5-VLGemmaPyMuPDFMathMLAMD ROCmPydanticDocker
За кулисами

Как всё создавалось

Адаптация PDF под требования доступности с помощью ИИ

Legible превращает документ — PDF или изображение по ссылке или загруженным файлом — в результат, с которым могут работать скринридеры. Он рассчитан на тех, кто руководит работой по доступности в университетах и издательствах и должен сделать учебники, статьи и презентации удобными для незрячих и слабовидящих читателей. Для каждой иллюстрации, графика, схемы и формулы Legible создаёт структуру, которая нужна скринридеру, и точно отмечает, что человеку ещё предстоит проверить.

Мы сделали его для трека 3 хакатона AMD Developer Hackathon: ACT II. Код распространяется по лицензии MIT и открыт на GitHub.

Ключевые возможности

  • Многоуровневый alt-текст — каждая иллюстрация получает короткий атрибут alt длиной до 125 символов и полное структурированное описание.
  • Восстановление таблиц из графиков — цифры, стоящие за графиком, восстанавливаются в виде строк и столбцов, поэтому данные не зависят от цвета или формы.
  • MathML для формул — корректный презентационный MathML идёт рядом с LaTeX, поэтому скринридеры правильно зачитывают формулы.
  • Лучше null, чем догадка — значение, которое не удалось прочитать, становится null и выставляет флаг needs_human_review. Модели прямо запрещено выдумывать цифры.
  • Происхождение и уверенность — для каждого элемента записано, откуда он взят: из самой иллюстрации, из подписи или получен логическим выводом.
  • Экспорт в доступный HTML — пакет содержит элементы figure и figcaption, раскрывающиеся полные описания, таблицы с подписями и MathML. Отдельный эндпоинт возвращает JSON-карту соответствия идентификаторов иллюстраций и их alt-текстов.

Архитектура и технологический стек

Пайплайн

Задача проходит семь этапов: приём, растеризация, поиск иллюстраций, анализ, синтез, валидация и сохранение. Документы скачиваются через httpx или загружаются напрямую. PDF растеризуются в 150 DPI с помощью PyMuPDF, а запасным вариантом служит pdf2image.

Детектор иллюстраций по умолчанию считает каждую страницу одной областью с иллюстрацией — это хорошо работает для слайдов, одиночных графиков и сканов. Разбор макета с поиском отдельных иллюстраций можно добавить позже как отдельный провайдер, не меняя остальной пайплайн.

Чтение и структурирование иллюстраций

Qwen2.5-VL читает каждый фрагмент с иллюстрацией: определяет её тип, переписывает текст на ней, извлекает значения графиков и записывает формулы. Именно эта пакетная визуальная нагрузка рассчитана на GPU AMD Instinct MI300X через ROCm.

Затем Gemma переводит прочитанное в схему доступности. Она выдаёт структурированный ответ по JSON-схеме при температуре 0 и опирается только на то, что увидела визуальная модель. Валидация отбрасывает пустые записи, перенумеровывает иллюстрации, обрезает короткий alt-текст до нужной длины и отправляет всё сомнительное на проверку.

Сервис

Сервис работает на FastAPI с асинхронными задачами, прогрессом через Server-Sent Events, хранилищем на SQLite и подключаемыми провайдерами. Для синтеза можно использовать Gemma через Google AI Studio или Fireworks AI либо Gemma, развёрнутую через vLLM на железе AMD. В режиме моков весь пайплайн работает офлайн на встроенной странице учебника по климатологии, и в этом режиме проходят все 14 тестов.

Место в процессе адаптации

Legible делает первый проход, а не ставит финальную подпись. Он задуман так, чтобы специалист по доступности мог сосредоточиться на отмеченных иллюстрациях, а не переделывать вручную каждое изображение. Мы не утверждаем, что его результат сам по себе соответствует требованиям. Проверка человеком заложена в сам замысел.

Смежные работы

Legible — часть нашей работы по внедрению ИИ и автоматизации. Ещё один пайплайн, который делает документы удобнее для чтения, — конвертация сканированных PDF в издания с крупным шрифтом для Knigopoisk. Другие проекты с того же хакатона — Testify, RecipeReel и Keystone.

Создадим вместе

Хотите что-то вроде Legible?

Расскажите, что должен делать ваш продукт. Мы определим объём работ, распишем сроки и пришлём фиксированную цену — бесплатно и без обязательств продолжать.

Бесплатная консультация Без обязательств Быстрый ответ