如何对图片提取 OCR+布局信息并生成统一向量表示?
解读
面试官真正想考察的是:
- 你是否能把“OCR 文字识别”“版面分析(Layout Parsing)”“多模态向量化”三条链路串成一条工业级流水线;
- 能否在百亿/千亿参数大模型落地的语境下,兼顾中文 OCR 鲁棒性、复杂版式(竖排、表格、手写、印章)、推理延迟与向量召回精度;
- 是否具备LLMOps 视角,能把“图片→向量”做成可灰度、可监控、可回滚的服务,而不是一次性的算法脚本。
知识点
-
中文 OCR 技术栈:
- 检测:DBNet++、PSENet、PP-OCRv4(百度飞桨开源,中文场景 SOTA,已支持竖排、繁体、印章)。
- 识别:SVTR、ABINet(解决中文长文本上下文依赖)、PP-OCRv4 rec 模型(已蒸馏到 8.6 M,移动端 4 ms)。
- 手写:TrOCR-SAR、MixNet-TR(阿里达摩院,ICDAR2023 第一)。
-
版面分析:
- 基于检测-分类两阶段:LayoutLMv3、DocLayout-YOLO(美团,已开源,中文 11 类要素,mAP 93.4)。
- 基于分割-聚类:Swin-UNet + 连通域后处理,解决无线表格、跨页段落。
-
统一向量表示:
- 多模态编码器:Chinese-CLIP-ViT-L-14(5 亿中文图文对预训练,图文互检平均召回 87.3%)。
- OCR-文本双编码:LayoutLMv3 在词级、行级、块级分别取 [CLS] 向量,再做Mean-Pooling + L2 归一化,得到 768 维统一向量。
- 表格/公式增强:用TableMaster识别 HTML 标签,再经Sentence-Transformer(paraphrase-multilingual-MiniLM)编码,解决“表格结构”语义缺失问题。
-
推理加速:
- TensorRT 8.6 把 PP-OCRv4 det+rec 串成 1 个 engine,单卡 T4 QPS 580→1800;
- ONNXRuntime-GPU + INT8 量化,Chinese-CLIP 端到端延迟 19 ms→7 ms,召回下降 <0.8%。
-
LLMOps 封装:
- 特征服务化:把“图片→向量”封装成 K8s Deployment,暴露 /encode 接口,SLA 99.9%;
- 版本管理:向量维度、模型权重、后处理脚本全部写入 ModelCard + DVC;
- 监控:
– 业务层:向量召回 Top5 命中率、平均响应时间;
– 数据层:OCR 置信度 <0.85 的图片自动落入困难样本库,周级主动学习; - 安全合规:图片先过 阿里云内容安全 + 自研印章检测,敏感图片直接拒绝,避免训练数据污染。
答案
给一条可直接落地的工业级流水线,分 4 步:
-
检测-识别-版面一体化:
用 PP-OCRv4 做文字检测+识别,同步把坐标送入 DocLayout-YOLO,得到段落、表格、标题、页眉页脚 11 类 bbox。
对表格区域,再调 TableMaster 输出 HTML 结构;对手写区域,调 MixNet-TR 重新识别,置信度低于 0.85 的标记为“待人工复核”。 -
结构化表示:
把文字、坐标、类别拼成 “行级 JSON”:
{"text": "营业收入", "bbox": [x1,y1,x2,y2], "type": "table_header", "order": 5}
对整页再做 阅读顺序重排:用 规则+Transformer 序列标注(已用 50 W 中文财报标注训练)得到从上到下、从左到右的 order_id。 -
统一向量化:
采用 Chinese-CLIP 图文双塔,把整页图片送 ViT 得 768 维 I_vec;
把阅读顺序后的纯文本送 Chinese-RoBERTa-wwm-ext 得 768 维 T_vec;
做 加权融合:Unified_vec = 0.7·I_vec + 0.3·T_vec(权重由网格搜索+下游检索任务 Recall@100 最优确定)。
最终向量 L2 归一化,入库 Milvus 2.3(IVF_SQ8 索引,nlist=4096),单节点 1 亿向量检索 <10 ms。 -
服务化与监控:
封装成 BentoML 服务,镜像 1.2 GB,GPU T4 单卡 QPS 1200;
接口返回:
{"vec": [768 维数组], "ocr": [行级 JSON], "layout": [版面类别], "cost": 19 ms, "version": "v2024.06"}
Prometheus 采集 P99 延迟、GPU 利用率、OCR 置信度分布;
每周把低置信度样本回流到 Label-Studio,人工标注后触发 DVC+MLflow 自动重训,实现持续学习闭环。
拓展思考
-
多页 PDF 长文档:
先按 每 32 页一个 chunk 滑动切分,避免 ViT 4096 token 上限;
对跨页表格,用 PDFPlumber 检测横线纵线,再做 bbox 跨页合并,防止向量割裂。 -
知识外挂场景:
把统一向量作为 检索键,召回 Top5 段落,再送进 千亿参数大模型做 RAG 生成;
此时向量维度需与 大模型输入 embedding 空间对齐,可用 Chinese-CLIP 文本塔直接初始化 LLM Token Embedding,微调 1 个 epoch,下游问答 F1 提升 4.7%。 -
端侧部署:
用 MNN 框架把 PP-OCRv4+DocLayout-YOLO 联合量化到 INT8,红米 Note12 跑通 400 ms;
向量部分用 MobileCLIP(Image Encoder 仅 12 M),输出 512 维,Milvus-Lite 本地检索,满足离线合规场景。