← Cloudflare Workers AI / workers-ai / features / markdown-conversion
Как это работает
Предварительная обработка
При разборе файлов перед их преобразованием в Markdown мы выполняем ряд задач по очистке в зависимости от типа исходного файла.
HTML
Когда мы обнаруживаем HTML-файл, перед преобразованием с его содержимым происходит ряд действий:
- Некоторые элементы игнорируются, включая
scriptиstyleтеги. - Извлекаются метатеги. Они включают
title,description,og:title,og:descriptionиog:image. - JSON-LD ↗ содержимое извлекается, если оно есть. Оно будет добавлено в конец преобразованного markdown.
- Базовый URL для разрешения относительных ссылок извлекается из
<base>элемент1, если он существует, согласно спецификации (то есть учитывается только первое вхождение базового URL). - Если
cssSelectorвариант:- присутствует, то для дальнейшей обработки сохраняются только элементы, соответствующие селектору;
- отсутствует, то такие элементы, как
<header>,<footer>и<head>удаляются из текста.
- Если базовый URL был получен ранее, относительные ссылки в оставшемся HTML преобразуются в полные URL-адреса
1 Хост также можно задать для каждого запроса с помощью параметров преобразования HTML. См. Параметры конвертации для получения дополнительных сведений.
Изображения
Подготовка изображений к преобразованию требует немного больше работы.
Для анимированных файлов GIF извлекается и анализируется только первый кадр. Остальные кадры отбрасываются.
Сначала мы определяем тип изображения. Если это файл SVG (Scalable Vector Graphics), его нужно преобразовать в растровый формат, чтобы нужные модели Workers AI могли с ним работать. В этом случае SVG-файлы преобразуются в PNG внутри системы.
После этого:
- Мы пытаемся определить размеры изображения. Если это удаётся, мы проверяем, считается ли изображение «слишком большим». Изображение считается «слишком большим», если его ширина превышает 1280px или высота превышает 720px.
- Если изображение слишком большое, мы пытаемся изменить его размер в соответствии с этими размерами. Если изменение размера не удаётся, мы просто используем исходные данные изображения
- Изображение отправляется в модель обнаружения объектов. В частности, мы используем
@cf/facebook/detr-resnet-50от Workers AI. - Если на предыдущем шаге были обнаружены какие-либо объекты, они добавляются в промпт, который используется для настройки модель image-to-text о том, как описать изображение.
- Если в параметрах преобразования запроса указан предпочитаемый язык, предыдущий промпт дополняется указанием для модели выводить содержимое на нужном языке. См. Параметры конвертации для дополнительных сведений.
- Итоговый промпт вместе с данными изображения отправляется в
@cf/google/gemma-4-26b-a4b-itмодель, также из Workers AI.
PDF-файлы
- Извлекаются метаданные. Их можно удалить из итогового результата. См. Параметры конвертации для дополнительных сведений.
- Каждая страница обрабатывается последовательно.
- Мы пытаемся получить
StructTreeобъект из PDF-файла. Эта структура данных представляет собой дерево тегированных элементов, из которых состоит содержимое PDF, как указано в ISO 14289 (PDF/UA) ↗. - Если ничего не получено, мы извлекаем текст страницы as-is и верните его.
- Если нам удаётся получить
StructTree, мы обходим его узлы, чтобы построить семантическое представление его содержимого в формате Markdown.