DocAgent技术架构
请求处理链路
从用户发起请求到系统内部最终处理完成的完整路径,从外向内分别是:API Gateway -> Router -> Service


架构设计
为了适应多任务、高精度、高并发、易扩展的文档解析需求,设计如下架构
整体架构

备注:右边流程图中带背景色的表示“GPU模型”
并发设计
- 当处理单个请求的不同功能时,采用异步并行
# 并行执行多个独立任务,提高处理效率
if tasks:
results = await asyncio.gather(*tasks.values(), return_exceptions=True)
for (key, _), result in zip(tasks.items(), results):
if isinstance(result, Exception):
logger.error(f"任务 {key} 失败: {str(result)}")
continue
# 处理正常结果
- 当有多个并发请求时,异步架构能够提升吞吐量;降低资源占用;同时保障响应性(新的请求不因线程池耗尽而拒绝)
时间轴 →
请求1: [下载]~~~~[OCR]~~~~[表格]~~~~[输出]
请求2: [下载]~~~~[OCR]~~~~[流程图]~~~~[输出]
请求3: [下载]~~~~[OCR]~~~~[关系分析]~~~~[输出]
~~~~ = I/O等待时间,期间可处理其他请求
扩展性设计
任务类型扩展
- 通过
task_type参数灵活组合多种能力 - 添加新任务只需实现相应解析器函数
- 任务间松耦合,可独立开发测试
处理策略扩展
- 路由调度机制支持新增解析策略
- 业务领域可定制(如
businessDomain参数) - 支持ZoomIn解析精度增强
- ZoomIn是指在图像中“进入”某个局部区域,放大并进行细粒度理解。
- 用途:这里用来解决生僻字、含有公式的表格/图纸、含有 number/name等细节的文档
- 输入:裁剪图片 + Instruction
- 核心模型:Qwen3-VL-32B或以上的大型通用多模态大模型
部署模式扩展
- 同步/异步双模式适配不同场景
- 支持调试模式(
output_dir参数) - 云存储集成(OSS支持)
核心处理流程

入口模块 (run_mmdoc.py)
- 双模式支持:
run_custom_agent: 同步接口,适用于实时请求run_custom_agent_async: 异步接口,适用于离线大任务- 统一参数处理:兼容JSON字符串和字典输入
- 任务路由调度:根据任务类型动态选择处理流程
任务类型管理
- 用户可以通过业务需要使用不同的功能组合
TASK_TYPE_NAME = {
"ocr_general": "基础OCR与布局分析",
"crosspage_table": "跨页表格识别",
"image_flowchart": "流程图识别与转换",
"image_relation": "图文关系分析",
"all": "全功能解析",
"image_compare": "文档对比(特殊任务)"
}
配置文件
接口调用设置task_type
智能路由机制
- 支持自定义路由参数
- 根据文档类型、页数、内容特征(标准/非标准pdf;语言类型)动态选择解析策略
- 大文档处理预警(同步/异步任务页数限制不同)
分布式文档解析服务
核心设计:将文档解析底层服务独立拆分部署,通过标准化处理单元实现负载均衡。
- 请求标准化:所有文档统一拆分为单页处理,每页内容按文本块、表格、图像等元素切分为标准任务单元,消除大文档对GPU资源的不均衡占用
- 动态调度机制:主服务负责文档拆页和任务分发,解析服务集群并行处理各页面任务。
- 资源优化效果:提升GPU利用率,系统吞吐量提升3-5倍,同时避免单一任务阻塞影响整体服务稳定性
ZoomIn 智能校验引擎
核心价值:对关键文档自动触发高精度二次校验,保障重要信息提取的准确性与安全性。
- 智能识别机制:基于可配置规则库(文档类型关键词、信息模式、视觉特征)自动识别身份证、营业执照等高价值文档,检测身份证号、统一信用代码等敏感信息
- 分级校验策略:当识别到特定文档类型且包含关键信息时,自动裁剪相关区域图像,调用Qwen3-VL-32B等大模型进行二次校验,使用对应指令确保校验精度
- 灵活扩展能力:通过配置文件定义新文档类型和关键信息规则,无需代码修改;独立调用集团内大模型服务保证数据的隐私性;指令通用,大模型升级越强文档解析越准
异常处理体系
- 全局异常捕获与详细错误记录
- 任务级异常隔离(不影响其他任务执行)
- 结构化错误响应包含完整追踪信息
指标
|
评测集 |
文档解析方案 |
ALL ↑ |
Text_Edit_neg ↑ |
Table_TEDS ↑ |
Reader_Edit_neg ↑ |
Table_TEDS-s ↑ |
|
闭源数据集 (各业务场景数据) |
美文 |
92.06% |
95.54% |
85.27% |
95.39% |
95.49% |
|
Mineru2.5-VLM |
88.16% |
90.42% |
80.69% |
93.38% |
83.93% |
|
|
GLM-OCR |
87.96% |
92.79% |
76.29% |
94.81% |
80.27% |
|
|
PaddleOCR-VL-1.5 |
87.15% |
92.78% |
73.82% |
94.85% |
79.80% |
|
|
Youtu-Parsing |
86.80% |
93.54% |
76.33% |
90.51% |
79.53% |
|
|
PaddleOCR-VL |
86.19% |
91.81% |
75.84% |
90.91% |
80.18% |
|
|
DeepSeek-OCR-2 |
83.09% |
92.34% |
64.83% |
92.12% |
70.00% |
|
|
HunyuanOCR |
82.10% |
90.32% |
63.78% |
92.21% |
68.03% |
|
|
DeepSeek-OCR |
80.02% |
86.19% |
63.94% |
89.93% |
69.06% |
|
|
开源数据集 |
美文 |
95.68% |
96.58% |
94.96% |
95.51% |
97.06% |
|
GLM-OCR |
95.51% |
96.35% |
94.96% |
95.22% |
97.06% |
|
|
PaddleOCR-VL-1.5 |
95.10% |
95.81% |
93.23% |
96.26% |
96.00% |
|
|
PaddleOCR-VL |
94.52% |
95.73% |
91.79% |
96.05% |
95.25% |
|
|
Mineru2.5-VLM |
94.15% |
95.41% |
91.46% |
95.59% |
94.54% |
|
|
DeepSeek-OCR-2 |
94.15% |
95.41% |
91.46% |
95.59% |
94.54% |
|
|
Youtu-Parsing |
92.33% |
93.32% |
89.81% |
93.86% |
92.80% |
|
|
Dolphin-v2 |
89.78% |
94.6% |
87.02% |
94.6% |
90.48% |
|
|
Mineru2.5-Pipeline |
87.22% |
90.74% |
80.39% |
90.52% |
87.33% |
不足与计划
1)横向能力扩展
- 业务场景拓展:充分发挥DocAgent的模块化架构优势(动态路由、工具集组合),构建面向不同业务领域的专用工作流,提升场景适配精度
- 功能矩阵完善:针对文档元素多样性挑战,持续扩展解析能力矩阵,通过功能组合应对复杂文档解析需求
2)纵向技术深挖
- 核心模型升级:解决当前VLM在文本识别幻觉、长尾元素识别及表格结构解析等方面的瓶颈,构建精细化数据生产 pipeline,结合强化学习技术优化模型表现
- ZoomIn模型升级:Qwen3-VL-32B模型大资源部署,限制了其请求并发量,可以训练 10B以内高精度文档解析模型代替之
3)工程效能优化
- 智能流量调度:实现基于实时负载的动态请求分配机制,支持服务自动扩缩容,提升资源利用效率
- 单页文档加速:重构任务调度策略,针对单页文档减少服务间通信开销,平衡大/小文档处理效率,消除任务拆分过细带来的性能损耗(额外跨服务数据交换时间)
- 年度目标
- 上线美文2.0:打造超过开源SOTA文档解析的美文大模型,复杂文本结构化准确率>95%(融合细粒度布局与多阶段VLM);
- 优化调度机制:GPU利用率与解析效率提升50%+(CPU/GPU分离复用);
- 增强图区域理解和视频解析:实现流程图、柱状图、饼状图等细粒度图区域精准解析和讲解视频内容解析;
- 新增解析反思机制:引入统筹和观察校验模块,对解析后的内容进行评估矫正,进一步提高复杂场景的解析精度;
- 构建千万级文档多模态数据集:通过多模态打标和数据生成等方法构建高质量全文档解析标注数据10M;
- 将美文大模型推广到更多应用领域10+,既做到领域适配又同时提升通用领域解析能力;
本文来自博客园,作者:limingqi,转载请注明原文链接:https://www.cnblogs.com/limingqi/p/22826196
浙公网安备 33010602011771号