PaddleOCR 3.5 正式发布,带来以下核心升级:
- 发布浏览器端 PaddleOCR.js,开发者可以用更轻量的方式在前端应用中直接调用 OCR 能力。
- 支持将 PaddleOCR-VL 文档解析内容转为 Word,以及将 Word、Excel、PPT 等类型的办公文档转为 Markdown。
- 融入 Hugging Face 开发生态,通过统一推理引擎配置方式,支持基于 Transformers 完成 OCR 系列模型推理。
一、发布 PaddleOCR.js
在 Agent 时代,越来越多的智能体需要直接感知和理解用户界面上的信息——而这些信息,往往就存在于浏览器里。让数据不离开浏览器就能完成识别,不仅是对隐私的保护,更是降低系统复杂度、实现真正轻量化部署的关键一步。
PaddleOCR.js 正是为此而生。从能力上看,它已经不仅仅是"能识别",而是在浏览器侧提供了一套更完整的使用体验:基于 ONNX Runtime Web 搭建,同时支持 WebGPU 和 Wasm 两种加速后端;提供 Worker 模式,推理过程在后台线程运行,不阻塞主线程、不影响页面交互;并已适配 Chrome、Safari 等主流浏览器。
无论是验证码识别、在线票据处理,还是构建更强调交互体验的前端 AI 工具,开发者都可以用更轻量的方式,将 PaddleOCR 无缝接入现有 Web 场景。
import { PaddleOCR } from "@paddleocr/paddleocr-js";const ocr = await PaddleOCR.create({lang: "ch",ocrVersion: "PP-OCRv5",worker: true,ortOptions: {backend: "auto"}});const [result] = await ocr.predict(fileOrBlob);console.log(result.items);
同时,从调用风格上看,PaddleOCR.js 与 PaddleOCR Python 接口也保持了较高的一致性。Python 侧通过 PaddleOCR(...) 初始化并调用 predict,浏览器侧则通过 PaddleOCR.create({...}) 初始化后同样调用 predict 得到推理结果列表。这让已有 PaddleOCR Python 库用户迁移到 Web 端时几乎不需要重新理解一套完全不同的接口设计:
from paddleocr import PaddleOCRocr = PaddleOCR(lang="ch",ocr_version="PP-OCRv5")result = ocr.predict("general_ocr_002.png")
import { PaddleOCR } from "@paddleocr/paddleocr-js";// 支持 Python 风格的 snake_case 参数const ocr = await PaddleOCR.create({lang: "ch",ocr_version: "PP-OCRv5"});// 也支持 JavaScript 风格的 camelCase 参数// const ocr = await PaddleOCR.create({// lang: "ch",// ocrVersion: "PP-OCRv5"// });const [result] = await ocr.predict(fileOrBlob);
另外,PaddleOCR.js 还提供了结果可视化能力,能够把检测框、识别文字等结果以与 PaddleOCR Python 库相同的风格渲染出来。
import { OcrVisualizer } from "@paddleocr/paddleocr-js/viz";const viz = new OcrVisualizer({font: { family: "Noto Sans SC", source: "/fonts/NotoSansSC-Regular.ttf" }});const blob = await viz.toBlob(imageBitmap, result);
PaddleOCR 仓库中提供了一个简单的 Demo 应用,用于快速体验 PaddleOCR.js 的效果:
开发者可以在 Demo 应用中先跑通体验,再逐步集成到自己的 Web 应用中。
二、支持多格式文档解析
大模型时代,数据的价值被重新审视。海量知识沉淀在 Word、Excel、PPT、PDF 等各类文档中,而大模型真正能消化的,是结构清晰的文本。打通文档与大模型之间的通路,成为这个时代最迫切的需求之一。
为此,PaddleOCR 3.5 在文档格式的输入与输出两端同时发力:
- 输出侧:支持将 PaddleOCR-VL 系列模型、PP-StructureV3 的预测结果直接导出为 Word 格式,让识别结果开箱即用、便于人工流转;
- 输入侧:支持将 Word、Excel、PPT 等主流办公文档转换为 Markdown 格式,结构清晰,易于后续的 LLM 接入与智能体调用。
以 PaddleOCR-VL 为例,将预测结果导出为 Word 文档只需几行代码:
from paddleocr import PaddleOCRVLpipeline = PaddleOCRVL()output = pipeline.predict("./paddleocr_vl_demo.png")pages_res = []for res in output:res.save_to_word(save_path="output") ## 保存当前图像的Word格式的结果pages_res.append(res)output = pipeline.restructure_pages(pages_res)for res in output:res.save_to_word(save_path="output") ## 将合并后的多页结果保存为Word格式
对于办公文档转 Markdown 功能,只需一行命令即可高效完成:
# 转换 Word 文档,输出到文件paddleocr doc2md -i report.docx -o output.md# 转换 Excel 表格,输出到文件paddleocr doc2md -i data.xlsx -o output.md# 转换 PowerPoint 演示文稿,输出到文件paddleocr doc2md -i slides.pptx -o output.md
三、全面适配 Transformers 推理后端
PaddleOCR 3.5 将 Transformers 正式纳入统一推理引擎体系,支持通过统一的配置方式,让开发者可以用同一套接口切换不同底层后端。对需要融入 Hugging Face AI 开发生态的用户来说,这意味着在熟悉的 Transformers 环境中,也能更顺畅地接入 OCR 与文档解析能力,减少跨生态集成成本,并让原本分散的部署选择变得更加统一、清晰。
从使用门槛上看,这次适配也尽量保持了简单直接。开发者只需在环境中安装 5.4.0 或更高版本的 transformers 以及 3.5.0 版本的 paddleocr,即可通过统一接口完成调用。以文本检测模型为例:
from paddleocr import TextDetectionmodel = TextDetection(model_name="PP-OCRv5_server_det",engine="transformers",)result = model.predict("general_ocr_001.png")
其中,engine 可以是 paddle_static、paddle_dynamic 或 transformers,分别对应飞桨静态图(Paddle Inference)、飞桨动态图和 Transformers 后端。
Transformers 提供高效简洁的单模型的加载、配置与推理能力,而 PaddleOCR 在模块封装与多模型编排能力有长期积累的优势。在底层,我们保留了面向单模型的灵活接入方式;在更高一层,PaddleOCR 仍然能够把检测、方向分类、识别等能力按业务需要串联组合起来,让开发者既能享受 Transformers 生态的便利,也能继续使用 PaddleOCR 已经成熟的产线化能力,实现更强的组合效果。例如,同样可以通过 engine 参数将 OCR pipeline 直接切换到对应后端:
paddleocr ocr -i xxx.png \--use_doc_orientation_classify False \--use_doc_unwarping False \--u