Nanonets-OCR2 1.5B:文档智能转换的终极解决方案
Nanonets-OCR2 1.5B-exp 是一个革命性的图像转文本OCR模型,能够将复杂文档转换为结构化Markdown格式,具备智能内容识别和语义标记能力。该模型基于Qwen2-VL-2B-Instruct构建,专为下游大型语言模型处理而设计,支持多语言文档识别和智能内容提取。
核心功能详解
数学公式智能识别
模型能够自动识别文档中的数学公式,并将其转换为标准LaTeX语法格式。它能准确区分行内公式($...$)和显示公式($$...$$),为学术论文和技术文档处理提供专业支持。
图像内容结构化描述
对于文档中的图像内容,模型会生成详细的描述信息并封装在<img>标签中。无论是标识、图表还是示意图,模型都能准确捕捉其内容、样式和上下文信息。
签名与水印提取
在商业和法律文档处理方面表现卓越:
- 签名检测:自动识别并隔离签名,使用
<signature>标签封装 - 水印提取:检测文档中的水印文字,使用
<watermark>标签标记 - 页码识别:准确提取页码信息,支持多种页码格式
表单元素智能处理
模型能够识别并标准化处理表单中的交互元素:
- 复选框转换为
☐、☑、☒等Unicode符号 - 支持单选按钮和复杂表单结构
复杂表格精准提取
在处理数据密集型文档时,模型能够:
- 准确提取复杂表格结构
- 同时生成Markdown和HTML两种格式
- 保持表格的原始布局和层次关系
流程图与组织结构图转换
模型能够将流程图和组织结构图转换为Mermaid代码,为技术文档的版本控制和协作提供便利。
快速上手指南
使用Transformers库
from PIL import Image
from transformers import AutoTokenizer, AutoProcessor, AutoModelForImageTextToText
model_path = "nanonets/Nanonets-OCR2-1.5B-exp"
model = AutoModelForImageTextToText.from_pretrained(
model_path,
torch_dtype="auto",
device_map="auto"
)
model.eval()
tokenizer = AutoTokenizer.from_pretrained(model_path)
processor = AutoProcessor.from_pretrained(model_path)
def ocr_page_with_nanonets_s(image_path, model, processor, max_new_tokens=4096):
prompt = """提取文档中的文本内容,保持自然阅读顺序。表格以HTML格式返回,公式以LaTeX表示。如果文档中有图片且没有标题,在<img></img>标签内添加图片描述;如果有标题,将标题放入<img></img>标签内。水印用<watermark>标签包裹,页码用<page_number>标签标记。复选框使用☐和☑符号。"""
image = Image.open(image_path)
messages = [
{"role": "system", "content": "你是一个有用的助手。"},
{"role": "user", "content": [
{"type": "image", "image": f"file://{image_path}"},
{"type": "text", "text": prompt},
]},
]
text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=[text], images=[image], padding=True, return_tensors="pt")
inputs = inputs.to(model.device)
output_ids = model.generate(**inputs, max_new_tokens=max_new_tokens, do_sample=False)
generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, output_ids)]
output_text = processor.batch_decode(generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
return output_text[0]
image_path = "your_document.jpg"
result = ocr_page_with_nanonets_s(image_path, model, processor)
print(result)
使用vLLM加速推理
- 启动vLLM服务器:
vllm serve nanonets/Nanonets-OCR2-1.5B-exp
- 调用模型进行预测:
from openai import OpenAI
import base64
client = OpenAI(api_key="123", base_url="http://localhost:8000/v1")
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
def ocr_page_with_nanonets_s(img_base64):
response = client.chat.completions.create(
model="nanonets/Nanonets-OCR2-1.5B-exp",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {"url": f"data:image/png;base64,{img_base64}"},
},
{
"type": "text",
"text": "提取文档中的文本内容...",
},
],
}
],
temperature=0.0,
max_tokens=15000
)
return response.choices[0].message.content
test_img_path = "your_document.jpg"
img_base64 = encode_image(test_img_path)
print(ocr_page_with_nanonets_s(img_base64))
性能表现对比
Markdown转换准确率
| 模型 | 胜率 (%) | 负率 (%) | 双方正确 (%) |
|---|---|---|---|
| Nanonets OCR2 1.5B exp | 13.00 | 81.20 | 5.79 |
| Gemini 2.5 flash | 34.35 | 57.60 | 8.06 |
| Nanonets OCR2 3B | 29.37 | 54.58 | 16.04 |
视觉问答性能
| 数据集 | Nanonets OCR2 1.5B | Nanonets OCR2 3B | Qwen2.5-VL-72B |
|---|---|---|---|
| ChartQA | 78.56 | 79.20 | 76.20 |
| DocVQA | 89.43 | 85.15 | 85.51 |
实用技巧提升准确率
图像质量优化
- 提高分辨率:使用300dpi以上的高质量图像
- 增强对比度:确保文本与背景的对比度不低于5:1
- 去模糊处理:对扫描件进行图像增强
金融文档处理
对于表格密集的金融文档,建议使用以下提示词:
user_prompt = """以自然阅读顺序提取文档文本。表格以HTML格式返回,公式以LaTeX表示。图片描述放入<img>标签,水印用<watermark>标记,页码用<page_number>标注。复选框使用☐和☑符号。"""
多语言支持能力
模型支持以下语言文档处理:
- 主要语言:英语、中文、法语、西班牙语
- 扩展语言:葡萄牙语、德语、意大利语、俄语
- 亚洲语言:日语、韩语、阿拉伯语
应用场景覆盖
技术文档处理
- 将设计稿转换为可编辑图表
- 技术规范文档结构化
- API文档自动格式化
商业文档分析
- 财务报表表格提取
- 合同文档签名识别
- 商业计划书内容结构化
教育资料转换
- 教材图表数字化
- 学术论文公式识别
- 课件内容结构化处理
该模型的开源特性使其成为开发者和研究人员的理想选择,能够轻松集成到现有的文档处理流程中,大幅提升工作效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



