上周写完没有多模态,我是怎么让DeepSeek V4完成视觉任务的之后,总觉得有点不得劲。那套流程能用,但还是不够优雅。
于是本着精益求精的宗旨,也想着给读者朋友们一个交待,继续又折腾了几天,今天总算跑通了一条新路子:开源免费、可本地部署,不再区分 PDF 是内嵌文字还是扫描版,统一用 MinerU + RapidOCR + Qwen 3.5 9B 搞定。
MinerU 这个工具主要用来识别文档中的文字,打开对应选项后,能识别文档的文字方向、排版布局,以及做分页标记。实际用下来,在将 PDF 转换成 Markdown 格式后,标题也能精确对应上。
这解决了什么问题?我之前调用 GPT-5.5 处理 OCR 任务的时候,生成的文档虽然总体质量过关,但是细节上有点粗糙,不光文档排版乱糟糟,而且分页标识不是特别准确,所以导致文档切割后,这个文档的标题上方还有前一份文档的残留部分,虽然不影响我和人工智能对文档的识别和理解,但总是不舒服,现在用了 MinerU 之后这个问题彻底解决。
而 RapidOCR 这个工具解决的则是 PDF 中表格无法被正确识别的问题。其实所有 OCR 相关的问题,用下面将要提到的 Qwen 3.5 9B 都能近乎完美解决,不过用大模型做这些有点大炮打鸟,而且效率不高,所以能用小工具完成目标就尽量用小的。
说回 RapidOCR。sub_model 里有两个选项,一个是 SLANet+,另一个是 UniTable,前者占用资源少,但是处理复杂表格可能效果不好,而 后者处理复杂单元格更好,只是更吃资源,可能动不动就爆显存了,感兴趣的朋友可以自己试下。
MinerU + RapidOCR 这两个基本上可以完成任务了,最后再加上个 9B 的千问模型主要是用来兜底的,碰到识别错误、扫描件太糊或者字太小的,再通过 llama.cpp 调出千问(用 Ollama 或者 vLLM 都可以,我自己习惯用这个),让它直接识图即可。
我发现,现在的大模型真的好厉害,这个能部署在本地显卡上的 9B 参数的模型,根据测评,在大部分项目上评分已经超过当年轰动世界的 GPT-3.5。我还记得,那时想着什么时候能够自己部署一个 ChatGPT 级别的大语言模型就好了,没想到到现在也才三年多。
好了,以上就是更新后的工作流。
这套流程其实不用显卡也可以,MinerU 和 RapidOCR 都有 CPU 版本(只是此时 RapidOCR 只能用 SLANet+ 模型),不过我还没来得及试。如果时间没那么紧的话,其实也挺适合那种不能连外网且显卡弱得可怜的工作电脑的;另外,我发现这张 P100 显卡用来微调 9B 模型似乎也不错,等我之后有空了攒点数据集,再来尝试下。
需要说明的是,我目前接触到的视觉任务主要还是以 PDF OCR 为主,如果读者朋友对其他类型的视觉任务感兴趣,也可以跟我说,之后有空也再研究看看。