← SkillSafe OCR Lab

Read the text out of a screenshot, without uploading it

Detection and recognition both run in this tab, on the PP-OCRv6 models, through onnxruntime-web compiled to WebAssembly. Your image is never sent anywhere — there is no upload step and no server in the recognition path. It works offline once the models are loaded.

The PP-OCRv6_tiny weights — about 6 MB — are fetched once from SkillSafe's shared, vetted model registry when you open the page and then cached by your browser, shared with every other SkillSafe app that uses them. Nothing to install, no sign-in, and the models are the publisher's own bytes, unmodified.

Free, and it works signed out: recognition itself, the per-line confidence score for every line, the bounding boxes, a filter for just the low-confidence lines, the diagnostics panel, and every export — text, CSV, JSON and Markdown. Only the optional repair-and-structure pass in step 4 is metered: it needs a signed-in account with credits, and it is reconciled against the local recogniser so it cannot quietly invent a character the recogniser never produced.

1 · The engine

loading…

Loading the PP-OCRv6 models…

Detection 1.7 MB, recognition 4.3 MB, plus the 6,904-entry character dictionary. It runs in this tab; nothing is uploaded.

Use a different model package (advanced)

The built-in models are PP-OCRv6_tiny. To run a different PP-OCR package — small, medium, or one you fine-tuned — drop its files here: the detection .onnx, the recognition .onnx, and the recognition inference.yml that carries the character dictionary. Names do not matter; each file is identified by its graph shape, and the thresholds, channel order and dictionary are all read out of the package itself rather than assumed.

Drop a model package here

or

small and medium use a different detection head and a larger dictionary. Both load, but they are slower, and the post-processing here is tuned for tiny.

Offline copy of the engine

The engine is about 20 MB — a 13.5 MB WebAssembly runtime and 6.2 MB of weights — and this site's assets are only cacheable for five minutes, so the app keeps its own verified copy in the browser's Cache Storage. That is what makes a reload instant instead of a fresh 20 MB download. Each entry is keyed and checked by its SHA-256, so a new release replaces it automatically and a damaged copy is re-fetched rather than used.

Checking the cache…

2 · The image

Drop a screenshot or photo here

or · paste with Ctrl/⌘+V · try a sample: ·

Load the engine and an image first.

3 · Recognised text

Nothing recognised yet. The bundled sample below is a real capture from these models, so you can see the output shape before loading anything.

4 · Repair and structure metered

Recognition gives you lines. This pass gives you a document: reading order fixed, split sentences rejoined, obvious character confusions corrected and flagged, and — if you ask for it — the values pulled out as JSON. It runs on the platform's model, so it costs credits, and the app checks its answer against what the recogniser actually produced.