ファイルを Markdown に変換する前の解析では、変換対象の種類に応じてクリーンアップを行います。
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 を超える画像を「大きすぎる」とします。
- 大きすぎる場合は、その寸法に収まるようリサイズを試みます。リサイズに失敗した場合は、元の画像データを使います。
- 画像を 物体検出モデル に送ります。具体的には、Workers AI の
@cf/facebook/detr-resnet-50を使います。 - 前のステップで物体が検出された場合は、image-to-text モデル に画像の説明を指示するプロンプトへ、その内容を追記します。
- リクエストの変換オプションで希望の変換言語が指定されている場合は、その言語で出力するよう、前のプロンプトに指示を足します。詳しくは 変換オプション を参照してください。
- 最終プロンプトと画像データを、同じく Workers AI の
@cf/google/gemma-4-26b-a4b-itモデルへ送ります。
- メタデータを抽出します。最終結果から取り除くこともできます。詳しくは 変換オプション を参照してください。
- 各ページを順番に解析します。
- PDF から
StructTreeオブジェクトの取得を試みます。このデータ構造は、ISO 14289 (PDF/UA) ↗ で定められた、PDF 内容を構成するタグ付き要素の木です。 - 取得できない場合は、ページのテキストを そのまま 抽出して返します。
StructTreeを取得できた場合は、ノードをたどり、内容の意味を保った Markdown 表現を組み立てます。