NuMarkdown-8B-Thinking:让文档转换变得更智能

你是否曾经遇到过这样的情况:手里拿着一堆扫描的文档,比如书籍、合同或者报告,想要把它们变成可以编辑的电子版?传统的工具可能会让你头疼——它们能认出文字,但一碰到复杂的排版或者表格,就手忙脚乱。今天,我要给你介绍一个特别的帮手——NuMarkdown-8B-Thinking。它不仅能“看懂”文档,还能把它们变成整齐的 Markdown 文件。这对于需要处理大量文件或者做内容分析的人来说,简直太方便了。

在这篇文章里,我会带你一步步了解这个模型是什么、它怎么工作、能做什么,以及怎么用它来解决实际问题。无论你是学生、研究人员还是职场人士,只要你需要处理文档,这篇文章都会给你一些实用的启发。准备好了吗?我们开始吧!


什么是 NuMarkdown-8B-Thinking?

简单来说,NuMarkdown-8B-Thinking 是一个专门用来把文档转换成 Markdown 格式的智能工具。它结合了 OCR(光学字符识别)视觉语言模型(VLM) 的技术,能从图片或扫描件中提取文字,还能理解文档的布局,最后生成 Markdown 文件。

想象一下,你有一个助手,先认真看一遍你的文档,记下哪里是标题、哪里是表格、哪里是正文,然后再动手整理成一份清晰的文件。NuMarkdown-8B-Thinking 就是这样的助手。它基于一个叫 Qwen 2.5-VL-7B 的模型,经过特别训练,能处理那些让人头疼的复杂布局和表格。

它为什么特别?

  • 能看懂复杂结构:普通 OCR 工具只能把文字“抄”下来,但这个模型会分析整个文档,知道哪里是标题、哪里是列表、哪里是表格。
  • 表格处理能力强:碰到合并单元格或者多行内容的表格,它也能整理得井井有条。
  • 输出 Markdown:Markdown 是一种简单易用的标记语言,很多人都用它写文档、做笔记或者管理内容。这个模型直接生成 Markdown,省去了你手动整理的麻烦。

它是怎么工作的?

NuMarkdown-8B-Thinking 的工作方式有点像人的思考过程,分成两个步骤:

  1. 思考阶段
    它会先“想一想”,生成一些“思考 tokens”(你可以理解为它的笔记),用来分析文档的结构。比如,它会判断:“这个是标题,那个是表格,这段是正文。”

  2. 转换阶段
    分析完之后,它根据自己的“笔记”,把内容整理成 Markdown 格式输出。

这种“先想后做”的方式,让它在处理复杂文档时特别靠谱。思考的深度会根据任务难度变化,有时候思考的部分甚至比最终输出的内容还多好几倍。

它是怎么训练出来的?

训练过程分两步:

  1. 监督微调(SFT)
    用一些合成的文档数据(从公开的 PDF 文件生成的)来教它怎么从文档到 Markdown。这就像给它看很多例子,让它学会模仿。

  2. 强化学习(RL)
    用一种叫 GRPO 的方法(Grouped Reward Policy Optimization),特别关注布局的准确性,再用一些难处理的图片来“磨炼”它。


它的表现如何?

NuMarkdown-8B-Thinking 在测试中表现得很出色,甚至超过了像 GPT-4o 这样的通用模型和 OCRFlux 这样的专业 OCR 工具。它跟一些大型闭源模型(比如 Gemini 2.5)也能一较高下。

排名数据

在一个叫 Arena 的排名中,它拿到了第二名,仅次于 gemini-flash-reasoning。下面是具体的排名表:

排名 模型 μ σ μ − 3σ
1 gemini-flash-reasoning 26.75 0.80 24.35
2 NuMarkdown-reasoning 26.10 0.79 23.72
3 NuMarkdown-reasoning-w/o_grpo 25.32 0.80 22.93
4 OCRFlux-3B 24.63 0.80 22.22
5 gpt-4o 24.48 0.80 22.08
6 gemini-flash-w/o_reasoning 24.11 0.79 21.74
7 RolmoOCR 23.53 0.82 21.07

这个排名是用一种叫 trueskill-2 的系统算出来的,基于大约 500 次匿名投票。可以看到,NuMarkdown-8B-Thinking 的得分(μ)是 26.10,非常接近第一名。

胜率对比

在跟其他模型的直接对比中(只看图片文档),它的胜率也很高。
(文档里提到了一张柱状图,这里无法展示,但我可以描述一下:柱状图展示了 NuMarkdown-8B-Thinking 和其他模型的胜率、平局率和败率,它在大多数对比中都占上风,尤其是在跟 OCRFlux-3B 和 GPT-4o 的较量中。)


怎么用 NuMarkdown-8B-Thinking?

想试试这个模型?它提供了两种主要的使用方式:vLLMTransformers 库。下面我一步步教你怎么操作。

方法 1:用 vLLM

vLLM 是一个高效的推理工具,适合快速部署模型。跟着这些步骤走:

  1. 安装 vLLM
    确保你的电脑上已经装好了 vLLM。如果没有,可以用 pip 安装:

    pip install vllm
    
  2. 启动服务
    在终端运行这条命令,启动 NuMarkdown-8B-Thinking 的服务:

    vllm serve numind/NuMarkdown-8B-Thinking --trust_remote_code --limit-mm-per-prompt image=1
    
  3. 发送请求
    用 Python 写一个脚本,把图片传给模型,让它处理。代码如下:

    from openai import OpenAI
    import base64
    
    # 设置 API 参数
    openai_api_key = "EMPTY"
    openai_api_base = "http://localhost:8000/v1"
    
    client = OpenAI(
        api_key=openai_api_key,
        base_url=openai_api_base,
    )
    
    # 把图片转成 base64 格式
    def encode_image(image_path):
        with open(image_path, "rb") as image_file:
            return base64.b64encode(image_file.read()).decode('utf-8')
    
    # 替换成你的图片路径
    base64_image = encode_image("image.png")
    data_url = f"data:image/jpeg;base64,{base64_image}"
    
    # 发送请求给模型
    chat_response = client.chat.completions.create(
        model="numind/NuMarkdown-8B-Thinking",
        temperature=0.7,
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {"url": data_url},
                        "min_pixels": 100 * 28 * 28,
                        "max_pixels": 5000 * 28 * 28,
                    },
                ],
            },
        ]
    )
    
    # 提取结果
    result = chat_response.choices[0].message.content
    reasoning = result.split("<think>")[1].split("</think>")[0]
    answer = result.split("<answer>")[1].split("</answer>")[0]
    print(answer)
    

    这段代码会把图片传给模型,然后打印出生成的 Markdown 内容。

方法 2:用 Transformers 库

如果你更喜欢用 Hugging Face 的工具,可以试试这个方法:

  1. 安装依赖
    确保你装了 Transformers 和 PyTorch:

    pip install transformers torch
    
  2. 加载模型和处理器
    用 Python 加载模型:

    import torch
    from PIL import Image
    from transformers import AutoProcessor, Qwen2_5_VLForConditionalGeneration
    
    model_id = "numind/NuMarkdown-8B-Thinking"
    
    processor = AutoProcessor.from_pretrained(
        model_id,
        trust_remote_code=True,
        min_pixels=100*28*28, max_pixels=5000*28*28
    )
    
    model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
        model_id,
        torch_dtype=torch.bfloat16,
        attn_implementation="flash_attention_2",
        device_map="auto",
        trust_remote_code=True,
    )
    
  3. 准备图片和提示
    加载你的图片并设置输入:

    img = Image.open("image.png").convert("RGB")
    messages = [{
        "role": "user",
        "content": [
            {"type": "image"},
        ],
    }]
    prompt = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    model_input = processor(text=prompt, images=[img], return_tensors="pt").to(model.device)
    
  4. 生成输出
    运行模型,得到 Markdown 结果:

    with torch.no_grad():
        model_output = model.generate(**model_input, temperature=0.7, max_new_tokens=5000)
    
    result = processor.decode(model_output[0])
    reasoning = result.split("<think>")[1].split("</think>")[0]
    answer = result.split("<answer>")[1].split("</answer>")[0]
    print(answer)
    

两种方法都可以,vLLM 更适合快速部署,Transformers 更灵活,适合调试或者自定义。


一个实际例子

为了让你更直观地感受它的能力,我们来看一个例子。
(文档里提到了一张图片 ex1.png,这里无法展示,但我会描述它的内容:图片是一个两页的教育文档,每页有标题、列表、表格和页脚,表格里有合并单元格和多行内容。)

模型处理后,输出了这样的 Markdown 文件:

### Generalitat de Catalunya
### Departament d'Educació
### Institut Gal·lecs

### Curs 2021-22

- Els llibres de color blau indiquen que es manté respecte al curs anterior。
- Els llibres de color groc indiquen que es tracta d'un canvi per a aquest curs。
- Els llibres de color vermell indiquen que no s'han de comprar perquè van a càrrec del centre。
- Matèries sense llibre: Dossiers, llicències i el Kit de tecnologia s'hauran de pagar i de recollir a través de l'AMPA a partir de setembre。

# 1 ESO

| MATERIAL          | TÍTOL                                      | AUTOR             | EDITORIAL                                    | ISBN          |
|-------------------|--------------------------------------------|-------------------|----------------------------------------------|---------------|
| Llengua Catalana  | Punt Volat                                 |                   | Castellnou (Didacta +)                       | 9788417803124 |
|                   | Duna, Diari d'un estiu。                   | Muriel Villanueva | Babulinka Books<br>EditorialCol·lecció: Pettes<br>Joies per a Grans Lectors。<br>2013 | 9788494159077 |
|                   | El nen que xatejava amb Jack Sparrow。     | Francesc Puigpelat| Bromera<br>Col·lecció: L'Elefant。 2015      | 9788490264072 |
| Llengua Castellana| Proyecto Asterisco                         |                   | Castellnou (Didacta +)                       | 9788417803186 |
|                   | Manzanas rojas                             | Luis Matilla      | Ed。 Anaya                                   | 978846673989  |
|                   | Fàbulas de Esopo                           | Jerry Pinkney     | Vicens Vives                                 | 978843671648  |
| Anglès            | Think Ahead ESO 1。 Student's book。<br>Think Ahead ESO 1。 Workbook (cat)。 | | Burlington Books<br>Burlington Books         | 9788925300662<br>9789925300686 |

Codí: 04mp02  
Responsable: Coordinador Qualitat  
Versió: 5  
Full d'Informació a l'alumnat i famílies  
Aquest document pot quedar obsolet una vegada imprès  
Pàgina 1 de 2

### Generalitat de Catalunya
### Departament d'Educació
### Institut Gal·lecs

### Curs 2021-22

| MATERIAL          | TÍTOL                                      | AUTOR             | EDITORIAL                                    | ISBN          |
|-------------------|--------------------------------------------|-------------------|----------------------------------------------|---------------|
| FRANCÈS           | Nouvelle Génération A1-A2                  |                   | Santillana                                   | 9788490494745 |
| CIÈNCIES EXPERIMENTALS | Science Bits<br>ES GESTIONA A TRAVÉS DE L'AMPA AL SETEMBRE | |                                              | 9788412213485 (llicència digital) |
| MATEMÀTIQUES      | Projecte MOTIMATS-ONMAT (llicència digital) Tekman Books<br>ES GESTIONA A TRAVÉS DE L'AMPA AL SETEMBRE | | | |
| TECNOLOGIA        | Tecnologia 1 ESO                           | TEIDE             |                                              | 9788430783175 |
| VISUAL I PLÀSTICA | SENSE LLIBRE-KIT DE MATERIAL               |                   |                                              |               |
| CIÈNCIES SOCIALS  | SENSE LLIBRE-dossier                       |                   |                                              |               |

Codí: 04mp02  
Responsable: Coordinador Qualitat  
Versió: 5  
Full d'Informació a l'alumnat i famílies  
Aquest document pot quedar obsolet una vegada imprès  
Pàgina 2 de 2

你看,它把标题、列表、表格和页脚都整理得清清楚楚,连合并单元格和多行内容都处理得很好。


常见问题(FAQ)

你可能还有一些疑问,我在这里尽量回答清楚:

1. NuMarkdown-8B-Thinking 能处理什么类型的文档?

它主要用来处理图片格式的文档,比如扫描的 PDF、JPEG 或 PNG 文件。特别适合那些布局复杂、有表格的文档。

2. 怎么调整它的输出结果?

你可以改动 temperature 参数。这个值越低(比如 0.7),输出越稳定;值越高,输出会更有变化。默认 0.7 是个不错的起点。

3. 运行它需要什么硬件?

这个模型比较大,建议用 GPU 来跑,这样速度快很多。代码里可以用 device_map="auto" 让它自动选择设备。

4. 它能处理多页文档吗?

目前它一次只能处理一张图片。如果是多页文档,你得把每页分开处理,然后自己把结果拼起来。

5. 它支持哪些语言?

它主要是用英语文档训练的,但其他语言的文档也能试试,效果可能会因语言不同而变化。


如何开始使用?(HowTo Schema)

如果你想马上试试 NuMarkdown-8B-Thinking,这里是一个简单的操作指南:

步骤 1:准备环境

  • 需要什么:一台有 GPU 的电脑(推荐),Python 环境,vLLM 或 Transformers 库。
  • 安装工具

    • vLLM:pip install vllm
    • Transformers:pip install transformers torch

步骤 2:选择使用方式

  • 用 vLLM

    1. 启动服务:vllm serve numind/NuMarkdown-8B-Thinking --trust_remote_code --limit-mm-per-prompt image=1
    2. 运行前面给的 Python 代码,替换图片路径。
  • 用 Transformers

    1. 复制前面 Transformers 的代码。
    2. 改成你的图片路径,运行代码。

步骤 3:处理文档

  • 把你的文档(图片格式)传给模型。
  • 拿到输出的 Markdown 文件,检查一下结果。

步骤 4:调整和使用

  • 如果结果不够理想,可以调 temperature 参数,或者检查图片质量。
  • 把 Markdown 文件用在你的项目里,比如笔记、报告或者内容分析。

为什么值得试试?

NuMarkdown-8B-Thinking 不只是一个工具,它能帮你省下很多整理文档的时间。比如:

  • 学生:把课本扫描件转成 Markdown,方便复习。
  • 研究人员:把论文或报告转成可编辑的格式,加快分析。
  • 职场人士:把合同或手册数字化,方便存档和分享。

它最大的优势是能处理那些让人抓狂的复杂文档,而且输出的 Markdown 格式简单又实用。


结语

NuMarkdown-8B-Thinking 就像一个聪明的小助手,把 OCR 技术带到了一个新高度。它不仅能识别文字,还能理解文档的结构,生成整洁的 Markdown 文件。如果你经常需要处理文档,不妨试试这个工具。它可能会让你的工作轻松不少。

想了解更多?可以去 Hugging Face 页面 看看,或者加入 Discord 社区 和其他用户聊聊经验。有什么问题,随时留言,我尽量帮你解答!