Xinference 中运行 PaddleOCR-VL-1.6内置 OCR 模型的启动、任务与引擎原理【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inferencePaddleOCR-VL-1.6 是 Xorbits InferenceXinference内置的 OCR光学字符识别视觉语言模型归属ocr模型家族能力仅包含ocr并通过内置镜像builtin model的方式开箱即用。本文以官方文档 paddleocr-vl-1.6.rst 为骨架结合仓库源码带你掌握如何用一条xinference launch命令拉起该模型、底层 transformers 引擎如何加载与推理、如何利用其文本识别 / 表格识别 / 公式识别 / 图表识别四种任务模式以及 vLLM 引擎的可选加速路径。模型概览根据 paddleocr-vl-1.6.rstPaddleOCR-VL-1.6 的官方内置规格如下属性值Model NamePaddleOCR-VL-1.6Model FamilyocrAbilitiesocrAvailable ControlNetNoneModel IDPaddlePaddle/PaddleOCR-VL-1.6Available ControlNet: None 表明该模型是纯 OCR 推理模型不涉及 ControlNet 条件控制。模型能力Ability为ocr这与 model_spec.json 中PaddleOCR-VL-1.6条目的定义一致model_family为ocrmodel_ability为[ocr]并且该条目标记为featured: true属于官方推荐展示的内置模型。仓库还同时内置了基础版PaddleOCR-VLModel IDPaddlePaddle/PaddleOCR-VL同样属于ocr家族、仅具备ocr能力两模型在模型规范、能力与启动方式上保持一致区别在于具体权重版本。本文以 1.6 版本为主线展开。一键启动模型文档给出了最核心的启动命令在 Xinference 中拉起 PaddleOCR-VL-1.6 只需一条命令xinference launch --model-name PaddleOCR-VL-1.6 --model-type image要点说明--model-type image声明以图像模型类型加载这是图像类内置模型OCR、文生图等的通用参数--model-name PaddleOCR-VL-1.6必须是 model_spec.json 中注册的model_name不能随意拼写首次启动时Xinference 会依据model_src从 Hugging FacePaddlePaddle/PaddleOCR-VL-1.6revision 为main或 ModelScopePaddlePaddle/PaddleOCR-VL-1.6revision 为master下载权重到本地缓存之后即可离线加载。引擎与模型来源选择在 model_spec.json 中PaddleOCR-VL-1.6 声明了专用的虚拟环境依赖pillow11.3.0图像处理库transformers4.55.0推理核心框架#system_numpy#、#system_torch#复用系统环境的 NumPy 与 PyTorch避免重复安装庞大的数值计算依赖。从 ocr/init.py 的引擎注册逻辑可以看到OCR 模型按引擎分为三类transformers默认推理引擎、vllmvLLM 加速引擎与mlxApple Silicon 引擎。PaddleOCR-VL 系列同时注册在transformers与vllm两套引擎之下SUPPORTED_ENGINES[transformers]与VLLMPaddleOCRVLModel因此你可以在启动时通过--engine参数指定推理后端例如# 显式指定 transformers 引擎默认 xinference launch --model-name PaddleOCR-VL-1.6 --model-type image --engine transformers # 使用 vLLM 引擎需环境中已安装 vllm xinference launch --model-name PaddleOCR-VL-1.6 --model-type image --engine vllm引擎与模型的匹配校验由 ocr_family.py 中的check_engine_by_model_name_and_engine完成它会按model_name在OCR_ENGINES注册表中查找可用引擎若请求的引擎未注册会抛出ValueError。该模型内置virtualenv依赖标记因此实际加载时通过check_engine_by_model_name_and_engine_with_virtual_env依据虚拟环境标记决定是否绕过严格校验以便在用户自定义引擎下运行。底层加载原理transformers 引擎PaddleOCR-VL 系列在 Xinference 中的默认实现是 paddleocr_vl.py 中的PaddleOCRVLModel类。该类通过match()方法完成模型归属判定model_name PaddleOCR-VL或model_name.startswith(PaddleOCR-VL-)即命中因此 1.6 版本天然被该实现接管。其load()方法paddleocr_vl.py#L64-L100展示了加载流程的关键细节设备与精度选择若显式指定device cpu则使用 CPU torch.float32否则在 CUDA 可用时加载到 GPU 并使用torch.bfloat16无 GPU 则回退 CPU。Processor 加载通过AutoProcessor.from_pretrained加载并携带trust_remote_codeallow_trust_remote_code(self.model_family)——该模型需要信任远端代码Xinference 通过allow_trust_remote_code统一处理这一开关。模型加载AutoModelForCausalLM.from_pretrained按上述 dtype 加载权重随后.to(device).eval()切换到推理模式。从类注释可见该模型的定位是OCR、表格识别、公式识别与图表识别OCR, table recognition, formula recognition, and chart recognition这是理解后续task参数的基础。推理 API 与四种任务模式PaddleOCRVLModel.ocr()方法paddleocr_vl.py#L102-L174是核心推理入口其支持的参数如下参数类型默认值说明imagePIL.Image.Image或List[PIL.Image.Image]必填单张或批量图片输入taskstrocr任务类型ocr/table/formula/chartpromptstr由 task 决定自定义提示词传入后覆盖 task 默认提示词max_new_tokensint1024生成的最大新 token 数return_dictboolFalse是否返回带元数据的字典方法内部预置了四种任务的默认提示词paddleocr_vl.py#L132-L138ocr→OCR:table→Table Recognition:formula→Formula Recognition:chart→Chart Recognition:即不传prompt时Xinference 会根据task自动拼接对应指令传入prompt则以你的自定义指令为准。这四种任务模式正是该模型的核心卖点——同一模型权重、同一套部署即可完成扫描件文字提取、结构化表格抽取、数学公式识别与图表内容理解。返回值结构默认return_dictFalse单图返回str批量输入返回List[str]return_dictTrue单图返回{text: ..., model: paddleocr-vl, task: ..., success: True}批量输入额外包含num_images: N字段。success字段统一标记推理是否成功便于上层调用方判断。内部推理流程对单张图片_process_single()paddleocr_vl.py#L176-L222完成如下链路将RGBA/CMYK图片转换为RGBPIL 模式转换按 PaddleOCR-VL 预期的多模态消息格式组装messages[{role: user, content: [{type: image, image: ...}, {type: text, text: prompt}]}]通过processor.apply_chat_template(..., tokenizeTrue, add_generation_promptTrue, return_tensorspt)完成对话模板应用与 tokenize并迁移到模型所在设备在torch.inference_mode()下调用model.generate(**inputs, max_new_tokens...)用outputs[:, inputs.input_ids.shape[1]:]切片去除输入 prompt 部分再经processor.batch_decode(skip_special_tokensTrue)解码得到最终文本。对于批量图片列表ocr()会对每张图片分别走_process_single流程再统一组装返回结果。通过 HTTP API 调用模型启动后Xinference 会为其分配一个model_uid可在xinference launch输出中查看随后即可通过 RESTful API 调用。图像 OCR 模型的调用路径与 client_api.rst 描述的一致典型流程为# 1. 启动模型并获取 model_uid示例 xinference launch --model-name PaddleOCR-VL-1.6 --model-type image # 2. 查看已启动模型 xinference list拿到model_uid后可使用 restful_client.py 提供的 Python 客户端发起推理请求例如from xinference.client import Client client Client(http://localhost:9997) model_uid paddleocr-vl-1.6 # 替换为你启动时分配到的 uid model client.get_model(model_uid) with open(scan.png, rb) as f: image_bytes f.read() # 默认 OCR 任务 result model.ocr(imageimage_bytes) print(result) # 表格识别任务 table model.ocr(imageimage_bytes, tasktable, return_dictTrue) print(table)其中task、prompt、max_new_tokens、return_dict等参数会透传到上述ocr()实现。vLLM 加速引擎对于高吞吐的文档处理场景Xinference 为 PaddleOCR-VL 提供了 vLLM 后端实现VLLMPaddleOCRVLModelocr/vllm.py#L507-L508。它继承自PaddleOCRVLModelrequired_libs为(vllm,)即运行时要求环境中已安装 vLLM。vLLM 引擎的核心基础设施在 ocr/vllm.py 中对 PaddleOCR-VL 的意义在于_load_vllm_modelocr/vllm.py#L36-L58负责实例化vllm.LLM并依据 vLLM 版本的LLM.__init__签名决定是否传入taskgenerate_sanitize_vllm_kwargsocr/vllm.py#L61-L73会剔除device、device_map、torch_dtype、attn_implementation等仅适用于 transformers 的参数避免与 vLLM 参数冲突同时将cpu_offload转换为 vLLM 的cpu_offload_gb_filter_engine_argsocr/vllm.py#L76-L86基于vllm.engine.arg_utils.EngineArgs的签名过滤无效参数_build_sampling_paramsocr/vllm.py#L89-L111将请求参数组装为 vLLMSamplingParams默认max_new_tokens2048、temperature0.0贪婪解码。选用 vLLM 引擎时启动命令中可通过--engine vllm显式指定并可按需透传 vLLM 相关参数如显存利用率、最大序列长度等前提是目标环境中已安装 vLLM。测试验证与正确性保障仓库对图像模型注册与 OCR 引擎链路提供了测试覆盖可作为理解与验证的参考test_image_registry.py验证包括 PaddleOCR-VL 系列在内的内置图像模型是否在 model_spec.json 中正确注册引擎匹配逻辑的单元测试集中在 test_engine_discovery.py覆盖ocr_family.py中的引擎选择与虚拟环境标记逻辑。小结PaddleOCR-VL-1.6 是 Xinference 内置的 OCR 视觉模型一条命令即可完成从拉取权重到对外提供服务的全过程。核心要点回顾启动xinference launch --model-name PaddleOCR-VL-1.6 --model-type image权重自动从 Hugging Face / ModelScope 下载任务默认实现 paddleocr_vl.py 支持ocr/table/formula/chart四种任务模式通过task参数切换也支持自定义prompt精度与设备GPU 下自动使用bfloat16CPU 回退float32加速可选 vLLM 引擎VLLMPaddleOCRVLModel获得高吞吐推理能力扩展阅读完整的内置模型清单见 models/builtin/image基础版 PaddleOCR-VL 的说明见 paddleocr-vl.rst图像类内置模型的规范定义位于 model_spec.json。如果你需要将扫描件批量转文本、把表格图片结构化或对数学公式做识别抽取PaddleOCR-VL-1.6 在 Xinference 中开箱即用的多任务能力值得直接一试。【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
