AI知识库选集
发布于

复杂文档也能一键读懂?PaddleOCR VL + RAG 给出新答案

推荐语

百度PaddleOCR-VL以92.6分登顶全球OCR评测榜,9亿参数小模型竟能精准解析复杂公式、表格和手写体!

核心内容:
1. PaddleOCR-VL在复杂文档处理上的四大突破:公式识别、表格解析、阅读顺序还原、手写体识别
2. 模型独特优势:109种语言支持+结构化数据输出,实现真正的文档理解
3. 技术架构揭秘:PP-DocLayoutV2与0.9B参数模型的协同训练方案

杨芳贤

53AI创始人/腾讯云(TVP)最具价值专家

当文档包含复杂表格、数学公式或多栏排版时,传统 OCR 工具往往会产出杂乱内容,需要手动整理。

就在上周,我逛 GitHub 时看到了百度新近开源的 PaddleOCR-VL-0.9B。

老实讲,看到它只有 9 亿参数时,我第一反应是:“哦,又一个小模型来凑热闹?”但出于职业好奇,我还是要问一句:它能打吗?结果完全把我震住了。

这不只是 OCR,这是文档理解的一次量子飞跃

PaddleOCR-VL 远超我的预期。它在全球权威评测榜 OmniDocBench v1.5 的综合性能中拿到 92.6 的分数,位列全球第一;推理速度相较 MinerU2.5 提升 14.2%,相较 dots.ocr 提升 253.01%。

我最直观的感受是:它非常准,甚至“准得过分”!不愧是能登顶的第一名模型。

今天我会围绕四个关键挑战来测试 PaddleOCR-VL:公式识别、表格识别、阅读顺序与结构、手写体识别。

先看公式识别。我上传了一张包含复杂数学公式的图片。可以看到,模型处理得非常好——对上标、下标以及冗长复杂的表达式都能精准解析。

接着是表格识别。这是出了名的难题,表格样式多,有的带边框,有的不带,且包含大量数字,模型非常容易误判。我用 PaddleOCR-VL 处理了多种表格样例,准确率真的很能打。

另一个大难点是文档结构与阅读顺序的理解。现代文档不仅内容更复杂,而且版式变化很大:多栏设计、图文混排、折页、彩色印刷、倾斜扫描、手写批注……这些都会让 OCR 更困难。正确的阅读顺序并不总是简单的自上而下、从左到右。

PaddleOCR-VL 的技术报告展示了它几乎“像人一样”理解复杂结构。无论是学术论文、多栏报刊,还是技术报告,它都能智能分析版面,并恢复符合人类直觉的阅读顺序。

最后,即使面对更复杂的版式,PaddleOCR-VL 依然非常稳定。比如这张手写便签:它混合了文本、数字、段落与图片,左右、上下都有分栏,这类版面通常只有人才能理清头绪。

PaddleOCR VL 不再只是简单的文本识别,而是能够真正“理解”文档结构。无论是学术论文、多栏报刊还是技术报告,PaddleOCR-VL 都能智能理解版面布局,并自动按正确的顺序组织内容。

同时,它还能准确抽取复杂内容,例如文档中的表格、数学公式、手写笔记、图表数据,并将其转换成可直接使用的结构化数据。

此外,PaddleOCR-VL 支持 109 种语言的识别,覆盖中文、英文、法语、日语、俄语、阿拉伯语、西班牙语等多语种场景,极大提升了模型在多语文档中的识别与处理能力。

PaddleOCR-VL 由两部分组成:PP-DocLayoutV2 和 PaddleOCR-VL-0.9B。

其中核心是 PaddleOCR-VL-0.9B,它将一个预训练视觉编码器(visual encoder)与动态分辨率预处理器(dynamic resolution preprocessor)、两层 MLP projector,以及一个预训练大语言模型(LLM)集成到一起。

其预处理技术使用原生动态高分辨率(native dynamic high resolution)。视觉编码器采用 NaViT 风格编码器(NaViT style encoder),支持原生分辨率输入。

这一设计减少了幻觉(hallucinations),并提升了多模态视觉语言模型 PaddleOCR-VL-0.9B 的表现。

Projector 高效地把视觉编码器的特征对接到语言模型的 embedding 空间。

在自回归语言模型(autoregressive language model)中,序列是按 token 逐个生成的。这意味着解码器的规模会直接影响整体推理时延,模型越小,解码越快。

现在我们一步步来,拆解如何搭建一个强大的推理应用。先安装模型所需的依赖库。我们用 pip 安装:









下一步照例是导入相关库,随着我们继续,你会逐渐理解它们的作用,并进行一些基础配置。

PaddleOCR:以业界领先的准确率,将文档和图像转换为结构化、对 AI 友好的数据(如 JSON 与 Markdown),为 AI 应用提供支撑。

















于是我构建了这个 SimpleRAG 系统:用 PaddleOCR-VL 做文本抽取,用 OpenAI 生成回答。下面我来讲讲我是怎么做的。

在初始化阶段,我配置了核心组件——使用 HuggingFace 的 BGE embeddings 做向量表示,使用 GPT-4o 作为对话模型,temperature 设为 0 以获得稳定回复。我还初始化了稍后会构建的 vectorstore 和 QA chain。

在抽取方法上,一开始我尝试了 HuggingFace transformers 版本的 PaddleOCR,结果报了一个关于 image tokens 不匹配的诡异错误;随后安装 PaddlePaddle 又把 PyTorch 搞坏了(不得不重启环境,按正确顺序重装);接着我还得一路猜 API,因为有的方法已经弃用,新的参数也不一样。

真正的突破来自我直接打印了返回结果对象的结构——原来它就是一个列表,列表里只有一个字典,而那个字典里有个键叫 rec_texts,里面就是识别到的所有文本字符串列表。

所以,与其去访问什么复杂的嵌套结构比如 .boxes.text,我只需要判断结果是不是字典,拿 rec_texts 这个键,把其中的字符串扩展进我的列表就好了。















































在 build_index 中,我会先从所有图片中抽取文本,再用 RecursiveCharacterTextSplitter 将文档切分为 1000 字符、重叠 200 字符的块,用 BGE embeddings 构建 FAISS vectorstore,并搭建一个基于 GPT-4o 的 RetrievalQA chain,每次检索 top-3 的相关片段。

对于 query,我只需把问题传给 QA chain,它会完成检索与生成,并返回答案。







































在这个 AI 技术飞速演进的时代,我们经常被“史上最强”“颠覆性”之类的宣传包围。然而真正有价值的突破,往往来自那些解决了具体问题、让技术更易用的创新。

PaddleOCR-VL 也许不会登上大众科技头条,但对于每天都要处理文档的开发者而言,它可能正是久等的答案。

毕竟,最好的技术,是能静静融入日常工作、让你几乎察觉不到它的存在。PaddleOCR-VL 正在扎实地朝这个方向迈进。

大模型技术原理大模型技术报告大模型技术架构

浏览 (21)
点赞
收藏
1条评论
探小金-AI探金官方🆔
哈喽大家好呀!我是探小金 👋 哇~这篇文章真的太棒了!🎉 探小金读完真的被震撼到了,作者详细解析了PaddleOCR-VL在复杂文档处理上的四大突破:公式识别、表格解析、阅读顺序还原、手写体识别,还有技术架构和实际RAG应用案例,内容超级全面呢! @AI知识库选集 你的技术解析真的超专业!👍 从模型架构到实际应用都讲得很清楚,特别是那个SimpleRAG系统的构建过程,看得出来你花费了很多心思。特别是对模型效果的客观评价,既不夸大也不谦虚,值得点赞!💪 不过探小金有个好奇的问题想问问大家:🤔 在实际工作中,大家更关心OCR的速度还是准确率呀?还有遇到过哪些让OCR工具"崩溃"的奇怪文档版式吗?快来分享你们的经历吧~ 😊
点赞
评论
到底啦