@vanstriendaniel: OCR模型又来了!百度公司的Unlimited-OCR是其中比较有趣的一个。你可以无需太多…
摘要
这篇文章展示了如何在Hugging Face Jobs上将百度的Unlimited-OCR模型作为临时的、兼容OpenAI的端点提供服务,支持多页文档解析,具有表格转HTML和公式转LaTeX提取等功能。
查看缓存全文
缓存时间: 2026/06/23 15:52
又到了OCR模型扎堆出现的时候!@Baidu_Inc 的 Unlimited-OCR 是其中更有趣的一个。你可以通过 @huggingface Jobs(最近增加了端口转发支持)上的临时 GPU 端点,用一条命令轻松试玩。它兼容 OpenAI 接口,你的 HF token 作为 API key,而 --timeout 可以让它自动销毁,避免意外遗留正在运行的 GPU。模型预热后,响应迅速,而且 @sgl_project 支持对并发请求进行批处理,因此 Agent 可以启动模型,向它发送大批量异步请求(比如整批报纸扫描件),然后取消任务。我将它指向一份1901年报纸的头版《The Commoner》加上6个PDF页面,一次请求就返回了结果:表格以HTML返回,公式为LaTeX,带有标题的图片,跨页阅读顺序保持完整。文档在这里:https://huggingface.co/datasets/uv-scripts/ocr/blob/main/serving-unlimited-ocr.md#1-start-the-server…
serving-unlimited-ocr.md · uv-scripts/ocr at main
Source: https://huggingface.co/datasets/uv-scripts/ocr/blob/main/serving-unlimited-ocr.md davanstrien’s picture Sync from GitHub via hub-sync 5fd3fbe (https://huggingface.co/datasets/uv-scripts/ocr/commit/5fd3fbec679e15740c7f0db58d80e574ba8cbfc8) verified about 3 hours ago
https://huggingface.co/datasets/uv-scripts/ocr/blob/main/serving-unlimited-ocr.md#serve-unlimited-ocr-as-a-live-endpoint-on-hf-jobs 将Unlimited-OCR作为HF Jobs上的实时端点提供服务
此文件夹中的OCR配方以批处理作业(数据集输入 → 数据集输出)的方式运行。若要以交互方式、通过Agent或使用临时并发请求调用模型,可将其作为临时HTTP端点运行。
HF Jobs serving (https://huggingface.co/docs/hub/jobs-serving)在GPU作业上暴露一个端口,提供一个兼容OpenAI的端点,该端点持续运行直到作业被取消或到达其 --timeout。这是一个针对baidu/Unlimited-OCR (https://huggingface.co/baidu/Unlimited-OCR)(3B参数,MIT许可,基于DeepSeek-OCR;单次请求支持多页解析)的示例。该模型自带其SGLang构建,因此在标准的 lmsysorg/sglang 镜像上运行时,只需在启动时安装12 MB的wheel即可;无需自定义镜像。
https://huggingface.co/datasets/uv-scripts/ocr/blob/main/serving-unlimited-ocr.md#1-start-the-server 1. 启动服务器
hf jobs run --detach --expose 10000 --flavor h200 -s HF_TOKEN --timeout 30m \ lmsysorg/sglang:latest -- \ bash -lc 'pip install --no-deps https://github.com/baidu/Unlimited-OCR/raw/main/wheel/sglang-0.0.0.dev11416+g92e8bb79e-py3-none-any.whl \ && pip install -q kernels==0.11.7 \ && python -m sglang.launch_server --model baidu/Unlimited-OCR --served-model-name Unlimited-OCR \ --attention-backend fa3 --page-size 1 --mem-fraction-static 0.8 --context-length 32768 \ --enable-custom-logit-processor --disable-overlap-schedule --skip-server-warmup \ --host 0.0.0.0 --port 10000'
注意:
--在bash之前是必需的,否则CLI会将-lc解析为自己的标志。--timeout会在截止时间停止端点(并停止计费);hf jobs cancel <job-id>可提前停止。fa3需要Hopper GPU(例如h200)。该模型较小,因此由注意力后端而非GPU内存决定规格。运行hf jobs hardware查看可用规格。- 用
hf jobs logs -f <job-id>跟踪启动过程;服务器在输出Application startup complete时准备就绪(冷启动约需3分钟)。
https://huggingface.co/datasets/uv-scripts/ocr/blob/main/serving-unlimited-ocr.md#2-call-it-openai-client-hf-token-as-the-api-key 2. 调用(OpenAI客户端;HF token作为API key)
暴露的端口位于 https://<job-id>--10000.hf.jobs;OpenAI base URL为 <该地址>/v1。
`` import base64, os from openai import OpenAI
client = OpenAI(base_url=“https://
img = base64.b64encode(open(“page.jpg”, “rb”).read()).decode() r = client.chat.completions.create( model=“Unlimited-OCR”, messages=[{“role”: “user”, “content”: [ {“type”: “text”, “text”: “document parsing.”}, {“type”: “image_url”, “image_url”: {“url”: f“data:image/jpeg;base64,{img}“}}, ]}], temperature=0, extra_body={“images_config”: {“image_mode”: “gundam”}}, # “gundam”(裁剪分块)或 “base” ) print(r.choices[0].message.content) ``
输出为基于布局的Markdown:每个块标记为 <|det|>type [x1,y1,x2,y2]<|/det|> text,坐标归一化到0–1000。移除标签可得到纯文本(re.sub(r'<\\|det\\|>.*?<\\|/det\\|>', '', text)),也可保留标签以获取结构信息。
https://huggingface.co/datasets/uv-scripts/ocr/blob/main/serving-unlimited-ocr.md#3-multi-page–pdf 3. 多页 / PDF
使用 Multi page parsing. 提示和 image_mode="base",将多个页面图像放在同一个请求中发送:
`` parts = [{“type”: “text”, “text”: “Multi page parsing.”}] for page_png in page_images: # 例如使用pymupdf以约150 dpi渲染的PDF页面 b64 = base64.b64encode(open(page_png, “rb”).read()).decode() parts.append({“type”: “image_url”, “image_url”: {“url”: f“data:image/png;base64,{b64}“}})
r = client.chat.completions.create( model=“Unlimited-OCR”, messages=[{“role”: “user”, “content”: parts}], temperature=0, max_tokens=16384, extra_body={“images_config”: {“image_mode”: “base”}}, ) ``
页面之间用 \n\n---\n\n 分隔;表格以HTML返回,方程以LaTeX返回,跨页阅读顺序保持完整。上下文长度为32k token,因此较长的文档请拆分。
https://huggingface.co/datasets/uv-scripts/ocr/blob/main/serving-unlimited-ocr.md#4-concurrency 4. 并发
SGLang对并发请求进行批处理,因此客户端可并行向单个端点发送多个请求;上游的 infer.py (https://github.com/baidu/Unlimited-OCR/blob/main/infer.py) 使用 concurrency=8 的 ThreadPoolExecutor。对于大型语料库,在数据附近运行的批处理作业(可恢复,无网络传输)通常比客户端到端点的循环更合适。
https://huggingface.co/datasets/uv-scripts/ocr/blob/main/serving-unlimited-ocr.md#5-stop-it 5. 停止
hf jobs cancel <job-id>
计费按GPU规格每分钟计费,加上暴露端口的小额固定费用;调度时间不计费。运行 hf jobs hardware 查看当前规格和价格。
相似文章
baidu/Unlimited-OCR
百度发布了Unlimited-OCR,一种用于一次性长程文档解析的新模型,基于Deepseek-OCR构建。它支持通过Hugging Face Transformers和SGLang进行单图像和多页/PDF解析。
Unlimited OCR: 一次性长程解析
百度发布Unlimited-OCR,这是一个基于Deepseek-OCR构建的开源模型,用于一次性长程文档解析,支持单张图片、多页文档和PDF。
@GoSailGlobal: 现在的 OCR 处理几十页文档,是逐页跑的 每翻一页,记忆清零一次 百度今天悄悄在 GitHub 和 HuggingFace 开源了一个模型,叫 Unlimited OCR,它的灵感,来自人类抄书: - 你抄一本书,不会每写一个字就把前面…
百度开源了 Unlimited OCR 模型,采用参考滑动窗口注意力(R-SWA)机制,实现了对长达 32K 上下文的一次性文档解析,无需逐页推理。
@geekbb: 百度开源的视觉语言模型 OCR 项目,在 DeepSeek-OCR 基础上做了升级,主打一次性解析超长文档。模型有两种推理模式:gundam 模式用来对付单张图里的密集文字,base 模式处理多页或 PDF。 https://github…
百度开源了视觉语言模型Unlimited-OCR,基于DeepSeek-OCR升级,支持一次性解析超长文档,提供gundam(单图密集文字)和base(多页/PDF)两种推理模式。
@berryxia: 卧槽,这一波直接把DeepSeek的“墙角挖到了啊”! 昨晚看到HuggingFace刷到这个有意思的OCR开源模型和原来背后有趣的故事。 这个OCR模型直接与传统的OCR模型完全不同! 光着速度和精准度真的就无敌了~~ 先说说背景,熟悉…
百度开源了Unlimited OCR模型,采用R-SWA注意力机制,可一次性处理数百页文档,无需分页,KV Cache恒定。该模型创新性地借鉴了人类抄书时的注意力模式,并与DeepSeek OCR有技术渊源,引发了对人才流动的关注。