ReaderLM-v2 : La prochaine étape de l'évolution de la conversion HTML-texte
Résumé du Projet ReaderLM-v2
Description du Projet
ReaderLM-v2 est un modèle de langage de 1,5 milliard de paramètres développé par Jina AI. Il est spécialisé dans la conversion de HTML brut en Markdown ou JSON bien formaté. Ce modèle offre une précision supérieure, une meilleure gestion des textes plus longs (jusqu'à 512K tokens combinés en entrée/sortie), et un support multilingue complet (29 langues). Il améliore les tâches d'extraction de contenu, d'analyse HTML et de transformation.
Nouveautés de ReaderLM-v2
- Meilleure génération de Markdown : Amélioration de la génération d'éléments complexes comme les blocs de code, les listes imbriquées, les tableaux et les équations LaTeX.
- Sortie JSON : Génération directe de HTML vers JSON à l'aide de schémas prédéfinis.
- Gestion de contextes plus longs : Supporte jusqu'à 512K tokens avec de meilleures performances sur les contenus étendus.
- Support multilingue : Étendu à 29 langues.
- Stabilité améliorée : Atténue les problèmes de dégénérescence pour les séquences longues grâce à la perte contrastive.
Présentation du Modèle
- Type de modèle : Transformeur autorégressif, de type décodeur uniquement
- Nombre de paramètres : 1,54 milliard
- Fenêtre de contexte : Jusqu'à 512K tokens (entrée et sortie combinées)
- Langues supportées : Anglais, chinois, japonais, coréen, français, espagnol, portugais, allemand, italien, russe, vietnamien, thaï, arabe, et 29 au total.
Instructions d'Utilisation
Via l'API Reader
ReaderLM-v2 est intégré à l'API Reader.
Pour l'utiliser, spécifiez x-engine: readerlm-v2
dans les en-têtes de requête et activez Accept: text/event-stream
.
curl https://r.jina.ai/https://news.ycombinator.com/ -H 'x-engine: readerlm-v2' -H 'Accept: text/event-stream'
Sur Google Colab
Un notebook Google Colab est disponible pour démontrer la conversion HTML vers Markdown, l'extraction JSON et le suivi des instructions. Il est optimisé pour le niveau de GPU T4 gratuit de Colab et nécessite vllm
et triton
.
Utilisation Locale
- Installer les dépendances :
pip install transformers
- Charger et exécuter le modèle :
from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda" # ou "cpu" tokenizer = AutoTokenizer.from_pretrained("jinaai/ReaderLM-v2") model = AutoModelForCausalLM.from_pretrained("jinaai/ReaderLM-v2").to(device)
- (Optionnel) Pré-nettoyer le HTML : Des fonctions Python fournies peuvent supprimer les scripts, les styles, les commentaires, les balises meta, et gérer les images base64 et les SVG.
import re # ... (les fonctions de nettoyage sont fournies dans le texte original) def clean_html(html: str, clean_svg: bool = False, clean_base64: bool = False): # ... (implémentation fournie dans le texte original) pass
- Créer un prompt :
def create_prompt( text: str, tokenizer=None, instruction: str = None, schema: str = None ) -> str: # ... (implémentation fournie dans le texte original) pass
- Exemple HTML vers 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]))
- Exemple HTML vers JSON :
schema = """ { "type": "object", "properties": { "title": { "type": "string" }, ... (schéma complet dans le texte original) } """ 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]))
Caractéristiques Clés
- Convertit le HTML brut en Markdown ou JSON.
- Supporte 29 langues.
- Gère jusqu'à 512K tokens (entrée et sortie combinées).
- Génère des éléments Markdown complexes (blocs de code, listes imbriquées, tableaux, LaTeX).
- Sortie JSON directe utilisant des schémas prédéfinis.
- Stabilité accrue pour la génération de séquences longues.
- Surpasse les modèles plus grands en conversion HTML vers Markdown (ROUGE-L : 0,84, Distance de Levenshtein : 0,22, Similarité Jaro-Winkler : 0,82).
- Performances compétitives en conversion HTML vers JSON (Score F1 : 0,81, Précision : 0,82, Rappel : 0,81, Taux de réussite : 0,98).
- Évaluation qualitative solide en Intégrité du contenu (39/50), Précision structurelle (35/50) et Conformité du format (36/50).
Utilisateurs Cibles
- Développeurs
- Scientifiques des données
- Chercheurs
- Particuliers ou organisations ayant besoin d'analyser et d'extraire du contenu structuré ou formaté en Markdown à partir de HTML.
Liens du Projet
- Fiche Modèle Hugging Face : https://huggingface.co/jinaai/ReaderLM-v2
- Blog Jina AI : https://jina.ai/news
- API Reader : https://r.jina.ai/
- Notebook Google Colab : Lié depuis la fiche modèle Hugging Face pour une expérience pratique.
Scénarios d'Application
- Extraction de Contenu : Extraire le contenu principal des pages web pour la synthèse, l'analyse ou l'archivage.
- Structuration des Données : Convertir les données HTML non structurées en format JSON structuré pour l'ingestion dans des bases de données ou la consommation d'API.
- Web Scraping : Améliorer l'efficacité et la précision de la collecte de données sur les sites web.
- Création de Bases de Connaissances : Transformer divers contenus web en Markdown cohérent pour les systèmes de gestion de connaissances.
- Pipelines de Traitement de Texte : Servir d'étape de prétraitement pour les grands modèles de langage (LLM) en convertissant le HTML en un format adapté aux LLM.