Skip to content
runonweb

Scan: OCR

Extract printed and scene text in the browser. Three sizes (tiny, small, medium) so you can trade a few megabytes for accuracy. Nothing is uploaded.

Try Scan

Runs in this tab · nothing uploaded

Pick a size, then a sample or photo. It reads right away

Model size

Try with

Drop an image here

or click · PNG JPG WEBP

What it does

Read text from any photo. Pick the size.

  • Default size is small (~31 MB): the best size/quality trade-off. Pass tiny (~6 MB) or medium (~139 MB).
  • small and medium cover 50 languages (Chinese, English, Japanese, Latin). tiny is Chinese + English.
  • Each line comes back with a box and a confidence score.

Specifications

Package
runonweb/ocr
License
Apache-2.0
Download
~31 MB (small)tiny ~6 MBmedium ~139 MB
Quantization
fp32 on WebGPUfp32 on WASM
Backend
WebGPUWASM fallback
Input
Image

Get started with runonweb/ocr

pnpm add runonweb
runonweb/ocrts
import { OCR } from 'runonweb/ocr'

const ocr = new OCR({
  size: 'small', // tiny | small | medium
  onProgress: (info) => console.log(info.status, info.progress),
})

await ocr.load()

const { text, lines } = await ocr.read(imageFile)
console.log(text)
// lines: [{ text, score, box: { xmin, ymin, xmax, ymax } }]

ocr.dispose()

Same shape everywhere: construct, load(), run, dispose(). Pass onProgressto show download progress on first use.

Questions about Scan

Does Scan run on device?

Yes. Weights download once and stay in the browser. Nothing is sent to a server.

Which model does Scan use?

PP-OCRv6 by PaddlePaddle, under Apache-2.0. runonweb loads the PaddlePaddle/PP-OCRv6_small_det_onnx weights and runs fp32 on WebGPU · fp32 on WASM.

How big is the Scan download?

~31 MB (small) · tiny ~6 MB · medium ~139 MB, fetched once on first use. The browser caches the weights, so later loads skip the network and keep working offline.

What does Scan cost?

Nothing. runonweb is free and MIT-licensed, with no device limits, tokens or sign-in. The weights keep their own license: Apache-2.0.

Which browsers support Scan?

Chromium browsers use WebGPU. Firefox and Safari fall back to WebAssembly automatically, slower but identical output.

Can I use a different model with runonweb/ocr?

Yes. See each module’s docs for the options it accepts (model, size, language…). Check the license and test both backends before shipping.