ReaderLM-v2:HTMLテキスト変換の次なる進化形
June 04, 2025
ReaderLM-v2 プロジェクト概要
プロジェクト説明
ReaderLM-v2は、Jina AIが開発した15億パラメータ規模の言語モデルです。生のHTMLを適切に整形されたMarkdownまたはJSONに変換することに特化しています。このモデルは、高い精度、最大512Kトークン(入出力合計)に及ぶ長文コンテキストの改善された処理能力、および29言語にわたる包括的な多言語サポートを提供します。コンテンツ抽出、HTML解析、変換タスクを強化します。
ReaderLM-v2の新機能
- Markdown生成の向上: コードフェンス、ネストされたリスト、テーブル、LaTeX数式といった複雑な要素の生成が改善されました。
- JSON出力: 事前定義されたスキーマを使用したHTMLからJSONへの直接生成が可能です。
- 長文コンテキスト処理: 最大512Kトークンまで対応し、長文コンテンツでのパフォーマンスが向上しました。
- 多言語サポート: 29言語に拡張されました。
- 安定性の強化: 対照的な損失を用いることで、長文シーケンスにおける退化の問題を軽減します。
モデル概要
- モデルタイプ: 自己回帰型、デコーダーオンリーのトランスフォーマー
- パラメータ数: 15.4億
- コンテキストウィンドウ: 最大512Kトークン(入出力合計)
- 対応言語: 英語、中国語、日本語、韓国語、フランス語、スペイン語、ポルトガル語、ドイツ語、イタリア語、ロシア語、ベトナム語、タイ語、アラビア語、その他を含む全29言語。
使用方法
Reader API経由での利用
ReaderLM-v2はReader APIに統合されています。
利用するには、リクエストヘッダーにx-engine: readerlm-v2
を指定し、Accept: text/event-stream
を有効にします。
curl https://r.jina.ai/https://news.ycombinator.com/ -H 'x-engine: readerlm-v2' -H 'Accept: text/event-stream'
Google Colabでの利用
HTMLからMarkdownへの変換、JSON抽出、指示追従を実演するためのGoogle Colabノートブックが利用可能です。Colabの無料T4 GPU層に最適化されており、vllm
とtriton
が必要です。
ローカルでの利用
- 依存関係のインストール:
pip install transformers
- モデルのロードと実行:
from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda" # または "cpu" tokenizer = AutoTokenizer.from_pretrained("jinaai/ReaderLM-v2") model = AutoModelForCausalLM.from_pretrained("jinaai/ReaderLM-v2").to(device)
- (オプション) HTMLの事前クリーンアップ: 提供されているPython関数を使うと、スクリプト、スタイル、コメント、メタタグを削除したり、base64画像やSVGを処理したりできます。
import re # ... (元のテキストで提供されているクリーニング関数) def clean_html(html: str, clean_svg: bool = False, clean_base64: bool = False): # ... (元のテキストで提供されている実装) pass
- プロンプトの作成:
def create_prompt( text: str, tokenizer=None, instruction: str = None, schema: str = None ) -> str: # ... (元のテキストで提供されている実装) pass
- HTMLからMarkdownへの変換例:
html = "<html><body><h1>Hello, world!</h1></body></html>" html = clean_html(html) input_prompt = create_prompt(html, tokenizer=tokenizer) inputs = tokenizer.encode(input_prompt, return_tensors="pt").to(device) outputs = model.generate( inputs, max_new_tokens=1024, temperature=0, do_sample=False, repetition_penalty=1.08 ) print(tokenizer.decode(outputs[0]))
- HTMLからJSONへの変換例:
schema = """ { "type": "object", "properties": { "title": { "type": "string" }, ... (スキーマの全体は元のテキストを参照) } """ html = clean_html(html) input_prompt = create_prompt(html, tokenizer=tokenizer, schema=schema) inputs = tokenizer.encode(input_prompt, return_tensors="pt").to(device) outputs = model.generate( inputs, max_new_tokens=1024, temperature=0, do_sample=False, repetition_penalty=1.08 ) print(tokenizer.decode(outputs[0]))
主な特徴
- 生のHTMLをMarkdownまたはJSONに変換します。
- 29言語に対応しています。
- 最大512Kトークン(入出力合計)を処理できます。
- 複雑なMarkdown要素(コードフェンス、ネストされたリスト、テーブル、LaTeX)を生成します。
- 事前定義されたスキーマを使用して直接JSONを出力します。
- 長尺のシーケンス生成における安定性が向上しました。
- HTMLからMarkdownへの変換において、より大規模なモデルを上回る性能を発揮します(ROUGE-L: 0.84, Levenshtein距離: 0.22, Jaro-Winkler類似度: 0.82)。
- HTMLからJSONへの変換においても競争力のある性能を示します(F1スコア: 0.81, 精度: 0.82, 再現率: 0.81, パスレート: 0.98)。
- コンテンツの整合性(39/50)、構造の正確性(35/50)、フォーマット遵守(36/50)において高い定性的評価を得ています。
対象ユーザー
- 開発者
- データサイエンティスト
- 研究者
- HTMLから構造化されたコンテンツやMarkdown形式のコンテンツを解析・抽出する必要がある個人または組織。
プロジェクトリンク
- Hugging Face Model Card: https://huggingface.co/jinaai/ReaderLM-v2
- Jina AI Blog: https://jina.ai/news
- Reader API: https://r.jina.ai/
- Google Colab Notebook: ハンズオン体験のためにHugging Faceモデルカードからリンクされています。
アプリケーションシナリオ
- コンテンツ抽出: サマリー作成、分析、アーカイブのためにウェブページから主要なコンテンツを抽出します。
- データ構造化: 非構造化HTMLデータをデータベースへの取り込みやAPI消費のために構造化されたJSON形式に変換します。
- ウェブスクレイピング: ウェブサイトからのデータ収集の効率と精度を向上させます。
- ナレッジベース構築: 様々なウェブコンテンツを一貫性のあるMarkdownに変換し、ナレッジマネジメントシステムに利用します。
- テキスト処理パイプライン: HTMLをLLM(大規模言語モデル)にとって扱いやすい形式に変換することで、LLMの前処理ステップとして機能します。