百度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在以下场景有明显优势:

  1. 包含表格和代码块的文档解析:表格还原率92%比DeepSeek-OCR的76%高出16个百分点,对技术文档、产品规格书这类内容效果明显。

  2. 需要保持文档结构的批量处理:infer.py脚本的--concurrency参数支持并发请求,适合文档量大的场景。官方建议concurrency不超过4以避免显存溢出。

  3. 混合排版的长文档:20页以上、包含中英文混排、多级标题、图文混排的文档,Unlimited-OCR的结构化输出比逐页解析后手动拼接更完整。

不适合的场景:纯文字的普通PDF、只有几行文字的简单图片、不需要结构化的纯OCR需求。这些场景用PaddleOCR或Tesseract更快。

局限

  1. GPU是硬需求:Transformers方案需要NVIDIA GPU,显存建议8GB以上。SGLang方案需要更多显存。

  2. gundam模式的耗时:裁剪分块解析在高质量图片上精度更高,但执行时间比base模式长约40%。20页文档gundam模式47秒,base模式约33秒。

  3. 复杂公式有误差:87%的公式识别率说明对复杂数学公式(积分、矩阵、多层分式)仍有约13%的错误率。对公式精度要求高的场景需要人工核对。

  4. 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,适合表格和代码块的复杂文档。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐