ReaderLM-v2:HTML文本转换的新纪元
June 04, 2025
ReaderLM-v2 项目概述
项目描述
ReaderLM-v2 是由 Jina AI 开发的一款拥有 15 亿参数的语言模型。它专门用于将原始 HTML 转换成排版良好的 Markdown 或 JSON 格式。该模型在准确性方面表现优异,能更好地处理长文本(输入/输出总计可达 512K tokens),并全面支持多语言(29 种语言)。它能有效提升内容提取、HTML 解析及格式转换等任务的效率和质量。
ReaderLM-v2 的新特性
- 更强的 Markdown 生成能力:能更好地生成复杂的元素,如代码块、嵌套列表、表格和 LaTeX 数学公式。
- 支持 JSON 输出:可根据预设的 schem 直接将 HTML 生成为 JSON 格式。
- 更长的上下文处理能力:支持最高 512K tokens,对长文本的处理性能更优。
- 更广泛的多语言支持:扩展至 29 种语言。
- 稳定性增强:通过对比学习损失(contrastive loss)缓解了长序列的退化问题。
模型概览
- 模型类型:自回归、仅解码器 Transformer 模型
- 参数数量:15.4 亿
- 上下文窗口:最高 512K tokens(输入和输出总计)
- 支持语言:英语、中文、日语、韩语、法语、西班牙语、葡萄牙语、德语、意大利语、俄语、越南语、泰语、阿拉伯语等,总计 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 上使用
我们提供了一个 Google Colab 笔记本,用于演示 HTML 转 Markdown、JSON 提取以及指令遵循等功能。该笔记本已针对 Colab 免费 T4 GPU tier 进行了优化,并要求安装 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" }, ... (完整 schema 见原始文本) } """ 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 tokens(输入和输出总计)。
- 能生成复杂的 Markdown 元素(代码块、嵌套列表、表格、LaTeX)。
- 可根据预设 schema 直接输出 JSON。
- 提升了长序列生成的稳定性。
- 在 HTML 转 Markdown 方面超越了更大模型(ROUGE-L: 0.84, Levenshtein Distance: 0.22, Jaro-Winkler Similarity: 0.82)。
- 在 HTML 转 JSON 方面表现出竞争力(F1 Score: 0.81, Precision: 0.82, Recall: 0.81, Pass-Rate: 0.98)。
- 在定性评估中表现强劲,内容完整性(39/50)、结构准确性(35/50)和格式符合度(36/50)均表现良好。
目标用户
- 开发者
- 数据科学家
- 研究人员
- 需要从 HTML 中解析并提取结构化或 Markdown 格式内容的个人或组织。
项目链接
- Hugging Face 模型卡片: https://huggingface.co/jinaai/ReaderLM-v2
- Jina AI 博客: https://jina.ai/news
- Reader API: https://r.jina.ai/
- Google Colab 笔记本: 可从 Hugging Face 模型卡片链接进入,以进行动手体验。
应用场景
- 内容提取:从网页中提取主要内容用于摘要、分析或归档。
- 数据结构化:将非结构化的 HTML 数据转换为结构化的 JSON 格式,以便导入数据库或供 API 调用。
- 网络爬取:提高从网站收集数据的效率和准确性。
- 知识库创建:将各种网络内容转换为统一的 Markdown 格式,用于知识管理系统。
- 文本处理流水线:作为大型语言模型(LLMs)的预处理步骤,将 HTML 转换成对 LLM 友好的格式。