10分钟快速上手Unlimited-OCR-2环境搭建与首次OCR识别完整教程【免费下载链接】Unlimited-OCR-2项目地址: https://ai.gitcode.com/hf_mirrors/baidu/Unlimited-OCR-2Unlimited-OCR-2是百度推出的无限长文档 OCR 识别模型支持一次性解析整本数百页的 PDF 或整部书籍且速度与显存占用几乎不随文档变长而增加。本教程面向新手带你 10 分钟完成Unlimited-OCR-2 环境搭建并跑通首次 OCR 识别——从单页扫描图到多页整本解析。一、为什么选择 Unlimited-OCR-2传统 OCR 模型每处理一页都要从头理解页数一多显存和耗时就成倍上涨。Unlimited-OCR-2 的核心突破在于特性说明SR-SWA 稀疏参考滑窗注意力把超长序列的图文注意力压缩到固定大小的参考集如 512 token计算复杂度与文档长度近乎无关无限视野解析在有限的上下文窗口内实现真正无上限的文档解析消除二次方注意力缩放长文档 SOTA在数十页MPDocBench与上百页MarathonDocBench基准上均达到最先进水平更详细的论文技术细节可以阅读仓库内的论文原文Unlimited-OCR-2.pdf。二、准备工作硬件与环境要求在开始之前请确认以下环境要求官方实测环境GPUNVIDIA 显卡官方在A800-80GB上验证显存越小可用 SGLang 参数进一步压缩Python3.10核心依赖版本pip install torch2.13.0 torchvision pillow transformers4.52.1 huggingface-hub0.36.0 \ tokenizers0.21.4 addict2.4.0 einops0.8.2 easydict1.13小贴士模型权重较大两个 safetensors 分片model-00001-of-00002.safetensors、model-00002-of-00002.safetensors首次运行会自动下载建议预留充足磁盘空间与稳定网络。三、获取模型代码如果希望直接查看模型结构、注意力实现等源码如 modeling_unlimitedocr.py、dash_attention.py、sparse_gather_triton.py可以克隆仓库git clone https://gitcode.com/hf_mirrors/baidu/Unlimited-OCR-2四、环境搭建两条路线任选Unlimited-OCR-2 官方支持两种推理方式Transformers快速体验适合新手和SGLang高性能服务化部署官方推荐。4.1 新手路线Transformers 快速测试只需安装依赖然后用AutoModel一行加载即可无需额外服务import torch from transformers import AutoModel, AutoTokenizer model_name baidu/Unlimited-OCR-2 tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModel.from_pretrained(model_name, trust_remote_codeTrue, use_safetensorsTrue, torch_dtypetorch.bfloat16).eval().cuda()加载完成后模型就具备infer单页和infer_multi多页两个方法见下一节。4.2 进阶路线SGLang 服务部署生产推荐仓库内已自带定制版 SGLang 轮子 sglang-0.5.20.dev13g75b9b06b02-py3-none-any.whl安装三步走uv venv --python 3.10 source .venv/bin/activate uv pip install wheel/sglang-0.5.20.dev13g75b9b06b02-py3-none-any.whl uv pip install pymupdf1.27.2.2 uv pip install fastokens0.3.2然后通过python -m sglang.launch_server启动服务完整启动参数、分页窗口、显存调优项可参考 README.md 的 SGLang 章节服务启动后即提供OpenAI 兼容 API可直接对接现有业务系统。五、首次 OCR 识别单页、多页、整本 PDF5.1 单页识别infer对单页图片模型默认使用动态切片编码gundam 模式细节更精准text model.infer(tokenizer, image_fileyour_doc/page_1.jpg, output_pathoutput/single, save_resultsTrue)5.2 多页/整本文档识别infer_multi把所有页面按顺序传入模型会在一次请求中利用跨页上下文解析整份文档输出中每页对应一个PAGE标记顺序与输入一致pages [fyour_doc/page_{i}.jpg for i in range(1, 8)] text, num_tokens model.infer_multi(tokenizer, image_filespages, output_pathoutput/multi, save_resultsTrue)5.3 PDF 一步到位如果是 PDF 文件先按 300 DPI 转成图片再批量解析即可完整示例见 README.mdimport fitz # PyMuPDF doc fitz.open(your_doc.pdf) mat fitz.Matrix(300/72, 300/72) paths [p for p in (ftmp/page_{i1}.png for i in range(len(doc)))] for i, page in enumerate(doc): page.get_pixmap(matrixmat).save(paths[i]) text, _ model.infer_multi(tokenizer, image_filespaths, save_resultsTrue)✅ 看到控制台流式输出解析后的文本恭喜你——Unlimited-OCR-2 已经跑起来了六、仓库文件结构速览了解这些文件方便你按需深入README.md完整安装、推理与部署文档首选阅读config.json模型主配置包含 SR-SWA 稀疏注意力参数sparse_attention_configgeneration_config.json生成参数配置modeling_unlimitedocr.pyUnlimitedOCRForCausalLM模型入口与infer/infer_multi实现modeling_deepseekv2.pyDeepSeek-V2 语言主干实现deepencoder.py视觉编码器Deeplip/SAM/CLIP 组件tokenizer.json / tokenizer_config.json分词器资源wheel/定制版 SGLang 推理轮子Unlimited-OCR-2.pdf技术论文原文七、常见问题与上手建议 Q1显存不够会 OOM 怎么办SGLang 路线下重点关注--mem-fraction-static官方建议 0.7、--max-prefill-tokens4096 降为 2048 可减半峰值显存并设置PYTORCH_CUDA_ALLOC_CONFexpandable_segments:True减少碎片化失败。Q2多页解析和单页解析怎么选多页文档请用infer_multi能利用跨页上下文跨页表格、连续段落更准确单页高分辨率扫描件用infer的动态切片模式细节更好。Q3为什么推荐 SGLang 而不是 TransformersSGLang 支持分页窗口调度前一个窗口的 KV 尾部可复用并发与长文档吞吐显著更好适合线上服务Transformers 适合快速验证和调试。Q4输出乱码或重复确保使用官方指定版本的transformers4.52.1且加载时带上trust_remote_codeTrueSGLang 路线按 README 配置custom_logit_processor可抑制 n-gram 重复。写在最后用Unlimited-OCR-2你只需要记住三步装依赖 → 加载模型 → 调用infer_multi传入整本文档图片即可获得无限视野的 OCR 解析能力。无论是合同、论文还是整本小说它都能在恒定时间内帮你读懂。动手试试吧【免费下载链接】Unlimited-OCR-2项目地址: https://ai.gitcode.com/hf_mirrors/baidu/Unlimited-OCR-2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?