跳转至

一次失败的 VLM-OCR 项目实践

起源

原本设想的是复用 transformers 前后处理 + vllm 作为推理引擎来统一最近出现的 VLM OCR 大模型。

随着逐渐了解源码,发现 vllm 架构已经实现了我的设想。

它通过开放接口,让每个模型可以自定义自己的前后处理代码。vllm 启动时,只需按照规定去加载模型下的前后处理代码即可。

项目地址:https://github.com/RapidAI/RapidVLM-OCR

该项目目前已经归档了。

收获

  • 想做事情前,一定要调研全面。如果我对 vllm 多做些了解,我就能更早知道它的架构,自然就不会想着搞这个框架。
  • 系统的构建了整个项目的分层架构,一定意义上实现了高内聚与低耦合,具有易维护、易扩展的特点。
  • 对工程化的代码有了更加深入的认识和思考。

主链路

User Input
   |
   v
RapidVLMOCR
   |
   v
InferenceRequest
   |
   v
Pipeline
   |---- PromptBuilder
   |---- Image/PDF Preprocess
   |---- Engine
   |
   v
Task Postprocess
   |
   v
InferenceResponse

项目框架

flowchart TD
    A[User / CLI / Python API] --> B[RapidVLMOCR]
    B --> C[InferenceRequest]
    B --> D[PDF/Image Expand]
    D --> C

    C --> E[Pipeline]
    E --> F[PromptBuilder]
    E --> G[Image/PDF Preprocess]
    E --> H[Engine]

    F --> I[prompts.yaml]
    H --> J[MockEngine / VLLMEngine]
    J --> K[Raw Output]

    K --> L[Task Registry]
    L --> M[OCRTask]
    L --> N[DocumentParseTask]
    L --> O[KIETask]

    M --> P[Text Output]
    N --> Q[Markdown Output]
    O --> R[JSON Output]

    P --> S[InferenceResponse]
    Q --> S
    R --> S

评论