在浏览器中运行 PaddleOCR#
图片不会离开你的设备隐私优先#
页面下载的是模型,而不是你的图片。识别在当前标签页里由 ONNX Runtime Web 完成——关掉标签页,除了缓存的模型什么都不会留下。
一个模型,50 种语言#
PP-OCRv6 small 无需切换模型即可识别中文(简体和繁体)、英文、日文以及 46 种拉丁字母语言。tiny 档支持 49 种(不含日文)。
与 Python 输出一致#
你得到的 rec_texts、rec_scores 和多边形与 PaddleOCR 3.7 返回的结构相同,另附一份可以直接在自己电脑上运行的 Python 脚本。
这个在线 PaddleOCR 是怎么工作的#
本页加载的是 PaddleOCR.js——PaddleOCR 团队以 @paddleocr/paddleocr-js 发布的官方浏览器 SDK。它运行的是与 Python 库相同的两阶段流程:1
两个模型都通过 ONNX Runtime Web 运行。浏览器支持 WebGPU 时,SDK 会优先使用它,否则回退到 WebAssembly。模型文件来自百度官方 CDN;如果下载失败,本页会改从 Hugging Face 上的 PaddlePaddle 组织获取完全相同的 ONNX 导出文件。无论来自哪里,模型都会存入浏览器缓存,第二次打开几秒钟就能开始识别。3
该选哪个模型?#
| 模型 | 下载大小 | 语言 | 适用场景 |
|---|---|---|---|
| PP-OCRv6 small | 31.2 MB | 50 种(含日文) | 默认选项。浏览器 SDK 提供的精度最高的模型。 |
| PP-OCRv6 tiny | 6.3 MB | 49 种(不含日文) | 手机和慢速网络;快速识别拉丁字母或中文文本。 |
| PP-OCRv5 mobile | 21.5 MB | 中文、英文、日文 | 与上一代模型做对比。 |
服务端级别的 PP-OCRv6 medium 模型(Python 中的默认模型)浏览器 SDK 并不提供。在 我们的 CPU 基准测试(英文) 中,small 在五份测试文档中的三份上与 medium 结果完全一致,在两张小票上各多错一个字符,因此它能比较真实地反映 Python 库的识别效果。
PaddleOCR.js 0.4.2,WebAssembly 后端,我们的 4 vCPU 测试机。越低越快。
| 模型 | 秒 |
|---|---|
| PP-OCRv6 tiny | 1.14 s |
| PP-OCRv6 small | 5.82 s |
提高识别效果的技巧#
- 裁剪到文字区域。大照片在检测前会被缩小,大图上的小字可能因此丢失。裁剪是最立竿见影的改进。
- 有文字没识别出来?展开“检测参数”,把
text_det_box_thresh调低(例如 0.4)。较淡或对比度低的文字往往就能通过阈值了。 - 边缘的字被截掉?把
text_det_unclip_ratio调到 2.0,检测框会画得稍宽一些。 - 倾斜的页面在中等角度内都能正常识别(我们的小票照片倾斜了 7.5°,识别完全正确)。如果页面上下颠倒或侧转,可以用 Python 产线的
use_doc_orientation_classify=True先校正方向。 - 用置信度滑块隐藏不可靠的行。红框表示置信度低于 0.80,大多数误识别都落在这个区间。
浏览器版和 Python 版有什么区别?#
| 本在线工具 (PaddleOCR.js) | Python 库 (PaddleOCR 3.7) | |
|---|---|---|
| 安装 | 无需安装 | pip 安装 + 一个推理引擎 |
| 模型 | PP-OCRv6 small/tiny、PP-OCRv5 mobile | 全部模型,包括 PP-OCRv6 medium 和 100 多种语言 |
| 不支持——请把页面导出为图片 | 支持,可处理多页 | |
| 表格、版面、公式 | 不支持 | 支持,使用 PP-StructureV3 或 PaddleOCR-VL |
| 方向校正 / 弯曲矫正 | 不支持 | 可选的预处理模型 |
| 隐私 | 本地处理 | 本地处理 |
在你自己的网站上集成同样的 OCR#
本页的所有功能,你都可以通过官方 SDK 实现。最简版本如下:
import { PaddleOCR } from "@paddleocr/paddleocr-js";
const ocr = await PaddleOCR.create({
lang: "en",
ocrVersion: "PP-OCRv6", // 对应 PP-OCRv6_small
ortOptions: { backend: "auto" } // 有 WebGPU 就用 WebGPU,否则用 WASM
});
const [result] = await ocr.predict(fileInput.files[0]);
for (const line of result.items) {
console.log(line.text, line.score.toFixed(3), line.poly);
}我们的 PaddleOCR.js 指南(英文) 介绍了打包工具、Web Worker、WebGPU 所需的响应头,以及为了让本页稳定运行我们不得不绕开的 CDN 行为。
常见问题#
这个在线 PaddleOCR 免费吗?
免费。不用注册,没有次数限制,也不加水印。本页是静态页面:你的浏览器下载一次开源模型,然后自己完成识别,我们这边没有任何需要计费的东西。
我的图片会被上传吗?
不会。图片在当前标签页中读入 canvas,再交给本地的 ONNX Runtime Web 处理。唯一的网络请求是 SDK 代码(jsDelivr)和模型文件(百度 CDN 或 Hugging Face)。你可以在浏览器开发者工具的“网络”(Network)面板中自行确认。
可以在这里识别 PDF 吗?
不能直接识别——浏览器 SDK 只接受图片。请把页面导出为 PNG 或 JPG,或者使用原生支持 PDF 的 Python 库。含表格或公式的 PDF,请使用 PP-StructureV3。
这是 PaddleOCR 官方的在线演示吗?
不是。paddleocr.dev 是独立网站,本工具基于官方 PaddleOCR.js SDK 构建。PaddleOCR 团队有自己的演示,包括官方托管服务 paddleocr.com,它会在官方服务器上处理你的文件。
为什么第一次运行比较慢?
第一次运行要下载模型(根据档位不同为 6–31 MB)并启动 WebAssembly 运行时。之后模型由浏览器缓存,后续运行只花推理的时间。
支持识别哪些语言?
PP-OCRv6 small 支持简体中文、繁体中文、英文、日文,以及法语、德语、西班牙语、葡萄牙语、意大利语、波兰语、土耳其语、越南语等 46 种拉丁字母语言。韩文、阿拉伯文、西里尔字母、泰文、天城文等其他文字需要使用 Python 库——参见 语言列表。
参考来源
- PaddleOCR.js SDK 的 README 与源码(模型预设、后端):github.com/PaddlePaddle/PaddleOCR/tree/main/paddleocr-js——npm 包
@paddleocr/paddleocr-js0.4.2(2026-06-11 发布)。 - PP-OCRv6 语言覆盖(medium/small 支持 50 种语言;tiny 支持 49 种,不含日文):PP-OCRv6 算法文档。
- 模型下载大小:百度 CDN 上官方 ONNX 压缩包的 Content-Length,以及 Hugging Face 上 PaddlePaddle 组织中的文件大小,2026-10-27 核对。
- 浏览器耗时:paddleocr.dev 于 2026-10-27 实测,环境为无头 Chromium(WASM 后端,无 WebGPU),4 vCPU Intel Xeon @ 2.10 GHz 的 Linux 容器。你的设备结果会有所不同。