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 进行了优化,并要求安装 vllmtriton

本地使用

  1. 安装依赖
    pip install transformers
    
  2. 加载并运行模型
    from transformers import AutoModelForCausalLM, AutoTokenizer
    
    device = "cuda" # 或 "cpu"
    tokenizer = AutoTokenizer.from_pretrained("jinaai/ReaderLM-v2")
    model = AutoModelForCausalLM.from_pretrained("jinaai/ReaderLM-v2").to(device)
    
  3. (可选)预清洗 HTML:提供的 Python 函数可以移除脚本、样式、注释、元标签,并处理 base64 图片和 SVG。
    import re
    
    # ... (原始文本中提供的清洗函数)
    
    def clean_html(html: str, clean_svg: bool = False, clean_base64: bool = False):
        # ... (原始文本中提供的具体实现)
        pass
    
  4. 创建提示
    def create_prompt(
        text: str, tokenizer=None, instruction: str = None, schema: str = None
    ) -> str:
        # ... (原始文本中提供的具体实现)
        pass
    
  5. 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]))
    
  6. 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 格式内容的个人或组织。

项目链接

应用场景

  • 内容提取:从网页中提取主要内容用于摘要、分析或归档。
  • 数据结构化:将非结构化的 HTML 数据转换为结构化的 JSON 格式,以便导入数据库或供 API 调用。
  • 网络爬取:提高从网站收集数据的效率和准确性。
  • 知识库创建:将各种网络内容转换为统一的 Markdown 格式,用于知识管理系统。
  • 文本处理流水线:作为大型语言模型(LLMs)的预处理步骤,将 HTML 转换成对 LLM 友好的格式。

分享本文