尝试使用 DeepSeek-OCR 2

1月份,DeepSeek发布了DeepSeek-OCR 2,使用了新的视觉编码器。我尝试使用新的模型对小蓝本进行OCR,和之前的结果进行对比。

1. 代码

具体的识别代码见pdf2md.py,基本上和V1版本是一致的,稍微修改几个参数即可。

尝试过使用vLLM进行加速,但是没有成功。我的笔记本电脑显存有8G,但可分给vLLM的显存只有6.92G(对应的配置是gpu_memory_utilization=0.865),再高了就分配失败(即使关了独显直连也是这样)。这样加载完模型之后,还差0.38G才够KV缓存占用。无奈只能放弃了。

2. 进步

在下面的对比图片中,左侧是V1版本的结果,右侧是V2版本的结果。

  1. 能够正确识别多行公式并使用aligned环境。

  2. 漏图的情况大大减少,例如

  1. 对于数学公式内的相似符号、文字的识别正确率略有提升,例如

3. 退步

上面只是一些细微方面的进步,但是退步却是大面上的。

  1. 之前V1版本,对于简单的公式更倾向于识别成数学公式,而V2版本则更倾向于识别成普通的文字。例如

这点其实是V1版本的DeepSeek-OCR相较于MinerU和PaddleOCR-VL最让我满意的地方。而这个优势在V2模型中彻底丧失了。

这也带来的另外一个问题,就是有的时候识别出了数学公式,但是却没有把它放到正确的环境中,例如

这种情况在PaddleOCR-VL的识别结果中也多次出现。

  1. V2版本的DeepSeek-OCR虽然识别图像的准确率提高了很多,但是却出现了一个V1版本没有出现过的问题,就是在排版的时候,图片和图片的标题分开了,没有放到一起,例如

几乎所有的图片有这个问题。这又和PaddleOCR-VL表现一致了。

检查了一下区域检测结果,V1版本把图片的标题识别成了image_caption,而V2版本则是识别成了figure_title

又检查了一下之前PaddleOCR-VL的区域检测结果,果然也是识别成了figure_title。终于找到这个问题的原因了。

  1. V2版本还出现了一次大标题识别错误的情况:

看了一下区域监测结果:

识别区域是对的,但是不知道为什么最终的输出出了问题。这个问题之前从来没有出现过。

之前各个模型都有把大标题当成页眉忽略掉的情况(猜测这和标题下方的长实线有关),但是没有出现过只识别了一半的情况。

4. 整体评价

从最终的结果来看,DeepSeek-OCR 2的实际可用能力相较于原来的V1版本大大降低。如果选择一个版本的识别结果作为底本进行校对,我宁愿选择V1版本的识别结果。

V2版本带来的进步,第1个可以通过脚本进行批量替换解决,第2个和第3个都是只有在少数地方才能享受到的,而退步的前两种情况则是对几乎所有内容的识别都有影响。