ReaderLM-v2: La próxima evolución en la conversión de HTML a texto
Resumen del Proyecto ReaderLM-v2
Descripción del Proyecto
ReaderLM-v2 es un modelo de lenguaje de 1.5B parámetros desarrollado por Jina AI. Se especializa en convertir HTML sin procesar en Markdown o JSON bien formateado. El modelo ofrece una precisión superior, un mejor manejo de contextos más largos (hasta 512K tokens combinados de entrada/salida) y un soporte multilingüe completo (29 idiomas). Mejora las tareas de extracción de contenido, análisis de HTML y transformación.
Novedades de ReaderLM-v2
- Mejor Generación de Markdown: Generación mejorada de elementos complejos como bloques de código, listas anidadas, tablas y ecuaciones LaTeX.
- Salida JSON: Generación directa de HTML a JSON utilizando esquemas predefinidos.
- Manejo de Contextos Más Largos: Soporta hasta 512K tokens con mejor rendimiento en contenido extenso.
- Soporte Multilingüe: Ampliado a 29 idiomas.
- Estabilidad Mejorada: Disminuye los problemas de degeneración en secuencias largas mediante pérdida contrastiva.
Visión General del Modelo
- Tipo de Modelo: Transformador autorregresivo, solo decodificador.
- Número de Parámetros: 1.54 mil millones.
- Ventana de Contexto: Hasta 512K tokens (entrada y salida combinadas).
- Idiomas Soportados: Inglés, chino, japonés, coreano, francés, español, portugués, alemán, italiano, ruso, vietnamita, tailandés, árabe, y 29 en total.
Instrucciones de Uso
A Través de la API Reader
ReaderLM-v2 está integrado en la API Reader.
Para usarlo, especifica x-engine: readerlm-v2
en las cabeceras de la solicitud y activa Accept: text/event-stream
.
curl https://r.jina.ai/https://news.ycombinator.com/ -H 'x-engine: readerlm-v2' -H 'Accept: text/event-stream'
En Google Colab
Hay un cuaderno de Google Colab disponible para demostrar la conversión de HTML a Markdown, la extracción de JSON y el seguimiento de instrucciones. Está optimizado para la GPU T4 gratuita de Colab, requiriendo vllm
y triton
.
Uso Local
- Instalar dependencias:
pip install transformers
- Cargar y ejecutar el modelo:
from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda" # o "cpu" tokenizer = AutoTokenizer.from_pretrained("jinaai/ReaderLM-v2") model = AutoModelForCausalLM.from_pretrained("jinaai/ReaderLM-v2").to(device)
- (Opcional) Limpiar previamente el HTML: Las funciones de Python proporcionadas pueden eliminar scripts, estilos, comentarios, etiquetas meta, y manejar imágenes base64 y SVG.
import re # ... (funciones de limpieza proporcionadas en el texto original) def clean_html(html: str, clean_svg: bool = False, clean_base64: bool = False): # ... (implementación proporcionada en el texto original) pass
- Crear un prompt:
def create_prompt( text: str, tokenizer=None, instruction: str = None, schema: str = None ) -> str: # ... (implementación proporcionada en el texto original) pass
- Ejemplo de HTML a 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]))
- Ejemplo de HTML a JSON:
schema = """ { "type": "object", "properties": { "title": { "type": "string" }, ... (esquema completo en el texto 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]))
Características Clave
- Convierte HTML sin procesar a Markdown o JSON.
- Soporta 29 idiomas.
- Maneja hasta 512K tokens (entrada y salida combinadas).
- Genera elementos Markdown complejos (bloques de código, listas anidadas, tablas, LaTeX).
- Salida JSON directa utilizando esquemas predefinidos.
- Estabilidad mejorada para la generación de secuencias largas.
- Supera a modelos más grandes en HTML a Markdown (ROUGE-L: 0.84, Distancia Levenshtein: 0.22, Similitud Jaro-Winkler: 0.82).
- Rendimiento competitivo en HTML a JSON (Puntuación F1: 0.81, Precisión: 0.82, Recall: 0.81, Tasa de acierto: 0.98).
- Fuerte evaluación cualitativa en Integridad del Contenido (39/50), Precisión Estructural (35/50) y Cumplimiento de Formato (36/50).
Usuarios Destino
- Desarrolladores
- Científicos de datos
- Investigadores
- Individuos u organizaciones que necesiten analizar y extraer contenido estructurado o con formato Markdown de HTML.
Enlaces del Proyecto
- Tarjeta del Modelo en Hugging Face: https://huggingface.co/jinaai/ReaderLM-v2
- Blog de Jina AI: https://jina.ai/news
- API Reader: https://r.jina.ai/
- Cuaderno Google Colab: Enlazado desde la tarjeta del modelo en Hugging Face para una experiencia práctica.
Escenarios de Aplicación
- Extracción de Contenido: Extraer el contenido principal de páginas web para resumir, analizar o archivar.
- Estructuración de Datos: Convertir datos HTML no estructurados a formato JSON estructurado para su ingestión en bases de datos o consumo por API.
- Web Scraping: Mejorar la eficiencia y precisión de la recopilación de datos de sitios web.
- Creación de Bases de Conocimiento: Transformar contenido web diverso en Markdown consistente para sistemas de gestión del conocimiento.
- Pipelines de Procesamiento de Texto: Actuar como un paso de pre-procesamiento para modelos de lenguaje grandes (LLMs) al convertir HTML a un formato amigable para dichos modelos.