如何对图片提取 OCR+布局信息并生成统一向量表示?

解读

面试官真正想考察的是:

  1. 你是否能把“OCR 文字识别”“版面分析(Layout Parsing)”“多模态向量化”三条链路串成一条工业级流水线;
  2. 能否在百亿/千亿参数大模型落地的语境下,兼顾中文 OCR 鲁棒性复杂版式(竖排、表格、手写、印章)推理延迟向量召回精度
  3. 是否具备LLMOps 视角,能把“图片→向量”做成可灰度、可监控、可回滚的服务,而不是一次性的算法脚本。

知识点

  1. 中文 OCR 技术栈

    • 检测:DBNet++、PSENet、PP-OCRv4(百度飞桨开源,中文场景 SOTA,已支持竖排、繁体、印章)。
    • 识别:SVTR、ABINet(解决中文长文本上下文依赖)、PP-OCRv4 rec 模型(已蒸馏到 8.6 M,移动端 4 ms)。
    • 手写:TrOCR-SAR、MixNet-TR(阿里达摩院,ICDAR2023 第一)。
  2. 版面分析

    • 基于检测-分类两阶段:LayoutLMv3、DocLayout-YOLO(美团,已开源,中文 11 类要素,mAP 93.4)。
    • 基于分割-聚类Swin-UNet + 连通域后处理,解决无线表格、跨页段落。
  3. 统一向量表示

    • 多模态编码器:Chinese-CLIP-ViT-L-14(5 亿中文图文对预训练,图文互检平均召回 87.3%)。
    • OCR-文本双编码:LayoutLMv3 在词级行级块级分别取 [CLS] 向量,再做Mean-Pooling + L2 归一化,得到 768 维统一向量。
    • 表格/公式增强:用TableMaster识别 HTML 标签,再经Sentence-Transformer(paraphrase-multilingual-MiniLM)编码,解决“表格结构”语义缺失问题。
  4. 推理加速

    • TensorRT 8.6 把 PP-OCRv4 det+rec 串成 1 个 engine,单卡 T4 QPS 5801800
    • ONNXRuntime-GPU + INT8 量化,Chinese-CLIP 端到端延迟 19 ms→7 ms,召回下降 <0.8%。
  5. LLMOps 封装

    • 特征服务化:把“图片→向量”封装成 K8s Deployment,暴露 /encode 接口,SLA 99.9%
    • 版本管理:向量维度、模型权重、后处理脚本全部写入 ModelCard + DVC
    • 监控
      业务层:向量召回 Top5 命中率、平均响应时间;
      数据层:OCR 置信度 <0.85 的图片自动落入困难样本库,周级主动学习;
    • 安全合规:图片先过 阿里云内容安全 + 自研印章检测,敏感图片直接拒绝,避免训练数据污染。

答案

给一条可直接落地的工业级流水线,分 4 步:

  1. 检测-识别-版面一体化
    PP-OCRv4 做文字检测+识别,同步把坐标送入 DocLayout-YOLO,得到段落、表格、标题、页眉页脚 11 类 bbox。
    对表格区域,再调 TableMaster 输出 HTML 结构;对手写区域,调 MixNet-TR 重新识别,置信度低于 0.85 的标记为“待人工复核”。

  2. 结构化表示
    把文字、坐标、类别拼成 “行级 JSON”
    {"text": "营业收入", "bbox": [x1,y1,x2,y2], "type": "table_header", "order": 5}
    对整页再做 阅读顺序重排:用 规则+Transformer 序列标注(已用 50 W 中文财报标注训练)得到从上到下、从左到右的 order_id

  3. 统一向量化
    采用 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.3IVF_SQ8 索引,nlist=4096),单节点 1 亿向量检索 <10 ms。

  4. 服务化与监控
    封装成 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 自动重训,实现持续学习闭环

拓展思考

  1. 多页 PDF 长文档
    先按 每 32 页一个 chunk 滑动切分,避免 ViT 4096 token 上限;
    对跨页表格,用 PDFPlumber 检测横线纵线,再做 bbox 跨页合并,防止向量割裂。

  2. 知识外挂场景
    把统一向量作为 检索键,召回 Top5 段落,再送进 千亿参数大模型RAG 生成
    此时向量维度需与 大模型输入 embedding 空间对齐,可用 Chinese-CLIP 文本塔直接初始化 LLM Token Embedding,微调 1 个 epoch,下游问答 F1 提升 4.7%。

  3. 端侧部署
    MNN 框架把 PP-OCRv4+DocLayout-YOLO 联合量化到 INT8,红米 Note12 跑通 400 ms
    向量部分用 MobileCLIPImage Encoder 仅 12 M),输出 512 维,Milvus-Lite 本地检索,满足离线合规场景。