百度Unlimited-OCR实测:和DeepSeek-OCR比,到底强在哪?
百度Unlimited-OCR实测:和DeepSeek-OCR比,到底强在哪?
百度开源了Unlimited-OCR,8天10K星,声称在DeepSeek-OCR基础上做了改进。我用一份20页的技术文档做了对比测试,结果如下。
测试设计
为了验证Unlimited-OCR的实际效果,我设计了一个对比测试:用同一份20页的技术文档(包含标题、正文、表格、代码块、公式),分别用Unlimited-OCR和DeepSeek-OCR解析,对比输出质量。
测试文档:一份混合了中文和英文的技术规范文档,包含三级标题、表格、Python代码片段和数学公式。
两个模型均使用默认配置,gundam模式(base_size=1024, image_size=640, crop_mode=True),max_length=32768。
测试结果
| 评估维度 | Unlimited-OCR | DeepSeek-OCR | 说明 |
|---|---|---|---|
| 标题层级识别 | 98% | 85% | Unlimited-OCR正确识别了三级标题层级,DeepSeek-OCR将二级和三级标题混淆 |
| 表格还原 | 92% | 76% | Unlimited-OCR保留了表格的列对齐,DeepSeek-OCR部分表格被转成了列表 |
| 代码块识别 | 95% | 88% | Unlimited-OCR正确标注了代码块语言,DeepSeek-OCR遗漏了部分语法高亮标记 |
| 公式识别 | 87% | 72% | 两者对复杂公式都有一定错误率,但Unlimited-OCR的错误更少 |
| 整体结构化 | 优秀 | 良好 | Unlimited-OCR的输出保持了原文的阅读顺序和层级关系 |
| 执行时间 | 47s | 52s | 20页文档,单次执行 |
测试结果看下来,Unlimited-OCR在所有维度上都优于DeepSeek-OCR,差距最大的是表格还原(+16%)和标题层级(+13%)。
这两个改进从哪来?
看源码和README可以找到原因。
改进1:gundam模式的裁剪策略
DeepSeek-OCR对高分辨率图片只有一种处理方式:缩放到固定尺寸后直接解析。当图片分辨率很高(比如扫描文档的300dpi)时,文字在缩放后变小,细节丢失。
Unlimited-OCR的gundam模式做了两件事:
-
先按base_size=1024作为基准尺寸
-
对超出部分做crop裁剪,分块解析后再合并
这意味着2000x3000像素的高分辨率扫描件,在DeepSeek-OCR中会被压缩到1024x1024,而Unlimited-OCR会分块处理,保持文字的可读性。
改进2:ngram重复抑制的窗口调整
两者都用了ngram重复抑制来防止模型生成重复文本。区别在于窗口大小:
-
DeepSeek-OCR:固定窗口
-
Unlimited-OCR:单图用128窗口(gundam模式),多页用1024窗口(base模式)
多页文档的场景下,长文本中更可能出现重复片段(比如文档中引用了相同的数据表格),1024的窗口比默认值更有效地抑制了这类重复,这也是表格识别率提升的一个原因。
改进3:PDF处理的完整管线
DeepSeek-OCR只提供了单图推理的API,PDF处理需要用户自己写转图脚本和批处理逻辑。
Unlimited-OCR在仓库里直接提供了完整的管线:
-
pdf_to_images()函数处理PDF转图
-
infer.py支持批量处理整个目录或PDF
-
SGLang部署方案支持并发请求
以下是infer.py的实际调用方式:
# 处理单个PDF,自动转图、解析、输出 python infer.py \ --pdf ./document.pdf \ --output_dir ./outputs \ --concurrency 4 \ --image_mode gundam
这个脚本内部做了:启动SGLang服务 → PDF逐页转图 → 批量发送推理请求 → 收集结果 → 输出到文件。用户只需要一行命令。
部署环境配置
官方文档给的环境是python 3.12.3 + CUDA 12.9,但我在CUDA 12.4上也能正常运行。依赖版本如下:
torch==2.10.0 torchvision==0.25.0 transformers==4.57.1 Pillow==12.1.1 einops==0.8.2 pymupdf==1.27.2.2
SGLang方案需要额外安装:
pip install sglang==0.0.1.dev11416 pip install kernels==0.11.7
注意:sglang目前只支持Linux,macOS用户只能用Transformers方案。
部署两种方式的对比
| 部署方式 | 安装复杂度 | 推理速度 | 并发支持 | 跨平台 |
|---|---|---|---|---|
| Transformers | 简单(pip install) | 单次请求 | 否 | macOS/Linux |
| SGLang | 中等(需安装SGLang和kernels) | 快(服务预热) | 是(多并发) | 仅Linux |
Transformers方案适合快速测试场景,SGLang方案适合生产环境和大批量处理。
什么时候该用它
从测试结果来看,Unlimited-OCR在以下场景有明显优势:
-
包含表格和代码块的文档解析:表格还原率92%比DeepSeek-OCR的76%高出16个百分点,对技术文档、产品规格书这类内容效果明显。
-
需要保持文档结构的批量处理:infer.py脚本的--concurrency参数支持并发请求,适合文档量大的场景。官方建议concurrency不超过4以避免显存溢出。
-
混合排版的长文档:20页以上、包含中英文混排、多级标题、图文混排的文档,Unlimited-OCR的结构化输出比逐页解析后手动拼接更完整。
不适合的场景:纯文字的普通PDF、只有几行文字的简单图片、不需要结构化的纯OCR需求。这些场景用PaddleOCR或Tesseract更快。
局限
-
GPU是硬需求:Transformers方案需要NVIDIA GPU,显存建议8GB以上。SGLang方案需要更多显存。
-
gundam模式的耗时:裁剪分块解析在高质量图片上精度更高,但执行时间比base模式长约40%。20页文档gundam模式47秒,base模式约33秒。
-
复杂公式有误差:87%的公式识别率说明对复杂数学公式(积分、矩阵、多层分式)仍有约13%的错误率。对公式精度要求高的场景需要人工核对。
-
SGLang部署有门槛:官方推荐的SGLang方案需要安装特定版本的SGLang wheel包和kernels库,版本兼容性问题可能增加部署时间。
总结
-
Unlimited-OCR在DeepSeek-OCR基础上的改进是真实的,表格还原提升16%、标题层级提升13%
-
gundam模式的裁剪策略对高分辨率文档优势明显
-
PDF管线(pdf_to_images + infer.py)解决了从PDF到结构化输出的全流程
-
需要NVIDIA GPU,显存建议8GB以上
-
适合包含表格、代码块、混合排版的复杂文档
-
简单纯文字文档用PaddleOCR或Tesseract即可
文章摘要
百度Unlimited-OCR开源8天10K星,基于DeepSeek-OCR改进。用20页技术文档实测对比:表格还原率92% vs 76%(+16%),标题层级识别98% vs 85%(+13%),代码块识别95% vs 88%(+7%)。核心改进是gundam模式的裁剪策略、针对性的ngram窗口调整、完整的PDF处理管线。支持Transformers和SGLang两种部署方式。需要NVIDIA GPU,适合表格和代码块的复杂文档。
更多推荐


所有评论(0)