Мой блог
AutoFigure: генерация научных иллюстраций и схем с помощью ИИ

Современные исследователи часто сталкиваются с необходимостью наглядного представления сложных методологий. Эффективная генерация научных иллюстраций становится возможной благодаря специализированному инструменту AutoFigure, который предназначен для практической автоматизации создания графических материалов на основе текстовых описаний, научных статей и структурированных методологических выкладок. В рамках материала развертывается рабочее окружение AutoFigure, устраняются возможные проблемы с совместимостью зависимостей (в частности, библиотеки Pillow) и настраиваются инструменты рендеринга, необходимые для получения файлов в форматах SVG и PNG. Следующим шагом становится сборка пользовательской эталонной схемы, настройка конвейера генерации с поддержкой API и применение AutoFigure для преобразования подробного агентского конвейера анализа документов в готовую к публикации научную диаграмму.
Параллельно в процессе работы тестируется автономный рендеринг SVG, проверяются созданные файлы, формируются образец научной работы в формате PDF, а также выполняется экспорт финальных результатов в общую галерею и архив zip для повторного использования. Ниже приведен фрагмент базовой конфигурации среды и параметров генерации:
import os
import sys
import json
import time
import glob
import shutil
import textwrap
import subprocess
import importlib
from pathlib import Path
from getpass import getpass
REPO_URL = "https://github.com/ResearAI/AutoFigure.git"
REPO_DIR = Path("/content/AutoFigure")
OUTPUT_ROOT = Path("/content/autofigure_colab_outputs")
PROVIDER = os.environ.get("AUTOFIGURE_PROVIDER", "openrouter")
DEFAULT_MODELS = {
"openrouter": "google/gemini-3.1-pro-preview",
"gemini": "google/gemini-3.1-pro-preview",
"bianxie": "google/gemini-3.1-pro-preview",
}
GENERATION_MODEL = os.environ.get(
"AUTOFIGURE_MODEL",
DEFAULT_MODELS.get(PROVIDER, "google/gemini-3.1-pro-preview")
)
MAX_ITERATIONS = int(os.environ.get("AUTOFIGURE_MAX_ITERATIONS", "1"))
QUALITY_THRESHOLD = float(os.environ.get("AUTOFIGURE_QUALITY_THRESHOLD", "8.5"))
RUN_TEXT_TO_FIGURE = True
RUN_PAPER_TO_FIGURE = False
RUN_MXGRAPH_DEMO = False
RUN_IMAGE_ENHANCEMENT = False
TEXT_OUTPUT_FORMAT = "svg"
MXGRAPH_OUTPUT_FORMAT = "mxgraphxml"
ART_STYLE = (
"clean publication-ready scientific illustration, precise alignment, subtle shadows, "
"clear academic typography, high contrast, minimal clutter"
)
Архитектура и требования к визуализации
Для реализации проекта процесс настраивается с учетом строгих академических требований к стилю. Используется стиль clean publication-ready scientific illustration, предполагающий точное выравнивание элементов, мягкие тени, четкую академическую типографику, высокий контраст и отсутствие лишних визуальных деталей. Описание целевой диаграммы задается детальным промтом:
FIGURE_DESCRIPTION = """
Create a publication-ready scientific method figure for an agentic long-document intelligence system. The figure should explain the following pipeline in a left-to-right architecture:
1. Long documents enter the system. They may be PDFs, scanned reports, markdown files, tables, or mixed-layout documents.
2. A document normalization layer extracts raw text, section hierarchy, tables, figures, and metadata.
3. A routing planner decides whether each section should go to summarization, field extraction, table reconstruction, visual analysis, or citation grounding.
4. Specialized expert modules process the routed chunks:
- Summarizer expert creates hierarchical summaries.
- Extraction expert returns JSON fields.
- Table expert reconstructs exact tables.
- Visual expert describes charts and diagrams.
- Citation expert links claims to evidence spans.
5. A low-cost orchestration layer selects smaller or larger LLMs depending on complexity, confidence, and budget.
6. A verification layer checks schema validity, source grounding, table consistency, and confidence.
7. The final output is an analyst-ready workspace containing a summary, extracted fields, exact tables, cited answers, and audit logs.
Design requirements:
- Use a wide 16:9 layout.
- Use clear module boxes, arrows, and labels.
- Add small callouts for cost control, confidence scoring, and auditability.
- Avoid decorative clutter.
- Make the flow understandable for a finance or enterprise document intelligence audience.
"""
В качестве основы для тестирования также задействуется шаблон научной статьи в формате Markdown, описывающий эффективный агентский интеллект документов для объемных финансовых отчетов:
MINI_PAPER_MARKDOWN = """
# Efficient Agentic Document Intelligence for Long Financial Reports
## Abstract
We propose an agentic document intelligence architecture for extracting summaries, facts, tables, and grounded answers from long, heterogeneous financial documents.
## Method
Our method first normalizes each incoming document into a structured document graph.
"""
Граф включает в себя узлы разделов, параграфов, таблиц, рисунков и метаданных. Специальный маршрутизатор распределяет каждый узел по профильным экспертам, основываясь на модальности, степени сложности и требуемой выходной схеме. Архитектура задействует пять экспертов. Эксперт по суммированию формирует иерархические аннотации на основе фрагментов уровня разделов. Эксперт по извлечению заполняет строгие схемы JSON для сущностей, дат, рисков, финансовых показателей и обязательств. Экспертный модуль по таблицам восстанавливает точную структуру таблиц и проверяет соответствие строк и столбцов. Визуальный эксперт отвечает за описание графиков и диаграмм, а эксперт по цитированию связывает каждое сформированное утверждение с исходными фрагментами текста.
Уровень оркестрации с учетом бюджетирования производит динамический выбор размера модели. Простые блоки обрабатываются недорогими моделями, в то время как сложные задачи перенаправляются на более мощные решения. Верификационный слой осуществляет последующую проверку на валидность схем, поддержку цитат, числовую непротиворечивость и целостность таблиц. Не прошедшие проверку данные возвращаются на этап исправления ошибок.
Ход экспериментов и программная реализация
Оценка эффективности проводится на материалах финансовой отчетности и аналитических отчетах. В качестве критериев выступают точность извлечения, точность обоснования фактов, качество восстановления таблиц и суммарные затраты на инференс.
Далее приводятся вспомогательные функции и настройки. Функция run запускает системные команды с возможностью настройки рабочей директории, проверки кодов возврата и вывода результатов. Функция heading оформляет разделы в консоли, а safe_read безопасно считывает текстовые файлы с ограничением максимального числа символов, предотвращая сбои при обработке слишком больших объемов данных. Метод clear_loaded_modules очищает кэш модулей Python по заданным префиксам для предотвращения конфликтов импорта.
Специализированные функции get_colab_secret и collect_api_key отвечают за безопасную работу с ключами доступа. Они последовательно проверяют переменные окружения, такие как AUTOFIGURE_API_KEY, OPENROUTER_API_KEY, GOOGLE_API_KEY, GEMINI_API_KEY и BIANXIE_API_KEY, обращаются к защищенному хранилищу Google Colab, а при отсутствии сохраненных данных запрашивают ключ у пользователя через интерактивную строку ввода.
На начальном этапе импортируются и задаются основные пути, конфигурации провайдеров, параметры моделей и опции учебного руководства. Помимо этого, подготавливаются подробное описание будущей иллюстрации и образцы содержимого научной работы, которые в дальнейшем задействуются для работы инструмента AutoFigure.
Для удобства работы в интерактивной среде предусмотрены вспомогательные функции, позволяющие выводить сгенерированные файлы прямо в блокноте Colab. Эта возможность распространяется на самые разные форматы, включая изображения PNG и векторную графику SVG, а также файлы конфигураций и документов JSON, Markdown, текстовые форматы и схемы draw.io.
Функция display_file_if_possible проверяет существование указанного пути и корректно обрабатывает типы файлов. Если расширение соответствует PNG, используется вставка графического изображения, для SVG применяется соответствующий рендеринг через библиотеку IPython, а текстовые данные и схемы выводятся в виде безопасного содержимого с ограничением по длине до 5000 символов.
Формирование галереи результатов
Специальная функция make_output_gallery собирает все созданные артефакты в единую HTML-страницу галереи. Она сканирует указанную директорию, находит файлы различных форматов и упаковывает их в структурированные карточки с теневым обрамлением и скругленными углами.
- PNG-изображения: выводятся в виде адаптивных графических блоков с ограничителем ширины.
- SVG-файлы: встраиваются в специальные контейнеры
svgboxс поддержкой прокрутки для детального просмотра векторов. - Файлы draw.io: сохраняют исходный XML-код схем mxGraph с ограничением до 4000 символов внутри блоков предварительного просмотра
pre. - Отчеты о генерации: файл
generation_report.jsonотображается в текстовом виде с ограничением до 7000 символов для анализа метрик.
Полученная страница оформлена с использованием базовых стилей CSS, включая шрифты без засечек, нейтральный серый фон интерфейса и отступы, что делает визуальную оценку результатов максимально комфортной.
Анализ и сводка итогов работы конвейера
Для детального разбора каждого отдельного запуска используется функция summarize_generation_result. Она выводит в консоль ключевые метрики выполнения задачи, включая флаг успешности success, итоговый балл качества final_score, количество затраченных итераций iterations_used, а также актуальные пути к файлам SVG, mxGraph, превью и улучшенным версиям графики. Дополнительно выводятся последние двадцать записей системного лога.
В процессе работы эта процедура автоматически ищет сопутствующий файл отчета generation_report.json в директориях ключевых артефактов. При его обнаружении содержимое считывается и с помощью библиотеки Pandas преобразуется в удобную табличную форму. В эту таблицу попадают номер итерации, достигнутый показатель качества, зафиксированные улучшения и статус наличия текстовой критики, что позволяет в деталях проследить всю динамику оптимизации в ходе процесса.
Для удобства работы разработчики также реализуют специальный генератор HTML-галерей. Это позволяет просматривать все результаты работы системы AutoFigure на одной компактной и упорядоченной странице. В дополнение к этому настраивается функция формирования итоговой сводки. Она отвечает за вывод метаданных генерации, демонстрацию предварительных изображений и отображение отчета об итерациях в структурированном, легко читаемом виде.
Практическая реализация начинается с установки самого пакета AutoFigure и необходимых зависимостей в среде Google Colab. Сначала создается корневой каталог для вывода данных с помощью инструкции OUTPUT_ROOT.mkdir(parents=True, exist_ok=True), после чего запускается обновление списка пакетов ОС и инсталляция системных библиотек, включая libcairo2, libpango-1.0-0, libpangocairo-1.0-0, libgdk-pixbuf-2.0-0, libffi-dev и shared-mime-info. Перед продолжением работы с помощью функции clear_loaded_modules(["PIL", "autofigure"]) очищаются уже загруженные модули.
На следующем этапе через менеджер пакетов pip обновляются базовые инструменты сборки: сам pip, версия setuptools<82, wheel и jedi. Отдельное внимание уделяется принудительной переустановке графической библиотеки Pillow==11.3.0 без использования кэша. Если локальный репозиторий проекта уже существует по заданному пути REPO_DIR, скрипт автоматически выполняет команды git fetch origin main, git checkout main и подтягивает актуальные изменения ветки через git pull --ff-only origin main. В противном случае выполняется полный клон репозитория по ссылке REPO_URL.
После подготовки окружения запускается установка самого пакета в режиме редактирования с дополнительными зависимостями для работы с PDF и веб-форматами, а также пакетов reportlab, pandas и фиксированной версии Pillow. Скрипт повторно принудительно переустанавливает библиотеку Pillow и очищает кэш модулей, после чего проверяет корректность импорта компонентов Image, ImageDraw и ImageFont. Если импорт завершается сбоем, пользователю предлагается перезапустить среду выполнения среды через меню Runtime -> Restart runtime и повторно запустить ячейку. При активации флага RUN_MXGRAPH_DEMO дополнительно инсталлируется браузер Chromium через Playwright, а путь к репозиторию добавляется в системный список sys.path.
Завершающим шагом подготовительного процесса выступает импорт компонентов SDK. В рабочее пространство подгружаются ключевые классы AutoFigureAgent и Config, а также функции валидации синтаксиса кода, конвертации кода в PNG, получения шаблона начального промпта и модуль MethodologyExtractor. После успешного завершения импорта система выводит подтверждение, а также актуальные пути к каталогу репозитория и корневой папке результатов.
Процесс автономной предварительной проверки SVG включает в себя валидацию и рендеринг. Для этого создается специальный каталог с помощью команды preflight_dir = OUTPUT_ROOT / "00_offline_preflight" с обязательным вызовом метода preflight_dir.mkdir(parents=True, exist_ok=True). В рамках этого этапа подготавливается образец SVG-кода с заданными параметрами холста: ширина составляет 1333 пикселя, высота — 750 пикселей, а область просмотра задается как viewBox="0 0 1333 750" с пространством имен XML xmlns="http://www.w3.org/2000/svg".
Внутри тестового образца разметки формируется белый прямоугольник фона через тег <rect x="0" y="0" width="1333" height="750" fill="#ffffff"/>, а также добавляется заголовок AutoFigure Offline Rendering Check с выравниванием по центру (text-anchor="middle"), шрифтом Arial, размером 36, полужирным начертанием и цветом #111111. Схема демонстрирует поэтапный процесс, состоящий из трех основных блоков со скругленными углами радиусом 18 и заливкой #f3f3f3.
Первый блок обозначает текстовый запрос пользователя (Text Prompt) с описанием метода. Второй блок отвечает за работу системы AutoFigure и включает цикл «генерация — оценка — доработка» (generate → evaluate → refine). Третий блок демонстрирует итоговый результат в форматах SVG и PNG. Блоки соединяются линиями толщиной 4 с маркерными стрелками на концах, параметры которых определяются в секции <defs> через маркер с идентификатором arrow и контуром пути M2,2 L10,6 L2,10 Z.
После формирования строки образца запускается функция синтаксической проверки is_valid, validation_message = validate_code_syntax(sample_svg, "svg"). Результаты выводятся в консоль с помощью команд print(f"SVG syntax valid: {is_valid}") и print(f"Validation message: {validation_message}"). Затем пути для сохранения файлов определяются как sample_svg_path = preflight_dir / "offline_preflight.svg" и sample_png_path = preflight_dir / "offline_preflight.png", после чего сгенерированный код SVG записывается на диск в кодировке utf-8.
На следующем шаге проверяется работоспособность функции преобразования кода через вызов render_ok, processed_svg = code_to_png(sample_svg, str(sample_png_path), attempt_repair=False, output_format="svg"). Успешность операции фиксируется выводом print(f"Rendered PNG: {render_ok} -> {sample_png_path}"), а файл отображается в среде с помощью инструкции display_file_if_possible(sample_png_path, "Offline preflight PNG").
Описанные технические процедуры гарантируют полную готовность рабочей среды: мы устанавливаем необходимые системные пакеты, устраняем возможные конфликты совместимости библиотеки Pillow, клонируем репозиторий AutoFigure и инсталлируем сам SDK вместе с зависимостями для работы с веб-компонентами и PDF-файлами. Только после подтверждения стабильности окружения мы импортируем основные классы и генераторные утилиты платформы, а также выполняем предварительные тесты валидации SVG и рендеринга PNG, исключая любые сбои перед отправкой реальных запросов к API.
Процесс создания пользовательского эталонного изображения начинается с настройки директорий и параметров холста. В рамках скрипта создается каталог 01_custom_references, куда сохраняется итоговый файл reference_architecture_style.png с разрешением 1333 на 750 пикселей. Для отрисовки используется библиотека Pillow, причем код предусматривает безопасную работу со шрифтами: если стандартные начертания вроде DejaVuSans-Bold.ttf недоступны в системе, программа переключается на базовые варианты. На холсте формируется схематичная диаграмма модульного научного конвейера, включающая блоки для входных данных (Input), маршрутизации по задачам (Planner), экспертной обработки (Experts) и проверки результатов (Verifier). Каждый блок оформляется в виде скругленного прямоугольника с контрастной обводкой и текстовыми пояснениями, а между ними прокладываются соединительные стрелки, подчеркивающие направление процесса. В нижней части макета добавляется специальная текстовая плашка с дизайн-подсказкой, фиксирующая ключевые требования: выравнивание модулей, лаконичные подписи, четкое направление потока и строгий академический стиль. После сохранения файл выводится на экран для предварительного просмотра.
Настройка интеграции с API
Следующим этапом становится инициализация работы с внешними сервисами. На первом шаге система запрашивает ключ доступа для выбранного провайдера. Если ключ не обнаружен, выполнение облачных разделов генерации пропускается, о чем выводится соответствующее уведомление. В противном случае фиксируются активный провайдер и используемая генеративная модель, а сам секретный ключ скрывается в целях безопасности. На основе полученных данных формируется объект конфигурации Config, объединяющий настройки для генерации, методической проработки и улучшения изображений. В частности, для модуля улучшения картинки задается приоритетная модель, например google/gemini-3.1-flash-image-preview или ее аналог через OpenRouter, если иное не переопределено переменными окружения.
Конфигурация также принимает параметры максимального числа итераций, целевого порога качества, рабочей директории для результатов текстово-визуального синтеза, путей к пользовательским эталонам и выбранного художественного стиля. Сразу после создания конфигурации запускается процедура валидации, которая проверяет корректность всех заданных параметров и сообщает об обнаруженных ошибках или их полном отсутствии, а также подсчитывает количество найденных эталонных файлов. Успешное прохождение проверки позволяет инициализировать главный управляющий класс AutoFigureAgent.
Предварительный просмотр шаблона подсказки
Завершением подготовительного этапа перед запуском непосредственного синтеза графики становится генерация и вывод шаблона подсказки. Система обращается к функции получения начального промпта, передавая в нее тему научной работы, фрагмент исходного описания фигуры длиной до 2500 символов и требуемый формат вывода — SVG. Сформированный текст шаблона частично выводится в консоль для визуальной оценки корректности инструкций, после чего усекается, если его объем превышает установленный лимит, открывая путь к запуску основных процедур генерации на базе API.
Процесс переходит к этапу непосредственной генерации иллюстраций по текстовому описанию. Для этого создается специальная директория, а агент настраивается с учетом заданных параметров: максимального числа итераций, порога качества, выбранного формата вывода, активации улучшений, художественного стиля, количества доработок, пользовательских референсов и общей тематики научной работы. После этого система выводит сводку результатов работы.
На практике предварительно формируется кастомное эталонное изображение, задающее требуемый чистый модульный стиль научной верстки. Конфигурация инструмента включает выбор провайдера, конкретной модели, ключа API, целевой папки, референса, параметров итераций и визуального оформления. На финальном этапе перед запуском основного процесса можно предварительно просмотреть внутренний шаблон промпта, чтобы получить качественный результат на основе подробного описания архитектуры системы.
Извлечение методологии из научной работы
Следующий шаг посвящен тестовой проверке извлечения методологии из текста. Создается отдельная директория, куда записывается демонстрационный файл в формате Markdown с сокращенным текстом научной статьи. При наличии действующего ключа API и разрешении соответствующего флага запускается специальный экстрактор методологии, который обрабатывает созданный документ и выводит предварительный фрагмент извлеченных данных для контроля качества.
Если ключ API отсутствует или автоматическая обработка отключена, система ограничивается сохранением демонстрационного файла и выводит соответствующее уведомление о том, что для запуска языковой модели требуется предварительная настройка учетных данных.
Генерация графики из документов и тестирование PDF
При активации необходимых параметров запускается сквозная генерация графических материалов напрямую из научной статьи. Агент использует подготовленный файл с текстом исследования, заданные ограничения по итерациям, векторный формат SVG, параметры улучшения изображений, художественный стиль и пользовательские референсы, после чего формирует итоговый отчет о проделанной работе.
Для проверки работы с документами разных типов создается тестовый PDF-файл с использованием библиотеки ReportLab. Текст демонстрационной статьи разбивается на строки и постранично записывается в документ. Затем запускается встроенный метод чтения PDF, который извлекает текст из сгенерированного файла и выводит превью для подтверждения корректности парсинга.
Создание редактируемых схем mxGraph
Завершающий этап работы связан с генерацией редактируемых схем в формате mxGraph XML, которые можно открывать и дорабатывать в редакторе draw.io. Для этого формируется отдельный рабочий каталог, а агент запускается с параметрами текстового описания, ограничениями итераций, целевым форматом XML и пользовательским референсом. Улучшение изображений на данном этапе отключается, а итоговый результат фиксируется в сводном отчете.
Генерация файлов mxGraph XML по умолчанию пропускается, однако этот этап можно активировать, установив значение True для параметра RUN_MXGRAPH_DEMO. Стоит учитывать, что данный сценарий требует установки браузера Chromium через инструмент Playwright, поэтому его выполнение может занять больше времени по сравнению с созданием обычной векторной графики в формате SVG.
Финальная инвентаризация и экспорт результатов
На завершающем этапе работы система формирует полную опись всех созданных материалов. Программа сканирует корневой каталог результатов, определяет точное количество файлов и вычисляет размер каждого из них в килобайтах. После этого автоматически собирается наглядная галерея, а вся рабочая директория упаковывается в единый ZIP-архив для удобного скачивания и переноса данных. При запуске в среде IPython пользователь сразу видит интерактивный отчет с основными путями к созданной галерее и архиву.
Если используемая языковая модель временно недоступна или доступ к ней ограничен, достаточно изменить параметры провайдера и конкретной генеративной модели в верхней части управляющей ячейки. В рамках демонстрационного сценария специалисты создают небольшой файл в формате Markdown, стилизованный под научную публикацию, и опционально задействуют встроенный модуль извлечения методологии для автоматического построения иллюстрации на основе текста. Кроме того, формируется упрощенная PDF-версия документа, чтобы проверить работоспособность пайплайна текстового извлечения.
Завершается процесс запуском draw.io-совместимого рабочего процесса mxGraph, формированием итогового каталога файлов, сборкой веб-галереи и архивацией всех сгенерированных ассетов.
Итоги разбора пайплайна
Рассмотренный учебный материал демонстрирует создание полноценного рабочего процесса AutoFigure, охватывающего все этапы от первоначальной настройки окружения до непосредственного создания иллюстраций, их валидации, предварительного просмотра и экспорта. Практика показывает, как инструмент помогает трансформировать сложные научные концепции или системные описания в структурированные визуальные материалы, сохраняя при этом полный контроль над источниками, стилистическим оформлением, форматами выгрузки, итеративными улучшениями и дополнительным анализом текстовых документов.
В результате исследователи получают готовый к работе в Google Colab пайплайн, способный создавать масштабируемую графику, подготавливать редактируемые схемы для draw.io, тестировать извлечение данных из PDF и упаковывать готовые материалы для дальнейшего использования в научных и технических проектах.
Материал подготовлен на основе авторских наработок. Автор текста: Сана Хассан (Sana Hassan), стажирующийся консультант и студентка двойного диплома в IIT Madras, специализирующаяся на применении искусственного интеллекта для решения практических задач.
Источник: marktechpost.com

